未绘制文本时纹理解除绑定(LWJGL / Slick-util)

时间:2013-11-02 19:08:54

标签: java opengl lwjgl

我一直在与LWJGL进行一场比赛并遇到了一个奇怪的问题。每当我决定隐藏文本时,我的纹理似乎都解开了。这是所有被调用的代码

下面是我的Text类中的代码。

public void draw() {
        for (TextData textData : textList) {
            drawString(textData.getX(), textData.getY(), textData.getText());
        }
    }

void drawString(int x, int y, String text) {
        for (String line : text.split("\n"))
            ttf.drawString( x, y += ttf.getHeight(), line);
    }

现在主类中的代码

if (Keyboard.isKeyDown(Keyboard.KEY_H)) {
                hideText = !hideText;
        }

if (!hideText) {
            text.draw();
        }

这是结果

http://i.stack.imgur.com/4Y9fk.png

http://i.stack.imgur.com/SUoOf.png

2 个答案:

答案 0 :(得分:0)

当绘制文本时,图像被绑定绘制文本,我猜测通常lwjgl / slick在绘制文本时保存当前纹理,然后重新绑定它。我猜这可能是一个错误,当隐藏它不重新绑定纹理但仍绑定另一个纹理?

答案 1 :(得分:0)

在仔细考虑我的代码后,我发现我的Entity类在绘制时正在调用glBindTexture(GL_TEXTURE_2D, 0);并且绘制文本再次启用它。在我的实体绘图代码末尾添加glBindTexture(GL_TEXTURE_2D, 1);修复了问题。感谢帮助我找出问题的评论。