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
它崩溃。下面是代码:
崩溃
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_RGBA
到GL_RGB
问题解决了,甚至同时保持QImage的转换河畔RGBA。为什么?
'GL_TEXTURE_2D,0,3'请停止使用整数作为图像格式。如果您需要3通道格式,请[按名称询问](https://www.opengl.org/wiki/Image_Format)。 –