2015-09-19 39 views
3

我一直在使用旧的Qt OpenGl方法,但它是时候切换到新的。从原始数据(freeimage)QOpenGLTexture(Qt)

位图一个FIBITMAP *正确初始化

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8,宽度,高度,0, GL_BGRA,GL_UNSIGNED_BYTE,(无效*)FreeImage_GetBits(pImage));

对我来说就像一个魅力。

但是现在在新的方法中,最好使用QOpenGLTexture

不幸的是我的尝试是不成功的,即。

QOpenGLTexture * qtexture =新 QOpenGLTexture(QOpenGLTexture :: Target2D); (QOpenGLTexture :: PixelFormat :: RGBA, QOpenGLTexture :: PixelType :: Int8,FreeImage_GetBits(bitmap));

代码返回一个1x1纹理而且如果我迫使大小等使用

qtexture->的setSize(宽度,高度,4);

qtexture具有适当的大小,但它完全是黑色的,我也试过在QT/FreeImage的论坛等进行搜索,但没有相关的不幸的是每个人都使用的QImage养活QOpenGLTexture,但不幸的是我需要支持的一些“奇怪”像.hdr或.exr这样的文件格式,Qt本身不支持。

预先感谢您的时间!

回答

0

qtexture-> allocateStorage();

是关键!

+0

是的,这也是在班级文件中提到的。 – peppe

+0

使用QOpenGLTexture对象而不是纯OpenGL的优点是什么? – Pietrko

+0

这是Qt包装器,更易于与Qt OpenGL小部件一起使用 –