gpt4 book ai didi

opengl - 为什么在顶点着色器之后处理几何着色器?

转载 作者:行者123 更新时间:2023-12-04 12:30:22 32 4
gpt4 key购买 nike

OpenGLDirect3D渲染管道中,几何着色器在顶点着色器之后和片段/像素着色器之前进行处理。现在显然在片段/像素着色器之后处理几何着色器没有任何意义,但是我想知道为什么不将其放在顶点着色器之前?

至少从软件/高级角度看,这种方式似乎更有意义:首先运行几何体着色器以创建所需的所有顶点(然后转储仅与几何体着色器相关的所有数据),然后运行这样创建的所有顶点上的顶点着色器。有一个明显的缺点,就是现在必须在每个新创建的顶点上运行顶点着色器,但是在当前管线中,需要在此处进行的任何逻辑都需要为几何着色器中的每个顶点运行,大概;因此那里的性能影响不大。

我假设,因为几何着色器在两个管道中都处于此位置,所以可能是出于硬件原因,或者出于非显而易见的管道原因才有意义。

(我知道多边形链接需要在运行几何着色器之前进行(如果不是以单点作为输入呢?),但我也知道它也需要在几何着色器之后运行,所以它仍然不会在这些阶段之间运行顶点着色器的感觉?)

最佳答案

基本上是因为“几何着色器”是Microsoft的一个非常愚蠢的单词选择。它应该被称为“原始着色器”。

几何着色器使图元装配阶段可编程,并且在计算输入的顶点流之前,无法装配图元。功能上存在一些重叠,因为您可以采用一种输入图元类型并吐出完全不同的类型(通常需要计算额外的顶点)。

这些多余的发射顶点不需要在管道中向后移动到顶点着色器阶段,而是在调用几何着色器时完全计算出的。这个概念不应该太陌生,因为曲面分割控制和评估着色器在形式和功能上也看起来很像顶点着色器。

顶点转换有很多阶段,我们所谓的顶点着色器只是冰山一角。在现代的应用程序中,您可以期望顶点着色器的输出经过多个附加阶段,然后再确定最终的顶点以进行栅格化和像素着色(也没有很好地命名)。

关于opengl - 为什么在顶点着色器之后处理几何着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291142/

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