好的,所以我确定如果将正交矩阵坐标系更改为GL11.glOrtho(0, Strings.DISPLAY_WIDTH, Strings.DISPLAY_HEIGHT, 0, -1, 1);
代替这个GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);
我可以朝上画线,但游戏即时通讯使用此系统
GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);
光滑地绘制东西,矩阵的顶部为0,底部为显示器的高度,无论如何我都可以旋转或绘制字符串而不必更改游戏坐标系?
这是我的线描课
private Font javaFont;
private UnicodeFont uniFont;
public TextHandler(int letterSize) {
this.initHandler(letterSize);
}
private void initHandler(int size) {
this.javaFont = new Font("Times New Roman", Font.BOLD, size);
this.uniFont = new UnicodeFont(this.javaFont);
this.uniFont.getEffects().add(new ColorEffect(java.awt.Color.white));
this.uniFont.addAsciiGlyphs();
try {
this.uniFont.loadGlyphs();
} catch (SlickException e) {
e.printStackTrace();
}
}
public void drawString(String string, float x, float y) {
this.uniFont.drawString(x, y, string, Color.white);
}
还有我的openGl初始化代码(如果有帮助的话)
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glClearColor(0, 0, 1, 0);
GL11.glDisable(GL11.GL_DEPTH_TEST);
最佳答案
是的,您可以设置一个渲染系统,在该系统中,第一个glOrtho
调用将设置Slick渲染,然后渲染字符串。然后,您再次调用glOrtho
,但渲染其余的游戏。 glOrtho
只是告诉OpenGL设置正投影,以及从屏幕的哪个角开始渲染。 Slick使用左上角,而您使用左下角。 OpenGL是基于状态的计算机,因此您必须渲染Slick材质,切换到新的投影,然后渲染其余的游戏。
您也不需要对该glDisable(GL_DEPTH_TEST);
的调用。深度测试默认情况下处于关闭状态。