【问题标题】:LWJGL Texture UnbindingLWJGL 纹理解绑
【发布时间】:2015-05-29 17:08:26
【问题描述】:

我目前正在使用 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))。如果我打开它,图像将显示片刻(可能是一帧),然后变成纯白色。如果我将此注释掉,它将显示,但始终显示最后加载的纹理。有什么想法吗?

【问题讨论】:

    标签: java opengl textures lwjgl


    【解决方案1】:

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

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

    【讨论】:

    • 我已经把它移到我绑定颜色的地方,没有这样的运气。 glGetError 返回零。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多