LWJGL纹理解除绑定

时间:2015-05-29 17:08:27

标签: java opengl textures lwjgl

我目前正在使用LWJGL(GL11)处理一个简单的纹理矩形类。这是我到目前为止在绘制方法中所拥有的。

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))。如果我打开它,图像将显示一瞬间(可能是一帧),然后变为纯白色。如果我对此进行注释,它将显示,但始终显示已加载的最后一个纹理。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

您可以使用glGetError查看是否有任何错误。