Opengl编程指南读书笔记-Opengl着色器

来源:互联网 发布:萤火虫软件 编辑:程序博客网 时间:2024/05/16 19:47

顶点着色器:

#version 430 core

layout(location = 0) in vec4 vPosition;

void main()

{

gl_Position = vPosition;

}

解释:

#version 430 core 指定了我们所用的OpenGL着色语言的版本。这里的“430"表示我们准备使用OpenGL4.3对应的GLSL语言。这里的命名规范是基于OpenGL3.3版本的,在那之前的OpenGL版本中,版本号所用的数字是完全不一样的。这里的core表示我们将使用OpenGL核心模式。每个着色器的第一行都应该设置”#version",否则系统会假设使用“110”版本,但是这与OpenGL核心模式并不兼容。

layout(location = 0) in vec4 vPosition;其中vPosition就是变量的名称,我们使用一个字符v作为这个顶点属性名称的前缀。这个变量所保存的是顶点的位置信息。

下一个字段是vec4,也就是vPosition类型。在这里他是一个GLSL的思维浮点数向量。vec4的默认值为(0,0,0,1),因此当仅指定了x和y坐标的时候,其他两个坐标值(z和w)将自动 指定为0和1.而in指定了数据进入着色器的流向,表示输入变量,与out相对。layout(location = 0),它也叫做布局限定符,目的是为变量提供元数据。我们可以使用布局限定符来设置很多不同的属性,其中有些是与不同的着色阶段相关的。

OpenGL的所有着色器,无论是处于哪个着色阶段,都会有一个main()函数。对于这个着色器而言,它所实现的就是将输入的顶点位置复制到顶点着色器的指定输出位置gl_Position中。



片元着色器

#version 430 core

out vec4 fColor

void main()

{

fColor = vec4(0.0,0.0,1.0,1.0);

}

解释:

out vec4 fColor:声明的变量名为fColor.使用out限定符,着色器会把fColor对应的数值输出,而这也是片元所对应的颜色值。

在这里每个片元都会设置一个四维的向量。OpenGL中的颜色是通过RGBA颜色空间来表示的,其中每个颜色分量(R表示红色,G表示绿色,B表示蓝色)的范围都是[0,1].其中最后一个表示alpha值,专用于度量透明度。这里设置为1.0表示片元的颜色是完全不透明的。


0 0
原创粉丝点击