OpenGL为什么只发送一个模型矩阵,如果场景中有两个模型?

时间:2016-10-02 17:45:48

标签: opengl matrix glsl

我发现我必须向vert着色器发送1个MVP矩阵,但如果我的场景中有超过1个模型,我不需要发送多个模型矩阵吗?

例如,如果我有2个茶壶,每个茶壶都有不同的模型矩阵,它们的翻译,旋转和缩放比另一个茶壶不同。如果我只能发送1个茶壶的模型矩阵,MVP矩阵中的M的一部分发送到着色器,那么当我的VAO顶点数据被送入vert着色器时,两个茶壶将根据到我选择发送到着色器的1个模型矩阵。

1 个答案:

答案 0 :(得分:1)

假设您想要渲染两个具有不同变换的茶壶。有两种选择:

  • 通过制服传递变换。您必须设置制服,渲染一个茶壶,更新制服并再次渲染茶壶。

  • 通过顶点属性传递转换。您创建了一个实例化的顶点属性(如果使用offset + quaternion对其进行编码,则会执行两个vec4)并渲染两个茶壶instanced draw命令。

第一个是简单的'通常教它的方法教程。但是,当您渲染同一对象的多个实例时,第二种方法可能会有所帮助。

因此,如您所见,您可以同时将多个模型矩阵传递给GPU。

相关问题