为什么OpenGL中有glMatrixMode?
我只是不明白OpenGL的为什么OpenGL中有glMatrixMode?,opengl,Opengl,我只是不明白OpenGL的glMatrixMode是做什么用的 就我所见,当调用glMatrixMode(GL\u MODELVIEW)时,它 然后是glVertex,glTranslate,glRotate等等, 也就是说,OpenGL命令将某些对象放置在 空间。另一方面,如果glOrtho或glFrustum或gluProjection 调用(即如何渲染放置的对象),它前面有一个调用glMatrixMode(GL\u投影) 我想我到目前为止写的是一个假设,有人会证明这一点 我错了,但使用不同
glMatrixMode
是做什么用的
就我所见,当调用glMatrixMode(GL\u MODELVIEW)
时,它
然后是glVertex
,glTranslate
,glRotate
等等,
也就是说,OpenGL命令将某些对象放置在
空间。另一方面,如果glOrtho
或glFrustum
或gluProjection
调用(即如何渲染放置的对象),它前面有一个调用glMatrixMode(GL\u投影)
我想我到目前为止写的是一个假设,有人会证明这一点
我错了,但使用不同的矩阵模式并不是重点
因为有不同种类的gl函数:与
放置对象以及对象的渲染方式?所有几何体坐标都会按顺序进行几次线性变换。虽然任何线性变换都可以用一个矩阵来表示,但通常需要考虑变换序列并编辑序列,如果只有一个矩阵,则只能更改该序列的端点。通过提供几个转换步骤,OpenGL为您在中间提供了几个可以更改转换的地方。 在发射几何体之前调用
glMatrixMode
,根本没有效果。在编辑变换矩阵之前,调用glMatrixMode
,以确定这些编辑在整个序列中出现的位置
(注意:如果您记住平移和旋转是不可交换的,那么查看序列会更有意义,因为平移会改变旋转的中心。类似地,平移和缩放也是不可交换的。)您也可以对投影矩阵使用glRotate和glTranslate 另外:OpenGL支持纹理和颜色的变换。例如,如果激活此功能,则可以修改对象的纹理坐标,而无需在每帧中重写纹理坐标(慢速)
如果要在对象上滚动纹理,这是一个非常有用的功能。为此,您只需绘制纹理对象,将“矩阵模式”设置为“GL_纹理”,并调用“glTranslate”将偏移设置为纹理。正如Nils所指出的那样,您对矩阵的了解远不止您所提到的 我将补充一些想法:
- OpenGLCore(从3.1开始)完全删除了所有矩阵内容,GLES2.0也是如此。这仅仅是因为着色器程序取消了在GL级别公开它们的大部分要求(尽管这仍然很方便)。然后你只有制服,你必须完全在客户端计算它们的价值
- 矩阵操作入口点比您提到的要多。其中一些同样适用于投影/模型视图(glLoadIdentity/glLoadMatrix/glMultMatrix,Push/Pop),如果您想自己执行矩阵计算,它们非常有用(比如说,因为您在应用程序的其他地方需要它们)
- 渲染顶点(如
)取决于称为“模型视图矩阵”和“投影矩阵”的矩阵的当前状态glVertex
- 命令
,glTranslatef
,glPushMatrix
,glLoadIdentity
,glLoadMatrix
,glorthoo
和整个系列都会影响当前矩阵(即上述任一项)glupspective
- 命令
选择受上述命令影响的矩阵(模型视图或投影)glMatrixMode
- 使模型视图矩阵大部分时间处于活动状态
- 每当需要初始化投影矩阵时(通常在开始时或调整窗口大小时),请将活动视图切换到投影,设置透视图,然后恢复到模型视图
- 这很简单,可以非常简单地回答:
glVertex
应该被视为OpenGL 1.0以上版本的弃用版本当你提到一些不推荐使用的东西时,请同时提到什么是现代的替代品,因为如果没有它,它就没有太多的信息。@Kos来自OpenGL 1.1。第一个备选方案-glDrawArrays
-仅在那时出现。此外,投影纹理矩阵与阴影和投影纹理(舞台聚光灯、前照灯、迪斯科舞厅、电影放映机等)一起使用。每次通过完整的显示过程时,您都应该重新设置(即重置新的)投影矩阵。对于任何实际应用程序,您都必须使用几种不同的投影。例如,在游戏中渲染HUD时,除了场景本身,您还可以使用其他投影。OpenGL除了获取上下文外不知道“初始化”,所以请忘记在某个地方做一次性的事情,或者在重塑处理程序中设置投影的愚蠢模式。@datenwolf-True,但是二维覆盖投影矩阵上的push/popMatrix也可以工作,奇怪的是,我无法想象glOrtho
或glperspective
除了投影矩阵和glTranslate
,glRotate
&其他变换之外,还能用什么