我一直在用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);
解决了这个问题。感谢评论帮助我解决问题。