2012-07-30 120 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

相關問題