Opengl 对于具有不同变换的批处理图形对象,最佳做法是什么?
我正在概念化一种很好的方法,在OpenGL中通过一次绘制调用渲染尽可能多的脱节几何体,而当每个几何体都有不同的平移和旋转时,我所面对的墙是最好的方法,因为你没有在单个对象绘制之间统一更新模型视图的奢侈。我在这里和其他地方读到了一些其他的问题,似乎人们所指的方向是多种多样的。最好列出实现这一点的主要方法,并尝试找出最常见或推荐的方法。以下是我考虑过的想法: [编辑:删除了对实例的提及,因为它实际上不适用于此处]Opengl 对于具有不同变换的批处理图形对象,最佳做法是什么?,opengl,graphics,3d,opengl-es-2.0,Opengl,Graphics,3d,Opengl Es 2.0,我正在概念化一种很好的方法,在OpenGL中通过一次绘制调用渲染尽可能多的脱节几何体,而当每个几何体都有不同的平移和旋转时,我所面对的墙是最好的方法,因为你没有在单个对象绘制之间统一更新模型视图的奢侈。我在这里和其他地方读到了一些其他的问题,似乎人们所指的方向是多种多样的。最好列出实现这一点的主要方法,并尝试找出最常见或推荐的方法。以下是我考虑过的想法: [编辑:删除了对实例的提及,因为它实际上不适用于此处] 在着色器中创建矩阵变换。在这里,我会发送一个平移向量,或者旋转角度或四元数作为属性的一
(摘自。)这里有另一个想法:
为每个顶点指定一个通过属性传入的对象ID。然后在顶点着色器中,使用此ID在存储变换矩阵的纹理中进行查找。好问题,我很想看到对这些技术的各种优缺点的讨论。这些技术太过硬件专用,无法在如此广泛的硬件平台上给出任何合理或准确的建议。即使只是讨论什么时候适合使用实例也过于硬件特定。你说的基本上是一个为期一个月的评测研究项目。@Nicolas Bolas好吧。。。。因此,假设我们省略了关于实例化的讨论;你是说关于其他技术的讨论没有意义吗?人们用VBO和着色器尝试了各种各样的事情,当然,对于应该注意什么,或者为什么这些建议中的一些根本不好,有一些一般性的想法,等等。@Nicolabolas举例来说,听听关于是否将对象范围内的常量(如modelview)作为顶点属性发送比仅使用单独的绘制调用更好的想法会很有用。@Nicolabolas顺便说一句,您自己对链接到的Meta上的这些问题的解释也有点主观。。在这些问题中考虑这些回答…“如果你讨论的是最佳实践,那么这些问题通常会更容易被接受”和“最佳实践”问题是坏的吗?不是天生的;关于流程的问题往往会经常出现,虽然是的,它们天生是主观的,但只需回答它们就可以了”啊,纹理查找。当然,我喜欢。谢谢。我用过这种方法,有点像精灵。当然,每次都要推动纹理,但它只是一把,比顶点小得多。在我的简化示例中,我只在一行中使用vec4s进行xyz平移和y旋转。纹理中的完整矩阵可能并不总是需要的。