LWJGL纹理解除绑定



我目前正在使用LWJGL (GL11)制作一个简单的纹理矩形类。这是目前为止我在draw方法中所做的。

glEnable(GL_TEXTURE_2D);
color.bind();
glBegin(GL_QUADS);
t.bind();
if (centered)
{
    glTexCoord2d(0, 0);
    glVertex2d(x - (width / 2), y - (height / 2));
    glTexCoord2d(t.getWidth(), 0);
    glVertex2d(x + (width / 2), y - (height / 2));
    glTexCoord2d(t.getWidth(), t.getHeight());
    glVertex2d(x + (width / 2), y + (height / 2));
    glTexCoord2d(0, t.getHeight());
    glVertex2d(x - (width / 2), y + (height / 2));
}
else
{
    glTexCoord2d(0, 0);
    glVertex2d(x, y);
    glTexCoord2d(t.getWidth(), 0);
    glVertex2d(x + width, y);
    glTexCoord2d(t.getWidth(), t.getHeight());
    glVertex2d(x + width, y + height);
    glTexCoord2d(0, t.getHeight());
    glVertex2d(x, y + height);
}
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);

问题出在倒数第二行(glBindTexture(GL_TEXTURE_2D, 0))。如果我打开这个选项,图像将显示一秒钟(可能是一帧),然后变成纯白色。如果我将其注释掉,它将显示,但总是显示最后加载的纹理。什么好主意吗?

我认为这是因为你在glBegin()和glEnd()调用之间绑定了纹理。这是无效的。我猜当你离开glBindTexture(GL_TEXTURE_2D, 0)调用关闭时,绑定将在下一帧生效。但我不确定为什么它只适用于一帧。

您可以使用glGetError来查看是否有任何错误生成

最新更新