2012-07-30 106 views
0

我一直在读通过的OpenGL ES着色语言规范和存在是困扰我一段记载:算法,其中颜色值不是由片段着色器

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

我看过很多关于阴影卷和着色器的文章,我找不到任何有关这些算法如何在不写入颜色值的情况下执行任何操作的信息,因为似乎没有返回数据的方法来自ES平台上的顶点着色器。桌面GL的几何着色器似乎是为了这种效果,但在ES 2.0 Core中没有这样的东西。

这是从桌面规范中无意中遗留下来的东西,是否允许扩展或者我错过了什么?

回答

1

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

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

例如,您必须使用模板缓冲区,根据可见/不可见面和silouhette递增/递减模板。当你做这个工作时,你必须禁用颜色(GLES20.glColorMask(false,false,false,false);)。

如果你不这样做,你会有很多的文物。 这里的目标是更新模板而不更新颜色(片段缓冲区)。影卷,以及为什么需要禁用色

更详细的信息: http://http.developer.nvidia.com/GPUGems/gpugems_ch09.html

(对不起,我的英文不好):-)

+0

有道理。所以无论是否写入颜色,模板都会更新。这对了解各种技术非常有用。这同样适用于深度缓冲区吗? – 2012-07-31 21:33:56

+0

准确地说,在我的算法中,深度缓冲区在更新模板时被禁用。 – chrisendymion 2012-08-02 05:13:36

相关问题