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



我一直在用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();
        }

这是结果

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

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

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

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

最新更新