2012-04-21 3 views
1

Я пытаюсь реализовать HUD для своего 3D-приложения, что я достиг, поскольку у меня есть прямоугольник в определенном месте, с текстурой над ним. Проблема в том, что всякий раз, когда я поворачиваю или перемещаю камеру, текстуры масштабируются или перемещаются с камерой, выглядит очень странно. Любые идеи, почему это может произойти?Неверное текстурирование в 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

Вы пытаетесь нарисовать HUD в 2D или 3D? Можете ли вы опубликовать снимок экрана о проблеме, которую вы описали? – Bojangles

+0

Это должно быть 2d –

+0

Вы рисуете его в ортографической проекции и используете значения пикселей? – Bojangles

ответ

0

Вы код не хватает на другой вызов, glMatrixMode (GL_MODELVIEW); после того, как вы вызовете glPopMatrix() во второй раз.

Возможно, это ниже в вашем коде, но из вашего описания происходящего это звучит как проблема с матрицами.

Смежные вопросы