既然在OpenGL的新版本中可以选择在一个 VAO 中创建多个属性绑定,那么有没有理由使用多个 VAO 呢?
oiopk7p51#
将顶点格式与缓冲区绑定分离的目的是区分内存中各种数据的来源和该数据的解释。缓冲区提供存储;格式定义该存储的解释。将这两个概念分开允许您更改存储而无需重新指定格式。也就是说,您可以使用相同的解释,只是针对不同的数据集。如果有两个角色模型,它们都具有位置、法线、颜色、纹理坐标和蒙皮参数,则即使它们的数据来自不同的缓冲区,它们也会使用相同的顶点格式。因此,它们可以共享相同的 VAO ,只是附加了不同的缓冲器。但是,如果您有两个顶点格式不同的模型,则无法执行此操作。如果一个模型没有蒙皮参数,或者没有逐顶点颜色,或者有一些其他模型没有的其他信息,那么它们就不使用兼容的顶点格式。因此,除了不同的缓冲区之外,您还必须指定不同的顶点格式。此时,您也可以使用不同的VAO,因为您必须再次指定所有数据。
1条答案
按热度按时间oiopk7p51#
将顶点格式与缓冲区绑定分离的目的是区分内存中各种数据的来源和该数据的解释。缓冲区提供存储;格式定义该存储的解释。
将这两个概念分开允许您更改存储而无需重新指定格式。也就是说,您可以使用相同的解释,只是针对不同的数据集。如果有两个角色模型,它们都具有位置、法线、颜色、纹理坐标和蒙皮参数,则即使它们的数据来自不同的缓冲区,它们也会使用相同的顶点格式。因此,它们可以共享相同的 VAO ,只是附加了不同的缓冲器。
但是,如果您有两个顶点格式不同的模型,则无法执行此操作。如果一个模型没有蒙皮参数,或者没有逐顶点颜色,或者有一些其他模型没有的其他信息,那么它们就不使用兼容的顶点格式。因此,除了不同的缓冲区之外,您还必须指定不同的顶点格式。此时,您也可以使用不同的VAO,因为您必须再次指定所有数据。