0

我一直在阅读 OpenGL ES Shading 语言规范,其中有一段让我感到困惑:

7.2 片段着色器特殊变量
...
片段着色器不需要写入 gl_FragColor 或 gl_FragData。有许多算法,例如阴影体积,包括未写入颜色值的渲染通道。

我看过很多关于阴影体积和着色器的文章,我找不到任何关于这些算法如何在不写颜色值的情况下做任何事情的信息,因为似乎没有办法单独从顶点着色器返回数据ES平台上。Desktop GL 有几何着色器,似乎是为了这种效果,但在 ES 2.0 Core 中没有这样的东西。

这是桌面规范中无意中留下的东西,允许扩展还是我错过了什么?

4

1 回答 1

1

几周前我用 opengl es 2.0 写了一个影子卷算法。

为此,在某些通道中,您不写颜色。

例如,您必须使用模板缓冲区,根据可见/不可见面和轮廓来增加/减少模板。当您执行此工作时,您必须禁用颜色 (GLES20.glColorMask(false, false, false, false);)。

如果你不这样做,你将拥有很多人工制品。这里的目标是更新模板而不更新颜色(片段缓冲区)。

有关阴影体积的更多详细信息以及为什么需要禁用颜色: http ://http.developer.nvidia.com/GPUGems/gpugems_ch09.html

(对不起我的英语不好):-)

于 2012-07-31T05:04:44.957 回答