2016-08-04 9 views
0

テクスチャの読み込みに問題があります。ここでQt/OpenGL:glTexImage2Dでプログラムがクラッシュする

は、作業方法です:

作品

QImage t = QImage("/home/renaud/Desktop/img.jpg",0);   //LOAD IMAGE 
t.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor);  //CONVERT TO RGBA 
t = t.mirrored();            //MIRROR 

t.save("image2.jpg", 0, -1);         //IMAGE SEEMS FINE 

glBindTexture(GL_TEXTURE_2D, tex); 
    glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits()); 
glBindTexture(GL_TEXTURE_2D, 0); 

私はちょうどチェックするために画像を保存し、すべてがうまくています。

今、バッファから画像をロードしようとしましたが、ロードするときにglTexImage2Dがクラッシュします。ここでは、コードは次のとおりです。

クラッシュ第2のケースでそう

QImage img = QImage(<Buffer containing the data>, 1920, 1080, QImage::Format_RGB888); 
img.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor);  
QImage t = img.mirrored(); 

t.save("image2.jpg", 0, -1); //IMAGE SEEMS FINE 

glBindTexture(GL_TEXTURE_2D, tex); 
    glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits()); 
glBindTexture(GL_TEXTURE_2D, 0); 

ので、私はそれを確認することができます前に、私は、画像を保存した画像は完璧です。

はあなたが私はそれを保存するとき、画像が正常に見えるので、それはglTexImage2D時にクラッシュする理由任意のアイデアを持っていますか?

編集:私はGL_RGBGL_RGBAを変更した場合QImageの変換シュールRGBAを保ちながらも、解決

問題。どうして ?

+1

'GL_TEXTURE_2D、0、3'画像フォーマットとして整数を使用して停止してください。 3チャンネル形式が必要な場合は、[名前でお尋ねください](https://www.opengl.org/wiki/Image_Format)。 –

答えて

0

QImage::convertToFormatは変換され、新しいイメージを返しますが、画像自体を変更しないでください。

用途:

img = img.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor); 
関連する問題