gpt4 book ai didi

c++ - OpenGL VBO批处理最佳做法

转载 作者:行者123 更新时间:2023-12-03 07:26:06 25 4
gpt4 key购买 nike

我正在创建2D游戏引擎作为附带项目。我一直在做一些实验和研究,发现很多人建议您在同一VBO中批处理(存储要绘制的多个对象)。例如,如果我的场景中有很多树,则可以将所有树放入同一VBO中,因为它们具有相同的内存占用量,然后使用单个glDrawArrays来绘制所有树。

很好,这完全有意义...但是后来我开始怀疑如何为每棵树发送不同的转换?如何将其传递给着色器?还是这种方法是假设我在CPU上进行计算并在每次抽奖时将整个VBO发送出去?

这是我一直关注的两个主要问题:

OpenGL VAO best practices

OpenGL How Many VAOs

最佳答案

您要查找的术语是Instancing

您创建一个包含树模型的VAO,然后将模型矩阵作为实例化的顶点属性放置在VAO中,而不是通过统一模型传递模型矩阵。然后,将使用不同的模型矩阵来绘制树的每个实例。

您可以利用计算着色器或转换反馈来将模型 View 乘积每帧每个实例更新一次并存储在VAO中(而不是针对每个实例的每个顶点进行一次计算)。

关于c++ - OpenGL VBO批处理最佳做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com