Opengl实例批处理

Opengl实例批处理,opengl,geometry-instancing,Opengl,Geometry Instancing,是否有一种方法可以在节/批中绘制实例缓冲区 目前,我正在将所有几何体压缩到大型VBO中,生成一个渲染脚本,该脚本通过着色器/纹理/地图集对模型进行批处理,然后使用gldrawerelements进行绘制,并在索引中添加计数和偏移量。一切都好 我正在考虑转移到实例化,以减少需要传输到gpu的数据量,但除了发送一组偏移量作为实例化属性外,我看不到一种开箱即用的opengl绘图调用方法 我遗漏了什么吗?实例化意味着多次绘制同一网格。因此,除非所有这些“批次”都使用相同的网格,否则对您没有特别的帮助。此

是否有一种方法可以在节/批中绘制实例缓冲区

目前,我正在将所有几何体压缩到大型VBO中,生成一个渲染脚本,该脚本通过着色器/纹理/地图集对模型进行批处理,然后使用
gldrawerelements
进行绘制,并在索引中添加计数和偏移量。一切都好

我正在考虑转移到实例化,以减少需要传输到gpu的数据量,但除了发送一组偏移量作为实例化属性外,我看不到一种开箱即用的opengl绘图调用方法


我遗漏了什么吗?

实例化意味着多次绘制同一网格。因此,除非所有这些“批次”都使用相同的网格,否则对您没有特别的帮助。此外,实例化并不会“减少需要传输到gpu的数据量”。如果之前为每个对象发送变换,之后仍然需要为每个对象发送变换。您只是通过不同的机制发送它们(顶点缓冲区而不是制服),但原理是一样的。@Nicol Bolas是的,我会多次绘制同一个四边形,但每次使用不同的变换-传输时的潜在节省是因为该变换只需要每个实例发送一次,而不是每个顶点发送一次。实例化四边形不是一个好主意。四边形中没有足够的数据可以从中获益。您可能最好在CPU上执行本地四元变换并将其上载到GPU。我正在编写一个gui,其中每个元素都有一个(可能旋转的)剪辑框-而不是在CPU端执行所有操作,并且必须编写一个剪辑算法(非常重要),我宁愿发送本地变换,剪切矩形和父变换到gpu,让opengl对轴对齐的剪辑框进行剪切,然后应用父变换。为每个顶点发送所有这些数据将是可怕的,尽管这就是为什么我想到实例化。看起来这也有点死胡同。