本节主要讲了图形渲染管线(Graphics Pipeline)的处理过程:首先是将三维坐标转换为二位坐标,然后将映射的二维坐标绘制再屏幕上,也就是光栅化?
顶点数组对象:Vertex Array Object,VAO
保存vbo的顶点属性类型,方便查找。
顶点缓冲对象:Vertex Buffer Object,VBO
把大量的数据存储在GPU内存上,然后一次传输大量数据到显卡上,顶点缓冲对象就是帮助管理GPU内存的。
索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO
具体看这个博主的解释: 熟悉 OpenGL VAO、VBO、FBO、PBO 等对象,看这一篇就够了 - 云+社区 - 腾讯云
绘制三角形时,各个模块间关系如下:
作业的内容也添加上了,需要注意的是多种图形的绘制,绑定VAO和调用VAO的顺序,也就是说针对一个图形,他绑定shader的顺序、VAO、VBO必须是在一起的。
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
const char* vertexShaderSource = "#version 330 core\n"
"layout(location =0)in vec3 aPos;\n"//in是GLSL语言
"void main()\n "
"{\n"
"gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\