2014-04-18 8 views
0

구현 방법은 다음과 같습니다. GLEventListener
어떤 이유로 텍스트가 화면에 표시되지 않습니까?
나머지 내 수준 개체가 잘 그립니다. 나는이 내 텍스트 렌더링하기 전에, 내가 잘 볼 수있는 이동하면TextRenderer에 텍스트가 표시되지 않습니다.

private TextRenderer renderer; 

public void init(GLAutoDrawable gLDrawable) { 

    GL2 gl = gLDrawable.getGL().getGL2(); 
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    gl.glShadeModel(GL2.GL_SMOOTH); 
    gl.glEnable(GL.GL_TEXTURE_2D); 

    renderer = new TextRenderer(new Font("SansSerif", Font.BOLD, 36)); 
} 

public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) { 

    final GL2 gl = gLDrawable.getGL().getGL2(); 

    if (height <= 0) { // avoid a divide by zero error! 

     height = 1; 
    } 

    final float h = (float) width/(float) height; 

    gl.glViewport(0, 0, width, height); 
    gl.glMatrixMode(GL2.GL_PROJECTION); 
    gl.glLoadIdentity(); 
    glu.gluPerspective(170.0f, h, 1.0, 20.0); 
    gl.glMatrixMode(GL2.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
} 

public void display(GLAutoDrawable gLDrawable) { 

    renderer.beginRendering(gLDrawable.getWidth(), gLDrawable.getHeight()); 
    renderer.setColor(1.0f, 0.2f, 0.2f, 0.8f); 
    renderer.draw("Text to draw", 0, 0); 
    renderer.endRendering(); 

    // draw squares, circles in the level etc  
    level.draw(gLDrawable); 
} 
+0

그건 그렇고, 당신이 가지고있는 미친 FOV 중 하나입니다. 수직으로 340도. 인간은 일반적으로 수직으로 135 도만 볼 수 있습니다 (fovy = 67.5). 만약 당신이 지금 당장 가지고있는 것이 사슴이나 물고기에 적용 가능할 수도 있습니다. *** 수평선 *** FOV이지만 눈을 앞쪽으로 향하게 한 사람은 아닙니다;) –

+0

다른 한가지 명심해야 할 것은 아마도 당신이 클리핑하고 있다는 것입니다 텍스트가 z = 0에 있으면 텍스트. 텍스트를 그릴 때 z = -1 인 zNear와 z = 1을 zFar로 사용하여 일반 오래된 정사영 투영 행렬을 시험해 보는 것이 좋습니다. 그것보다 훨씬 간단해질 수는 없으며 깊이 범위의 정확한 중간에 z = 0을 배치 할 것입니다. 이 효과의 어떤 것 :'glOrtho (0, width, height, 0, -1, 1);'점 (0,0)이 화면의 왼쪽 상단 이길 기대한다면. –

답변

0

내가 level.draw()
내부 gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);했다 (모두의 예외가 붉은 색을 칠한되면서).
@ 앤돈, fov에 관한 다른 점들을 고려해 보겠습니다.