2015-09-19 40 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小部件一起使用 –