1.FBO,RBO,VBO:
FBO:(frame buffer object) 帧缓冲对象
RBO(Render Buffer Object)渲染缓冲对象
VBO:(Vertex Buffer Object) 顶点缓冲对象
image.png
三维物体渲染到窗体有两种路径:
- 1.三维物体->FBO->Texture->窗体
-
2.三维物体->窗体
image.png
2. Per-pixel-shade和per-vertex-shade:
shader的写法有所不同,per-pixel-shade的diffuse和ambient写在顶点着色器里,光照写在片段着色器中。
image.png
3.VBO和ply读取
-
相关函数:
生成VAO,VBO,EBO
image.png
-
概念介绍
VBO:顶点数据;
dragon.ply中
一个点数据示例:[0.51,0.11,0.95] 包含三维坐标vec3;
wuson.ply中
一个点数据示例:[0.51,0.11,0.95,0.2,0.1,0.7] 包含三维坐标vec3和norm向量vec3
有时顶点数据会包含坐标[vec3,n向量vec3, rgba vec4],此时一个点数据总长为10.
点数据保存在vertexs[vNum]中,数据类型为GLfloat*
EBO:面数据;
dragon.ply中
一个面数据示例:[3,0,52,3] , mesh[0]表示这个面有3个顶点,mesh[1:4]是三个顶点的索引,索引从零开始。
点数据保存在indices[fNum]中,数据类型为GLuint*
VAO:顶点数组,和VBO,EBO绑定。cpu利用VAO读取读取和理解数据。
-
读取过程:
1.初始化
创建VAO,VBO,EBO。
绑定VAO。
image.png
VBO,EBO分别与VAO绑定。
讲顶点数据读入VBO,将面数据读入EBO。
image.png
VAO为CPU解释解释数据流的含义,不同含义在每一行数据中有不同的偏移量。
image.png
2在display中
绑定VAO,渲染三角形(因为有EBO)。若只有VAO和VBO则渲染顶点。
image.png