有人可以解释以下每个OpenGL函数的功能吗?
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
答案 0 :(得分:0)
请记住,OpenGL可以作为状态机使用。
glMatrixMode(GL_PROJECTION);
将当前矩阵设置为投影矩阵,即活动矩阵状态是投影矩阵,因此所有后续矩阵调用都将影响投影矩阵。投影矩阵处理事物的查看方式(相机的设置方式)。
glLoadIdentity();
将当前矩阵的值设置为单位矩阵。当前矩阵是投影矩阵。
glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
来自OpenGl的文档:“将当前矩阵与正交矩阵相乘”。因此,投影矩阵(想象相机)被转换为显示正交视角。
glMatrixMode(GL_MODELVIEW);
将当前矩阵设置为模型视图矩阵。模型视图矩阵处理对象的显示方式。模型视图转换可以旋转或转换对象。
所以基本上前三行设置了相机,最后两行将当前矩阵设为模型视图矩阵,因为程序设置完成后需要显示对象。 OpenGL中没有实际的摄像头。相机的想法只是一个常见的类比。