2016-09-13 4 views
0

그래서 저는 3D 게임을 만들고 3D로 2 차원에서 작업하고 있습니다.하지만 끝내기 전에 한 가지 문제가 있습니다. 텍스트를 그린 후에 2 차원 쿼드를 그릴 수 없습니까? 내 문제가 무엇인지 지금 여기텍스트를 그린 후에 쿼드를 그릴 수 없습니까?

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(); 
    } 
} 

그리고있다 :

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()); 
} 

그리고 텍스트를 그릴 :

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();에 대한 코드는 다음과 같습니다 다음은 렌더링 코드의 쿼드가 포함 된 GUI를 만들고 싶지만 다른 쿼드가 완벽하게 잘 맞았다 고 생각하지 않습니다. 나는 또한 쿼드가 전혀 그려지지 않을 텍스트를 그린 후에 모든 쿼드에 대한 코드를 넣으려고했다.

+0

GUI와 같은 나머지 메소드를 모두 표시하고 특히 모두 그립니다. –

+0

[비추천 OpenGL] (https://www.opengl.org/wiki/Legacy_OpenGL)을 사용하면 안됩니다. – elect

+0

* 아무데도 그릴 수 없습니까? *, 또는 텍스트를 그렸던 위치 (잘, 뒤)에서만? 이 경우 텍스트의 투명 사각형이 z 버퍼를 엉망으로 만듭니다. 텍스트를 그리기 전에 z 버퍼 쓰기를 비활성화하고 나중에 활성화하십시오. – usr2564301

답변

1

나는 그것을 고쳐 주었고, 또 다른 renderering 기술을 만들었습니다. 모든 쿼드를 먼저 그리며 마지막에 텍스트를 그립니다.

관련 문제