顶点着色器(Vertex Shader)简单的说就是是对顶点进行一系列操作的着色器,其作用于每个顶点,可以生成每个顶点的最终位置
顶点着色器(Vertex Shader)是图形渲染管线的第一个部分,它把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标,同时顶点着色器允许我们对顶点属性进行一些基本处理。
现代OpenGL需要我们自己设置一个顶点顶点着色器,创建顶点着色器需要如下几步:
第一步:使用GLSL语言编写着色器,示例如下:
const char *vertexShader = "#version 420 core\n"
"layout (location = 0) in vec3 mPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(mPos.x, mPos.y, mPos.z, 1.0);\n"
"}\0";
第二步:使用glCreateShader创建着色器对象,示例如下:
unsigned int vertexShaderId;
vertexShaderId = glCreateShader(GL_VERTEX_SHADER);
第三步:使用glShaderSource把这个着色器源码附加到着色器对象,示例如下:
glShaderSource(vertexShaderId, 1, &vertexShader, NULL);
第四步:使用glCompileShader编译着色器,示例如下:
glCompileShader(vertexShaderId);
第五步:使用glGetShaderiv检查编译是否成功
int success;
glGetShaderiv(vertexShaderId, GL_COMPILE_STATUS, &success);
第六步:使用glGetShaderInfoLog获取错误信息
char info[1024]
glGetShaderInfoLog(vertexShaderId, 1024, NULL, info);