c - OpenGL 投影、 View 和世界矩阵

标签 c opengl matrix directx-9

我对 OpenGL 投影、 View 和模型矩阵有疑问。 在 DirectX 9 中,我可以轻松地操作矩阵内容,然后使用 SetTransform function 应用它.

我在 MSDN 中看到 OpenGL glLoadMatrixf function , 但它只改变当前矩阵,我可以通过 glMatrixMode function 改变它.

此函数有一个参数和 3 个选项:GL_MODELVIEWGL_PROJECTIONGL_TEXTURE。但这就是问题所在。如何修改世界矩阵?

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

最佳答案

GL_MODELVIEW 矩阵正如它的名字一样;模型和 View 矩阵的组合。通常,您首先应用 View 变换,然后为每个模型推送一个矩阵,应用模型变换,绘制模型,然后弹出矩阵。

但是,如果您使用着色器(并且您必须在没有兼容性配置文件的 OpenGL 3.1+ 中使用),那么您可以根据需要使用制服将矩阵传递给着色器,包括拆分模型和 View 矩阵(如果需要)愿望。

关于c - OpenGL 投影、 View 和世界矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586131/

相关文章:

opengl - 编写 OpenGL 和 OpenGL ES 兼容代码的指南?

mysql - 以列表形式制作矩阵

c - 交换函数和一般函数

c - 尽管使用了 -I 选项,但未找到 header

c - OpenGL Hooking——渲染成任意大小的 FBO

python - 将矩阵转换为图像

matrix - 任意精度算术的 CUDA 实现

c - C中的结构填充

c++ - 在 64 位 Windows 上 long 的位大小是多少?

c++ - OpenGL 显示白框,而不是立方体