0

无论我使用什么纹理坐标,都只会显示左下角的像素(矩形是纯色的)。

这里我设置了纹理坐标:

glMatrixMode(GL_TEXTURE);
glPushMatrix();
glLoadIdentity();
glTranslatef(0.5,0.0,0.0); //Have no effect

glMatrixMode(GL_MODELVIEW);
glPushMatrix();

...

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);

glBegin(GL_QUADS);

glTexCoord2f(0, 1);
glVertex2f(0, 0);

glTexCoord2f(0, 0);
glVertex2f(0, 1);

glTexCoord2f(1, 0);
glVertex2f(1, 1);

glTexCoord2f(1, 1);
glVertex2f(1, 0);

glEnd();

这是非常严重的。它在两个不同的 QGLWidget 中呈现。在一个小部件中,纹理看起来很好,而在另一个小部件中,我只得到左下角的像素。

4

1 回答 1

0

我发现了错误。我认为在两个小部件的两个渲染过程之间的任何地方,都设置了 GL_TEXTURE_RECTANGLE_NV 标志。我以为 glEnable(GL_TEXTURE_2D); 自动禁用 GL_TEXTURE_RECTANGLE_NV 标志。但似乎不是。

所以以下解决了我的问题:

glDisable(GL_TEXTURE_RECTANGLE_NV); 
于 2013-01-30T02:35:40.737 回答