当绘图顺序很重要时,批处理多个绘图调用



我正试图弄清楚如何在基于OpenGL/DDirectX的应用程序中实现批处理。我知道,当启用深度测试/深度写入时,我可以将一堆使用公共材质渲染的对象放在同一坐标空间中,并使用单个draw调用进行绘制。但在我的特定应用程序中,我有几个对象针对深度缓冲区进行测试,但不向深度缓冲区写入,而是依赖于绘制顺序来获得正确的外观。这些通常是3D世界中的2D几何形状(例如,具有动态信息的面板)。

有没有一个通用的解决方案可以用来批量处理通常需要特定绘图订单的项目?还是我需要调整我的场景,对所有内容进行深度写作,以利用批处理?

GPU将按几何体顺序渲染,即使在单个绘制调用中也是如此。换句话说,第一个三角形将在第二个三角形之前绘制,依此类推——即使着色计算可能并行进行。

所以你不需要在这里做任何特别的事情。只要实例在批中按绘制顺序排列,结果就会与使用多个绘制调用时的结果相同。

您可以将标准化的Z空间划分为N(2D对象的数量),然后使用与绘图顺序相对应的不同标准化Z值来跟踪每个对象,并让深度测试为您进行"排序"。

相关内容

  • 没有找到相关文章

最新更新