1

有人可以解释以下每个 OpenGL 函数的功能吗?

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); 
glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
4

1 回答 1

0

请记住,OpenGL 作为状态机工作。

glMatrixMode(GL_PROJECTION);

将当前矩阵设置为投影矩阵,即活动矩阵状态为投影矩阵,因此所有后续矩阵调用都会影响投影矩阵。投影矩阵处理如何查看事物(如何设置相机)。

glLoadIdentity(); 

将当前矩阵的值设置为单位矩阵。当前矩阵是投影矩阵。

glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);

来自 OpenGL 的文档:“将当前矩阵与正交矩阵相乘”。因此,投影矩阵(想想相机)被转换为显示正交透视。

glMatrixMode(GL_MODELVIEW);

将当前矩阵设置为模型视图矩阵。模型视图矩阵处理对象的显示方式。模型视图转换可以旋转或平移对象。

所以基本上前三行设置了相机,最后两行使当前矩阵成为模型视图矩阵,因为程序完成了相机设置并需要显示对象。OpenGL 中没有真正的相机。相机的概念只是一个常见的类比。

于 2012-08-30T15:52:33.677 回答