Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
目前,我有一组RenderObject包含纹理、VAO 和 VBO 的类。由于所有状态切换和对glDrawArrays少量三角形的调用,绘制数千个这样的对象会导致性能损失。
RenderObject
glDrawArrays
所以现在我要改变我的实现,以便创建一系列 1MiB VBO(从一个开始,一旦它满了,创建第二个 1MiB VBO 并继续填充它)。每个 VBO 是否需要单独的 VAO?VBO 已经使用交错的顶点数据,所以我不是在谈论将多个 VBO 用于顶点、法线、纹理坐标等。
我认为可能会有一些混乱。顶点属性是指可以通过单个顶点传入的每个顶点元素的数量(法线是一个,UV 是另一个,等等)。在您的实施中,这限制在 16 个,您很可能不会超过。
VAO 存储发出单个绘图调用所需的状态信息。这包括存储需要为该呼叫绑定哪些 VBO。鉴于每个 VBO 必须在其自己的单独绘制调用中绘制,我还认为您需要一个 VAO 来存储每个 VBO 的设置信息。
这是一个很好的解释:
http://ogldev.atspace.co.uk/www/tutorial32/tutorial32.html