我用它来启动openGL:
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, width, height, 0, -1, 1);
GL11.glViewport(0, 0, width, height);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
我像这样创建一个True Type Font
:
Font awtFont = new Font(font, i, size);
return new TrueTypeFont(awtFont, false);
然而,绑定/解除绑定纹理会弄乱字体,迫使我每次想要绘制一些文本时重新创建字体。我做不起,因为它导致了一个重大的滞后峰值。
这是我用来绘制纹理的方法:
public static void drawImage(image i, int x, int y) {
i.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBegin(7);
{
glTexCoord2f(0, 0);
glVertex2f(x, y);
glTexCoord2f(0, 1);
glVertex2f(x, y + i.height);
glTexCoord2f(1, 1);
glVertex2f(x + i.width, y + i.height);
glTexCoord2f(1, 0);
glVertex2f(x + i.width, y);
}
glEnd();
i.unBind();
}
当我删除i.bind()
和i.unbind()
时,文本绘图开始完美运行,但之后我没有绘制纹理。那么如何才能绘制我的纹理和文字呢?
我启用了Alpha混合:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
并且不要禁用它,因为我想渲染的纹理需要它。
答案 0 :(得分:1)
在每次调用渲染文本之前插入TextureImpl.bindNone()
以解决问题。我仍然不确定问题出在哪里,因为我之前使用了光滑的util文本渲染而没有使用TextureImpl.bindNone()
而没有问题。