Swizzling 顶点数组、顶点缓冲区对象和着色器
Posted
技术标签:
【中文标题】Swizzling 顶点数组、顶点缓冲区对象和着色器【英文标题】:Swizzling Vertex Arrays, Vertex Buffer Objects and Shaders 【发布时间】:2013-01-20 15:44:56 【问题描述】:我对顶点数组、顶点缓冲区对象和着色器有基本的了解。但是,我不确定我是否可以重用它们或者关联是否是双射的。
例如:
我可以在不同的顶点数组中使用相同的顶点缓冲区对象吗? 我可以在不同的着色器中使用相同的顶点数组吗?【问题讨论】:
【参考方案1】:是的,你可以:)
VBO - 控制数据的存储位置
VAO - 控制布局和绑定(您可以有多个 VAO 指向同一个 VBO,但顺序不同)
着色器 - 负责处理数据,它们可以与不同的 VAO/VBO 组合一起使用(但该组合当然必须匹配着色器中的属性布局)
【讨论】:
谢谢。那么当我想使用一个VAO和多个shader时,我只需要确保属性位置相同?如何将 VBO 切换为 VAO?只需在调用glBindVertexArray
之后再调用glBindBuffer
?
这里有一个很好的关于使用VAO的教程:ogldev.atspace.co.uk/www/tutorial32/tutorial32.html,但是基本上你绑定了VAO之后就可以绑定新的VBO了。以上是关于Swizzling 顶点数组、顶点缓冲区对象和着色器的主要内容,如果未能解决你的问题,请参考以下文章