2012-07-10 2 views
2

저는 OpenGL을 처음 접했고 NeHe의 튜토리얼과 다양한 웹 소스를 살펴 보았습니다. 텍스트를 다른 모든 것의 HUD로 렌더링하기 위해 테스트하고 있습니다. 아주 긴 밤 이후에, 나는 이것을 작동시키지 못했고 여기서 어떤 해결책을 찾을 수 없었습니다. 그래서 물어볼 것이라고 생각했습니다.HUD가 OpenGL에서 렌더링되지 않는 이유는 무엇입니까?

내 코드 : 당신이 줄 수있는 도움을 사전에

int DrawGLScene(GLvoid)           
{ 

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clears buffers 
glLoadIdentity(); 

// If I put glLoadHUD(); here, it renders but the models render over it, 
    // which is useless. 

for (xloop = 0; xloop < 3;) 
{ 
    glLoadIdentity(); 
    glTranslatef(-4.0f+(float(xloop)*4.0f),0.0f,-12.0f); 
    glCallList(dlstBox); // This is the call to create a box. 
    xloop++; 
} 


glLoadHUD(); // If I put it here though, it doesn't render at all. 

return TRUE; 
} 

감사합니다 : 텍스트를 렌더링하는 코드이며,이 장면을 그리기위한 코드입니다

GLvoid glLoadHUD(GLvoid) 
{ 
    glPushAttrib(GL_LIGHTING_BIT | 
        GL_DEPTH_BUFFER_BIT | 
        GL_TEXTURE_BIT); 

    glDisable(GL_LIGHTING); 
    glDisable(GL_DEPTH_TEST); 
    glDisable(GL_TEXTURE_2D); 

    glMatrixMode(GL_PROJECTION); 
     glPushMatrix(); 
      glLoadIdentity(); 
      glOrtho(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f); 
      glRasterPos2f(0.1f, 0.6f); 
      glColor3f(1.0f,1.0f,1.0f); 
      glPrint("Test."); 
      glRasterPos2f(0.0f, 0.0f); 
     glPopMatrix(); 
    glMatrixMode(GL_MODELVIEW); 
    glPopAttrib(); 

    glEnable(GL_TEXTURE_2D); 
    glEnable(GL_LIGHTING); 
    glEnable(GL_DEPTH_TEST); 
}  

, 나는 내가 매우 초록색임을 안다. 그리고 나는 그것이 얼굴에서 나를 꼼짝 않고 바라보고있다라고 확신한다. 그러나 이것은 나를 미치게한다. 그리고 나는 그것이 일하게하는 방법을 모른다.

답변

2

나머지 장면 이후에 행렬이 여전히 스택에 있으며 glLoadHud의 일부로 지워지지 않습니다. 따라서 씬 중에 누적 된 모든 glTranslatef 번역은 hud를 그릴 때도 계속 활성화되어 볼 수있는 창 밖으로 바로 변환됩니다.

MODELVIEW 행렬을 glLoadHud의 시작 부분으로 지우고 그 차이가 있는지 확인하십시오.

+0

그게 다야! 대단히 감사합니다. 이제 마침내 머리를 찢지 않고 마침내 지나갈 수 있습니다. –

0

z- 클립 안에 인쇄되어 화면에 나타나지 않을 수 있습니다. 화면 밖으로 조금 벗어나서 나타나는지 확인하십시오.

+0

시도했지만, 그렇지 않았습니다. 나는 그것이 손 전에 HUD를 렌더링했을 때 그것이 영향을 미쳤을 것이라고 생각한다. 그것은 슬픈 듯이 작동하지 않는 곳이다. 하지만 고마워요! 명심할 가치가있는 무엇인가 명확하게, 나는 그것이 곧 또는 나중에 나 여행 할 것이다라고 확신한다. –

+0

두 번째 생각에서, 당신은 실제로 그곳의 무언가에 있었고, 초기 번역은 그것에 영향을 미치므로 12.0f도 화면에 렌더링했습니다. –

관련 문제