剔除实例化网格的有效方法是什么
(例如2000棵树,每棵都有〜17个三角形),而无需使用几何着色器?
不幸的是,我的软件仅支持OpenGL ES 3.0,因此必须剔除顶点着色器或其他地方。
另一种解决方案是在每个帧中重新排列实例缓冲区。
答案 0 :(得分:1)
如果无法高效地执行GPU剔除,则毫无意义;毕竟,首先要在GPU上进行剔除。
高效的GPU选择需要以下条件:
OpenGL ES 3.0缺乏执行这两种功能的机制。几何着色器和变换反馈是执行#1的较早方法,但也可以使用计算着色器和SSBO /图像加载/存储来完成。当然,ES 3.0既没有功能集,也没有功能集。为此,您需要ES 3.1。
ES 3.0也没有间接渲染功能,可用于通过GPU生成的数据进行实际渲染,而无需从CPU读取任何数据。因此,即使您有办法做#1,也必须将数据读回CPU才能在渲染命令中使用它。
因此,除非CPU淘汰比完全GPU / CPU同步要昂贵(几乎肯定没有),否则最好只在CPU上进行淘汰。