2012-04-21 3 views
1

3D 응용 프로그램에 HUD를 구현하려고하는데, 그 위에 텍스처가있는 특정 위치에 직사각형이 있습니다. 문제는 카메라를 회전하거나 움직일 때마다 텍스처 스케일 또는 카메라로 움직이는 것이 매우 이상하게 보입니다. 왜 그런 일이 일어날 지 아이디어가 있습니까? 2D HUD의 결점이있는 텍스처

내가 HUD를 추가 할 것입니다 :

glDisable(GL_DEPTH_TEST); 
glClear(GL_DEPTH_BUFFER_BIT); 
glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
gluOrtho2D(0, 1, 0, 1); 
glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 



     glEnable (GL_TEXTURE_2D); 
     glBindTexture (GL_TEXTURE_2D,4); 
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 


     glBegin(GL_QUADS); 
      glColor3f(1.0f, 1.0f, 0.0f); 

      glTexCoord2f(0,0); 
      glVertex2f(0.0f, 0.0f); 
      glTexCoord2f(1,0); 
      glVertex2f(0.4f, 0.0f); 
      glTexCoord2f(1,1); 
      glVertex2f(0.4f, 0.4f); 
      glTexCoord2f(0,1); 
      glVertex2f(0.0f,0.4f); 
     glEnd(); 

    glPopMatrix(); 


glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
glEnable(GL_DEPTH_TEST); 
glEnable(GL_LIGHTING); 
+0

2D 또는 3D로 HUD를 그리는 중입니까? 설명하신 문제의 스크린 샷을 게시 할 수 있습니까? – Bojangles

+0

2d –

+0

입니다. 그런 다음 직교 투영으로 그리 고 픽셀 값을 사용합니까? – Bojangles

답변

0

당신은 코드있어 다른 통화, glMatrixMode (GL_MODELVIEW)을 결여; 두 번째로 glPopMatrix()를 호출 한 후.

아마도이 코드는 코드에서 더 낮지 만, 무슨 일이 일어나고 있는지에 대한 설명에서 행렬의 문제처럼 들립니다.

관련 문제