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

时间:2018-07-24 04:09:22

标签: opengl geometry-shader

概述

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

实施

我有一个几何着色器,该着色器可在线条上运行(我们称其顶点为x1,x2,…),并生成分辨率更高的线条(y11,y12,y13…,y21,y22,y23,…),其中yij对应到跨度xi x {i + 1}。

在每个xi处,我提供要添加的块的高度,然后几何着色器知道相应的y11,y12,…需要更高。

不幸的是,有时yi处的块会渗入y {i + 1}。现在,我想做的是在处理范围i时,将某个出血量写入某个变量,然后在处理第i + 1个范围时检查该变量。

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

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

1 个答案:

答案 0 :(得分:3)

不,你不能。

除了某些非常specific circumstances之外,特定阶段的所有着色器调用均以未指定的顺序执行(或根本不与其他调用一起排序) 。他们不能互相交谈。他们无法声明其他人可以看到的变量,依此类推(同样,它们在某些非常specific circumstances之外。GS都不可用)。