GLSL数据类型
- 基础类型:
类型 | |
---|---|
基础类型 | bool、int、uint、float |
向量类型 | {b\i\u}vec{2\3\4} |
矩阵类型 | mat{2\3\4}、mat{2\3\4}x{2\3\4} |
- 储存限定符:
类型 | 说明 |
---|---|
const | 常量 |
in | 从前一个阶段传递过来的输入 |
out | 传递到下一个阶段 |
inout | |
uniform | 从c++代码传过来的值 |
flat | 不插值,例如:flat out vec4 color; |
centroid | 质心插值,例如:{in\out} centroid vec4 color; |
noperspective | 非透视插值,例如:noperspective out float value; |
smooth | 透视插值(默认),例如:smooth out vec4 color; |
- 着色器例子:
#version 330
in vec4 position;
void main(void){
gl_Position = position;
}
创建着色器
- glCreateShader(shaderType)
参数 | 值 | |
---|---|---|
shaderType | GL_VERTEX_SHADER | 顶点着色器 |
GL_FRAGMENT_SHADER | 片段着色器 | |
GL_GEOMETRY_SHADER | 几何着色器 | |
GL_TESS_CONTROL_SHADER | 细分控制着色器 | |
GL_TESS_EVALUATION_SHADER | 细分计算着色器 | |
GL_COMPUTE_SHADER | 计算着色器 |
- glShaderSource(shader,count,string,length)
参数 | 说明 |
---|---|
shader | |
count | 字符串数目 |
string | 字符串数组 |
length | 字符串长度数组 |
-
glCompileShader(shader);
-
glGetShaderiv(shader, pname, params)
参数 | pname | params | 说明 |
---|---|---|---|
shader | |||
pname | GL_SHADER_TYPE | 返回着色器类型 | |
GL_DELETE_STATUS | FALSE\TRUE | 当前着色器是否被标记为删除 | |
GL_COMPILE_STATUS | FALSE\TRUE | 着色器编译是否成功 | |
GL_INFO_LOG_LENGTH | |||
GL_SHADER_SOURCE_LENGTH |
- glDeleteShader(shader);
创建着色器程序
-
glCreateProgram();
-
glAttachShader(program, shader);
-
glBindAttribLocation(program, num, name);绑定属性
-
glLinkProgram(program);
-
glUseProgram(program);
-
glDeleteProgram(program);
操作Uniform
-
glGetUniformLocation(program, name);编译链接之后。
-
glUniform{1\2\3\4}{i\f\iv\fv}(location);
-
glUniformMatrix{2\3\4}{fv}(location, count, transpose, value);矩阵