繁体   English   中英

如何管理现代OpenGL中的模型,视图和投影矩阵

[英]How to manage the Model, View and Projection matrices in modern OpenGL

我有几个关于现代opengl的问题:

(i)模型矩阵被描述为“包含应用于对象的每个翻译,旋转或缩放”( 1

(ii)因此,必须对每个VAO(包含一个场景对象,如椅子)都有意义,必须有一个顶点属性,一个4x4模型矩阵,它包含该对象的平移,旋转和缩放,以便为顶点着色器把每个顶点转换成世界空间吧?

因此,如果我有32个场景对象(每个场景对象1个模型矩阵),我会有32个模型矩阵吗?

(iii)那么我可以将视图和投影矩阵作为着色器的几个制服来处理吗?

(iv)如果一个程序有多个场景对象,例如具有不同平移,旋转和缩放的桌子和椅子,是否可以有1个模型矩阵来容纳每个场景对象的不同平移,旋转和缩放?

(i)模型矩阵被描述为“包含应用于对象的每个翻译,旋转或缩放”(1)

不。矩阵只是一个矩阵。 只有在某种情况下,矩阵才能获得额外的含义。

(ii)因此,必须对每个VAO(包含一个场景对象,如椅子)都有意义,必须有一个顶点属性,一个4x4模型矩阵,它包含该对象的平移,旋转和缩放,以便为顶点着色器把每个顶点转换成世界空间吧?

没有。

VAO不是模型。 VAO只是对记忆帅哥的引用的集合。 VAO中可以包含任何类型的数据。 如果VAO包含几何数据,则单个VAO中可以有多个独立模型。

因此,如果我有32个场景对象(每个场景对象1个模型矩阵),我会有32个模型矩阵吗?

不必要。 你也可以有16个矩阵,其中2个对象各自共享他们的模型视图转换。

(iv)如果一个程序有多个场景对象,例如具有不同平移,旋转和缩放的桌子和椅子,是否可以有1个模型矩阵来容纳每个场景对象的不同平移,旋转和缩放?

嗯,是的,但不要过分思考这个问题。 对象和转换矩阵之间没有严格的联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM