步骤
- 编译和链接着色器程序
- 创建并且绑定VAO, VBO, EBO
- 使用着色器程序和VAO,并且渲染
VBO 用来在GPU内存中存储顶点数据
EBO 索引缓冲对象是通过索引去引用顶点数据
VAO 用来在存储VBO和EBO的配置
1.创建顶点缓冲对象
glGenBuffers(1, p); 第一个参数是数量, 第二个是对象的ID
glBindBuffer(GL_ARRAY_BUFFER, p) 绑定顶点缓冲对象
GL_ARRAY_BUFFER: 表示顶点缓冲对象
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW) 将用户数据复制到当前绑定缓冲对象
GL_STATIC_DRAW: 数据不会或几乎不会改变
GL_DYNAMIC_DRAW: 数据会被改变很多
GL_STREAM_DRAW: 数据每次绘制都会改变
glVertexAttribPointer()用来将顶点数据绑定到着色器上
- 顶点着色器
#version 330 core //版本声明
layout (location = 0) in vec3 aPos; //输入的有3个分量的数据,location表示绑定顶点缓冲对象的位置
void main()
{
gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); //设置输出,gl_Position为vec4类型
}
- 片段着色器
#version 330 core
out vec4 FragColor;
void main()
{
FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);
}
编译和链接着色器程序
编译着色器
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
//链接着色器
shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
//使用着色器程序
glUseProgram(shaderProgram);
网友评论