代码之家  ›  专栏  ›  技术社区  ›  Neil G

是否可以在几何体着色器的迭代之间共享变量?

  •  0
  • Neil G  · 技术社区  · 6 年前

    概述

    我正在生成一个我知道其功能的图段我想做的是在这个已知面积和高度的高条形图中添加另一个函数问题是这些铁条会从一段流到另一段。

    实施

    我有一个几何着色器,它运行在一个线性带上(让我们调用它的顶点x1,x2),并生成一个更大分辨率的线条(Y11,Y12,Y13,Y21,Y22,Y23),其中YYJ对应于跨度Xi×{I+1 }。

    在每个XI中,我提供要添加的块的高度,并且几何着色器知道相应的Y11、Y12需要更高。

    不幸的是,有时,y i的阻塞流到y{i+1}现在,我想做的是在处理跨度I时,将出血量写进一些变量中,然后在处理I+1th跨度时,检查这个变量。

    OpenGL的几何体着色器中有这样的机制吗在我看来,它可能是按顺序处理跨距的,但我不确定如果是,那么应该有一种方法将值从一个跨距传递到下一个跨距。

    或者,有没有一种方法来进行合并(在合并排序合并排序列表的方式中),通过某种函数合并两个排序的顶点列表我从来没有听说过这样的事情,但这是OpenGL理论上可以做到的。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Nicol Bolas    6 年前

    不,你不能。

    除了 specific circumstances ,特定阶段的所有着色器调用都在 未指定 顺序(或者对其他调用完全没有顺序)他们不能互相交谈;他们不能声明其他人可以看到的变量,等等(同样,在某些 specific 情况 . 所有这些都不适用于GS)。