1、图形渲染管线
图像渲染管线指的是一堆原始图形数据途径一个输送管道,期间经过各种变化处理最终出现在屏幕的过程。下图是图形渲染管线的每个阶段抽象展示。蓝色部分我们可以注入自定义的着色器
2、顶点输入
顶点数组对象:Vertex Array Object VAO
顶点缓冲对象:Vertex Buffer Object VBO
GPU内存中存储大量顶点的对象,使用这些对象可以一次发送大批数据到显卡上供点着色器访问。
float vertices[]={
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f
0,0f,0.5f,0.0f
}
//获取一个顶点缓冲对象
unsigned int VBO ,VAO;
glGenBuffers(1,&VBO);
glGenVertexArrys(1,&VAO);
//绑定缓冲对象
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER,VBO);
//将顶点数据复制到缓冲内存中
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);
//设置着色器获取顶点数据的指针
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3*sizeof(float),(void*)0);
openGl的坐标X、Y、Z轴的坐标范围(-1.0,1.0)
通常深度可以理解为z坐标,它代码一个像素在空间中和你的距离,如果离你远肯能被别的像素遮挡,你就看不到它。
顶点缓冲对象(vertex buffer objects ,OBJ)管理这个内存,它会在GPU内存中存储大量顶点。