我一直在研究计算机图形学,我很困惑的视口,gluortho和何时使用GL_MatrixMode和GL_Projection的作用。 这是我写的一个示例代码,让我困惑。Opengl:视口,剪裁,matrixtmode混淆
void init()
{
glClearColor(1.0,1.0,1.0,1.0);//Background Color of Viewport
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200,200,-200,200,-50,50);
glMatrixMode(GL_MODELVIEW);
}
void wheel()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0.2,0.2);
glLoadIdentity();
glViewport(0,0,200,200);
glutSolidCube(100);
glFlush();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize(400,400);
glutInitWindowPosition(400,400);//Position from the top left corner
glutCreateWindow("Car");
init();
glutDisplayFunc(wheel);//Shape to draw
glutMainLoop();
}
当我将Cube的大小更改为200时,它会消失,为什么?那是因为它比z剪辑大吗? 当我删除glMatrixMode(GL_MODELVIEW)立方体消失为什么? 如果我在显示功能结束时没有刷新,立方体也会消失,为什么? 当我使视口变小时,对象变小意味着对象坐标是相对于视口而不是世界坐标?