着色器的使用
现代 OpenGL 要求我们至少设置一个顶点和片段着色器
主要步骤:
1: 顶点着色器创建
2:片段着色器创建
3: 着色器程序
4:使用着色器程序
顶点着色器创建:
-
着色器源代码:
const char *vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "void main()\n" "{\n" " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" "}\0";
-
编译着色器:
//创建着色器对象 unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER); // GL_VERTEX_SHADER:着色器类型 //将着色器源代码 添加到着色器对象上 glShaderSource(vertexShader, 1, &vertexShaderSource, NULL); //编译着色器 glCompileShader(vertexShader);
片段着色器创建
同上:
unisigned int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); //GL_FRAGMENT_SHADER:片段着色器类型
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
着色器程序:
两个着色器现在都已编译,剩下要做的就是将两个着色器对象链接到一个着色器程序我们可以用来渲染
//创建着色器程序
unsigned int shaderProgram = glCreateProgram();
//将着色器添加进程序中
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
//链接程序
glLinkProgram(shaderProgram);
使用着色器程序
glUseProgram(shaderProgram);