Java 文本不为'时纹理解除绑定;t拉拔(LWJGL/Slick util)

Java 文本不为'时纹理解除绑定;t拉拔(LWJGL/Slick util),java,opengl,lwjgl,Java,Opengl,Lwjgl,我一直在和LWJGL一起做游戏,遇到了一个奇怪的问题。每次我决定隐藏文本时,我的纹理似乎都会解除绑定。下面是所有被嵌入的代码 下面是我的文本类中的代码 public void draw() { for (TextData textData : textList) { drawString(textData.getX(), textData.getY(), textData.getText()); } } void drawStri

我一直在和LWJGL一起做游戏,遇到了一个奇怪的问题。每次我决定隐藏文本时,我的纹理似乎都会解除绑定。下面是所有被嵌入的代码

下面是我的文本类中的代码

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();
        }
这就是结果


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

仔细考虑我的代码后,我发现我的实体类正在调用
glBindTexture(GL\u texture\u 2D,0)在绘制和绘制文本时,再次启用它。添加
glBindTexture(GL_TEXTURE_2D,1)在实体图形代码的末尾修复了该问题。感谢这些帮助我解决问题的评论。

你确定它会解开纹理吗?我怀疑这可能是通过使用固定的函数管道实现的,
drawString(…)
的实现有一个副作用,即启用(并保持启用)
GL\u TEXTURE\u 2D
,这在代码的其他地方被禁用。如果不调用
drawString(…)
GL\u TEXTURE\u 2D
可能永远不会重新启用。这完全是直觉/推测,因为我不知道这些代码实际上与底层OpenGL API调用有何关联。它几乎肯定与绑定纹理无关,而是与其他纹理相关的状态。