2016-09-13 6 views
0

私は3Dゲームを作っていますが、3D上で2dで作業していますが、それを終える前に問題が1つしかありません。テキストを描いた後に2d四角を描くことはできません。 はここレンダラコードです:テキストを描画した後にクワッドを描くことはできませんか?

changeto2D(); 
    for (Face2D face : tds){ 
     face.initializeEdges(); 
     GL11.glBegin(GL11.GL_QUADS); 
     GL11.glColor4f(face.c.red, face.c.green, face.c.blue, (float) Math.sin(Math.toRadians(face.transparency))); 
     for (Location l : face.edges){ 
      GL11.glVertex2f(l.x, l.y); 
     } 
     GL11.glEnd(); 
    } 
    for (Text t : texts){ 
     t.draw(); 
    } 
    fps++; 
    for (GUI gui : openGUIs){ 
     gui.draw(); 
    } 
    for (GUI gui : removing){ 
     if (openGUIs.contains(gui)) openGUIs.remove(gui); 
    } 
    removing.clear(); 

これはchangeTo2D();のコードです:

public void changeto2D() { 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1); 
    glMatrixMode(GL_MODELVIEW); 
    GL11.glViewport(0, 0, Display.getDisplayMode().getWidth(), Display.getDisplayMode().getHeight()); 
} 

とテキストを描画する:

public Text(Location loc, String text, float size, Color color){ 
    try { 
     InputStream inputStream = ResourceLoader.getResourceAsStream("res\\AGENCYR.TTF"); 

     Font awtFont2 = Font.createFont(Font.TRUETYPE_FONT, inputStream); 
     awtFont2 = awtFont2.deriveFont(size); 
     font = new TrueTypeFont(awtFont2, false); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    c = new org.newdawn.slick.Color(color.red, color.green, color.blue); 
    this.loc = loc; 
    this.text = text; 
    this.size = size; 
} 
public void draw(){ 
    font.drawString(loc.x, loc.y, text, c); 
    if (td != null){ 
     td.draw(); 
    } 
} 

そして今、ここでは私の問題が何であるかです: 私はクワッドを含むGUIを作ってみたいですが、他のクワッドが完全にうまく描画されたと思っても描画しませんか?また、四角形が描画されないテキストを描画した後、すべての四角形のコードを配置しようとしました。

+0

GUIのような残りのメソッドを表示します。特にすべて描画します –

+0

[廃止予定のOpenGL](https://www.opengl.org/wiki/Legacy_OpenGL)は使用しないでください – elect

+0

*どこでも描画できません*、またはあなたがテキストを描いた位置(井戸の後ろ)だけで?その場合、テキストの透明な長方形がzバッファを台無しにしています。テキストを描画する前にzバッファ書き込みを無効にしてから、有効にしてください。 – usr2564301

答えて

1

私はそれを修正しました。別のレンダリング技術になりました。すべてのクワッドを最初に、テキストを最後に描きます。

関連する問題