| Код | #include "stdafx.h" #include "Sample.h"
// Drawing green square void GreenSquare() { glColor3f(0.0, 1.0, 0.0); glBegin(GL_QUADS); glVertex3f( 0.25, 0.25, -0.4); glVertex3f(-0.25, 0.25, -0.4); glVertex3f(-0.25, -0.25, -0.4); glVertex3f( 0.25, -0.25, -0.4); glEnd(); }
// Drawing red square void RedSquare() { glColor3f(1.0, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f( 0.5, 0.5, -0.5); glVertex3f(-0.5, 0.5, -0.5); glVertex3f(-0.5, -0.5, -0.5); glVertex3f( 0.5, -0.5, -0.5); glEnd(); }
// Making necessary preparations void InitScene() { glClearColor(0.0, 0.0, 1.0, 0.0); }
// Displaying the scene void OnDisplay() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST); GreenSquare(); RedSquare(); glDisable(GL_DEPTH_TEST);
glFlush(); }
// Application entry point int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { glutInit(&nCmdShow, (char **) &lpCmdLine); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize(600, 600); glutInitWindowPosition(0, 0); glutCreateWindow("OpenGL/GLUT demonstration"); InitScene(); glutDisplayFunc(OnDisplay); glutMainLoop();
return 0; }
|
Ведь камера по умолчанию находится в центре координат и смотрит в сторону отрицательной оси Z. И в тоже время из-за координаты Z зеленый квадрат лежит ближе к камере, чем красный. Значит он должен заслонять кусок красного квадрата. А на экране я вижу только лишь красный квадрат. Могли бы вы обьяснить в чем проблема? Спасибо. |