OPENGL —— 创建顶点着色器

顶点着色器(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);

你可能感兴趣的:(OpenGL学习笔记,着色器,c++)