我使用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
答案 0 :(得分:1)
这不是因为缓冲区大小。您可能需要指定一个2的幂(即2 ^ n - 2,4,16,32,64,128,256,512,1024等)大小的图像作为纹理。或者,硬件需要支持非功率为2的扩展。