[英]OpenGL VBO Safe Practices In A Dynamic Environment (Specific Use Case)
[英]OpenGL VBO batch best practices
我正在创建2D游戏引擎作为附带项目。 我一直在做一些实验和研究,发现很多人建议您在同一VBO中批处理(存储要绘制的多个对象)。 例如,如果我的场景中有很多树,则可以将所有树放入同一VBO中,因为它们具有相同的内存占用量,然后使用单个glDrawArrays来绘制所有树。
很好,这完全有意义...但是后来我开始怀疑如何为每棵树发送不同的转换? 如何将其传递给着色器? 还是这种方法是假设我在CPU上进行计算并在每次抽奖时将整个VBO发送出去?
这是我一直关注的两个主要问题:
您要查找的术语是Instancing 。
您创建一个包含树模型的VAO,然后将其作为实例顶点属性放置在VAO中,而不是通过统一模型传递模型矩阵。 然后,将使用不同的模型矩阵来绘制树的每个实例。
您可以利用计算着色器或转换反馈来将模型视图乘积每帧每实例更新和存储在VAO中(而不是针对每个实例的每个顶点进行计算)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.