片段着色器不写入颜色值的算法

时间:2012-07-30 00:13:04

标签: opengl-es-2.0 shader

我一直在阅读OpenGL ES着色语言规范,有一节让我感到困惑:

7.2片段着色器特殊变量
...
片段着色器不需要写入gl_FragColor或gl_FragData。有 许多算法,例如阴影卷,包括颜色值不是的渲染过程 书面。

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

这是无意中遗留在桌面规范中的内容,允许扩展还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

几周前我写了一个带有opengl es 2.0的影子音量算法。

为此,在某些过程中,您不会写出颜色。

例如,您必须使用模板缓冲区,根据可见/不可见面和silouhette递增/递减模板。执行此操作时,必须禁用颜色(GLES20.glColorMask(false,false,false,false);)。

如果你不这样做,你会有很多文物。 这里的目标是更新模板而不更新颜色(片段缓冲区)。

有关阴影卷的更详细信息以及您需要禁用颜色的原因: http://http.developer.nvidia.com/GPUGems/gpugems_ch09.html

(抱歉我的英语不好): - )