现在的位置: 首页 > 综合 > 正文

【GLSL】color shader

2013年09月17日 ⁄ 综合 ⁄ 共 1161字 ⁄ 字号 评论关闭

********************************************************************************

         这是来自lightthouse3d的教程,在此拙劣的翻译一下,完全是为了自己加深印象,若你不经意看见,请指正错误之处。这里并非逐句翻译,译者只是试图用更加容易理解的语句来代替原句。

**************************************************************************

 

 

GLSL可以访问部分opengl状态,在这个教程我们将看到GLSL通过gl—colol在opengl应用程序中如何访问颜色。

GLSL有属性变量跟踪当前的颜色,也可以通过可变变量从顶点shader中获取。

attribute vec4 gl_Color;

varying vec4 gl_FrontColor; // writable on the vertex shader
varying vec4 gl_BackColor; // writable on the vertex shader

varying vec4 gl_Color; // readable on the fragment shader

 

其遵循:

1.opengl应用程序通过glcolor定义(顶点)颜色值

2.顶点shader通过gl_color获取颜色值

3.顶点shader计算front face和banck face的颜色值,分别存储于gl_FrontColor和 gl_BackColor 。

4.片元shader接受经过插值的颜色,插值可以通过gl_FrontColor和 gl_BackColor 来计算。

5.片元shader通过gl_color设置gl_FragColor 。

 

可变变量必须使用同样的名字定义在顶点和片元shader里面,在顶点shader有连个可变变量 gl_FrontColor 和 gl_BackColor,用于表示gl_color的值这取决于face。注意属性变量gl_color和可变变量gl_color是不冲突的,因为前者只是在顶点里可见,而后者在偏于shader里。

好了,说的够多了,顶点shader的代码如下,这里只计算了gl_FrontColor

 

 


                    void main()
                     {   
            gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
                    }


 片元shader代码


 void main()
{
gl_FragColor = gl_Color;
}


工程代码可以在此下载colorshader

抱歉!评论已关闭.