2014-02-19 53 views
0

行,所以我已经决定,如果我改变我的正投影矩阵坐标系麻烦光滑的2D Unicode字体

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, Strings.DISPLAY_HEIGHT, 0, -1, 1);

,而不是这个

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);

我可以绘制字符串但是游戏im建筑使用这个系统

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1); 

和slick绘制矩阵顶部为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); 

回答

0

是的,你可以建立一个渲染系统,其中第一glOrtho调用设置了油滑渲染,然后渲染字符串。然后你再次打电话glOrtho,但渲染你的游戏的其余部分。 glOrtho只是告诉OpenGL设置一个正交投影,以及屏幕的哪个角落开始渲染。 Slick使用左上角,而使用左下角。 OpenGL是一个基于状态的机器,所以你必须渲染浮油的东西,切换到新的投影,然后渲染你的游戏的其余部分。您也不需要致电glDisable(GL_DEPTH_TEST);。深度测试默认关闭。