【发布时间】:2013-11-02 19:08:53
【问题描述】:
我一直在使用 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();
}
这是结果
【问题讨论】:
-
你确定它解绑了纹理吗?我怀疑这可能是使用固定功能管道完成的,
drawString (...)的实现具有启用(并保持启用)GL_TEXTURE_2D的副作用,它在代码的其他地方被禁用。如果不调用drawString (...)GL_TEXTURE_2D可能永远不会重新启用。这都是直觉/推测,因为我不知道这段代码的 ANY 是如何与底层 OpenGL API 调用相关的。它几乎可以肯定与绑定的纹理无关,而是与其他一些纹理相关的状态。