2014-02-18 76 views
0

是否有可能使用GLSL着色器來計算每個像素,而不是每個頂點頂點的顏色?因爲它看起來有點像每個頂點照明(有點醜陋)。OpenGL的每像素着色與GLSL着色器

例如

我有什麼: enter image description here

它應該是什麼樣子: enter image description here

回答

3

使用GLSL着色器來計算每個像素[頂點的顏色是否有可能...]

「v顏色每個像素的ertices「並不真實。人們計算的是片段的顏色(這是像素​​柵格的柵格化結果,但尚未影響幀緩衝像素)。並且,顏色是總是每個片段計算 - 在「每頂點照明」的設置,該顏色僅通過在原語(又名高洛德着色。)的各頂點內插從所述照明的顏色,這可能進一步操作計算(例如通過紋理映射)。

什麼你可能意味着這裏是「是否有可能使用GLSL着色器來計算每個片段的照明euqation(Phong光照,逐像素光照)?」答案是:是的。這可以在片段着色器中完成。

因爲它看起來有點像每頂點照明(有點醜)。

什麼看起來這樣?固定功能GL?是的,它是這樣指定的。舊的固定功能照明是每個頂點完成的,當時只支持平面和Gouraud陰影。着色器確實改變了這一點。

+0

感謝您的回答。你能給我一個代碼示例嗎? – user3075425

+0

@ user3075425:你應該看看[照明章節](http://www.arcsynthesis.org/gltut/Illumination/Illumination.html)的[arcsynthesis教程]的(http://www.arcsynthesis.org/gltut /),特別是關於[Vertex Point Lights](http://www.arcsynthesis.org/gltut/Illumination/Tutorial%2010.html#d0e9855)和[Fragment Lighting](http://www.arcsynthesis) .org/gltut/Illumination/Tut10%20Fragment%20Lighting.html),這兩個變體都帶有示例着色器。 – derhass

+0

我還是不太明白如何做到這一點。因爲在每個像素點亮中,計算在片段着色器中,但在glColor片段着色器中不需要計算。我錯了嗎? – user3075425