我发现我必须向vert着色器发送1个MVP矩阵,但如果我的场景中有超过1个模型,我不需要发送多个模型矩阵吗?
例如,如果我有2个茶壶,每个茶壶都有不同的模型矩阵,它们的翻译,旋转和缩放比另一个茶壶不同。如果我只能发送1个茶壶的模型矩阵,MVP矩阵中的M的一部分发送到着色器,那么当我的VAO顶点数据被送入vert着色器时,两个茶壶将根据到我选择发送到着色器的1个模型矩阵。
答案 0 :(得分:1)
假设您想要渲染两个具有不同变换的茶壶。有两种选择:
通过制服传递变换。您必须设置制服,渲染一个茶壶,更新制服并再次渲染茶壶。
通过顶点属性传递转换。您创建了一个实例化的顶点属性(如果使用offset + quaternion对其进行编码,则会执行两个vec4
)并渲染两个茶壶instanced draw命令。
第一个是简单的'通常教它的方法教程。但是,当您渲染同一对象的多个实例时,第二种方法可能会有所帮助。
因此,如您所见,您可以同时将多个模型矩阵传递给GPU。