2014-02-19 80 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);。深度測試默認關閉。