Основная функция:Дальше выведенный объект перед вблизи объекта (OpenGL)
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);
}
У меня проблема с буфером глубины в OpenGL , Я пытаюсь нарисовать 2 квадрата красного и зеленого. Красный находится позади зеленого. Красный квадрат имеет значение z -2, а зеленый квадрат - значение z -1. Но красный квадрат, изображенный спереди зеленой площади. Я включил проверку глубины, но все еще не работает. Что не так с моей программой?
Я не использовал GLUT, хорошо, но ... Я уверен, что вам нужно создать окно, прежде чем вы сможете начать устанавливать состояния GL. Создание окна обычно является точкой, в которой контекст создается и/или активируется ... таким образом, вы включили 'GL_DEPTH_TEST', прежде чем у вас даже появился контекст визуализации, в котором это делается. –