2014-02-18 74 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