2014-10-27 158 views
0

我有关于OpenGL投影,视图和模型矩阵的问题。 在DirectX 9中,我可以轻松操纵矩阵内容,然后通过使用SetTransformfunction来应用它。OpenGL投影,视图和世界矩阵

我在MSDN OpenGL glLoadMatrixffunction中看到,但它只改变当前矩阵,我可以改变glMatrixModefunction

该函数获取3个选项的参数:GL_MODELVIEW,GL_PROJECTIONGL_TEXTURE。但这是问题所在。我如何修改世界矩阵?

在DirectX 9的我可以使用SetTransformstate types之一:D3DTS_WORLD(宏),D3DTS_VIEWD3DTS_PROJECTION和为它们设置矩阵。

+0

您是否仅限于使用旧的古老功能?此外,我会建议永远不要从微软读取有关OpenGL的任何信息。 – CoffeeandCode 2014-10-27 11:09:05

+0

事实上,使用openGL中的着色器,你可以直接设置和应用你的矩阵(你甚至可以选择不使用矩阵) – 2014-10-27 11:16:39

+0

是的,我仅限于使用OpenGL <3(2.1 max),所以glUniform不在。 – Popiel 2014-10-27 13:01:25

回答

2

GL_MODELVIEW矩阵正是它的名字;模型和视图矩阵的组合。通常,首先应用视图转换,然后为每个模型推送一个矩阵,应用模型转换,绘制模型,然后弹出矩阵。但是,如果你使用着色器(并且你必须在OpenGL 3.1+中没有兼容性配置文件),那么你可以使用制服将矩阵传递给着色器,不管你想要如何,包括分割模型和视图矩阵如此渴望。

+0

感谢您的帮助!所以,这就是它的工作原理! – Popiel 2014-10-27 13:00:25