gpt4 book ai didi

opengl - 优化渲染是否需要从前到后绘制?

转载 作者:行者123 更新时间:2023-12-03 23:46:09 28 4
gpt4 key购买 nike

我偶尔看到过一篇文章,建议在将顶点发送到 OpenGL(对于任何 OpenGL 变体)时,从离相机最近到最远的顺序进行排序。这样做的原因是如果顶点位于另一个已经渲染的顶点之后,OpenGL 将不会完全处理/渲染顶点。

由于按深度对顶点进行排序是任何项目的昂贵组成部分,因为这种排序通常会经常更改,因此这种设计有多常见或必要?

我以前认为 OpenGL 会“查看”所有提交的顶点并在渲染整个批次之前处理它们自己的深度缓冲,而不管它们的顺序如何。但如果实际上一个顶点在另一个顶点之前被渲染到屏幕上,那么我可以看到排序可能会如何提高性能。

优化渲染是否需要从前到后绘制?

最佳答案

一旦图元被光栅化,它的 z 值可用于执行“早期 z 终止”,这会跳过运行片段着色器。这是从前到后渲染的主要原因。提示:当您有透明(alpha 纹理)多边形时,您必须从后到前渲染。

OpenGL 规范定义了一个状态机,并没有指定渲染实际发生的顺序,只是结果应该是正确的(在一定的公差范围内)。

为清楚起见进行编辑:我上面想说的是硬件可以做任何它想做的事情,只要原语 出现 已按顺序处理

但是,大多数 GPU 是流处理器,它们的 OpenGL 驱动程序不会“批量处理”几何图形,除非出于性能原因(最小 DMA 大小等)。如果先输入多边形 A,然后输入多边形 B,那么它们将一个接一个地输入管道,并彼此独立(大部分)进行处理。如果 A 和 B 之间有足够数量的多边形,那么 A 很有可能在 B 之前完成,如果 B 在 A 之后,它的碎片将通过“early z kill”被丢弃。

为清楚起见进行编辑:我上面想说的是,由于 hw 不会“批量处理”几何图形,因此它无法自动进行从前到后的排序。

关于opengl - 优化渲染是否需要从前到后绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15673187/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com