2014-01-10 1 views
0

주요 기능 :멀리 객체

int _tmain(int argc, char* argv[]) 
{ 
glutInit(&argc, argv); 
glutInitWindowSize (500, 500); 

glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); 
glEnable(GL_DEPTH_TEST); 

glDepthFunc(GL_LESS); 
glutInitWindowPosition (700, 100); 
glutCreateWindow("Result"); 
glutDisplayFunc(display2); 
glutReshapeFunc(reshape2); 
glutMouseFunc(main_mouse); 
glutKeyboardFunc(keyboard); 
glutMainLoop(); 

return 0; 
} 

Display2 기능 :

void display2() 
{ 
glClearColor(1.0,1.0,1.0,1.0); 
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 

glMatrixMode(GL_MODELVIEW); 

glLoadIdentity(); 

//Green square 
glColor3f(0.0,1.0,0.0); 
glBegin(GL_POLYGON); 
glVertex3f(0.5,0.5,-1.0); 
glVertex3f(0.5,1.5,-1.0); 
glVertex3f(1.5,1.5,-1.0); 
glVertex3f(1.5,0.5,-1.0); 
glEnd(); 

//Red square 
glColor3f(1.0,0.0,0.0); 
glBegin(GL_POLYGON); 
glVertex3f(0.0,0.0,-2.0); 
glVertex3f(0.0,1.0,-2.0); 
glVertex3f(1.0,1.0,-2.0); 
glVertex3f(1.0,0.0,-2.0); 
glEnd(); 

glutSwapBuffers(); 
} 

reshape2 기능

void reshape2(int width, int height) 
{ 
glViewport(0,0,width,height); 

glMatrixMode(GL_PROJECTION); 

glOrtho(-3.0,3.0,-3.0,3.0,0.01,3.0); 
} 

I OpenGL과 깊이 버퍼가 문제가 있다면 . 나는 2 개의 정사각형을 그린 것을 시도한다. 빨간색은 녹색 뒤에 위치합니다. 붉은 색 사각형은 z 값이 -2 녹색 사각형은 z 값이 -1입니다. 그러나 붉은 색 사각형은 녹색 사각형 앞에 표시됩니다. 깊이 테스트를 활성화했지만 여전히 작동하지 않습니다. 내 프로그램에 어떤 문제가 있습니까?

+0

글쓰기 글쓰기를 잘 사용하지는 못했지만 ... GL 상태를 설정하기 전에 창을 만들어야합니다. 창 생성은 일반적으로 컨텍스트가 생성되거나 활성 상태가되는 지점입니다 ... 따라서이 작업을 수행 할 렌더 컨텍스트가 있기도 전에 "GL_DEPTH_TEST"를 활성화했습니다. –

답변

3

glutCreateWindow을 호출하기 전에 gl* 함수를 호출하지 마십시오. 따라서 glEnableglDepthFunc 다음에 이동하십시오.

모든 gl 함수는 GLUT 윈도우에서만 생성 된 컨텍스트를 호출합니다. 그 전에는 OpenGL 기능이 효과적이지 않습니다.

+0

도움을 주셔서 감사합니다. – user2877976

관련 문제