当图片大小很大时,Qt openGL es2 glBindTexture失败了

时间:2014-02-19 07:58:40

标签: qt opengl-es texture2d

我使用Qt 4.7 whith openGL es2,hardwar是powervr,sdk是sgx 4.8

glBindTexture( GL_TEXTURE_2D, bindTexture(m_myPixmapOfPic, GL_TEXTURE_2D));

当图片大小为512 * 256时,效果很好。当图片为768 * 512时,显示黑色表示失败。我试图找到界面并增加纹理缓冲区的大小。但是Qt不支持这样的界面.OpenGL es2接口也没有提到这个问题。

   QVector<QVector3D> vertices.append
   QVector<QVector2D> texCoords.append

glBindTexture( GL_TEXTURE_2D, bindTexture(m_myPixmapOfPic, GL_TEXTURE_2D));

GLSL:gl_FragColor = texture2D(texture, v_texcoord) //simple bind

1 个答案:

答案 0 :(得分:1)

这不是因为缓冲区大小。您可能需要指定一个2的幂(即2 ^ n - 2,4,16,32,64,128,256,512,1024等)大小的图像作为纹理。或者,硬件需要支持非功率为2的扩展。