OpenGL笔记

1.渲染管线

1)将顶点保存到缓存对象
将顶点数据保存到OpenGL管理的一块内存中

2)发送到OpenGL服务端
调用绘制命令如glDrawArrays()

3)顶点着色器

4)细分着色器

5)几何着色器

6)图元装配

7)剪切(clipping)

8)光栅化

9)片元着色器

10)逐片元操作
深度测试、模板测试
写入帧缓存(若开启融混则以叠加的方式写入)

2.着色器

1)矩阵是列主序的
先填充列,再填充行

mat3 M1 = mat3(1.0, 2.0, 3.0,
               4.0, 5.0, 6.0,
               7.0, 8.0, 9.0);
              
vec3 column1 = vec3(1.0, 2.0, 3.0);
vec3 column2 = vec3(4.0, 5.0, 6.0);
vec3 column3 = vec3(7.0, 8.0, 9.0);
mat3 M2 = new mat3(column1, column2 ,column3); 

M1 == M2 

2)流程控制语句
break
continue
return
discard 丢弃当前片元,立即终止着色器(只在片元着色器中使用)

3)计算的不变性?
invariant
precise

4)UBO
uniform块

5)SSBO
(shader storage buffer object)
buffer 块(可读写,动态大小)

6)in/out

7)着色器子程序
函数指针

3.绘制前的数据准备

1)VBO
vertex buffer object
仅使用VBO的绘制流程如下:
–绑定VBO
–调用glBufferData()放入顶点数据
–调用glVertexAttribPointer()告诉openGL放入的顶点数据中哪些是位置信息,哪些是颜色信息,哪些是纹理坐标等等

// …:: 绘制代码(渲染循环中) ::
–绑定VBO
–调用glVertexAttribPointer()配置顶点信息
–开始绘制

每绘制一个物体都都需要先绑定VBO,然后告诉OpenGL这些数据分别是代表哪些信息。比较麻烦

2)VAO
将VBO和顶点属性配置打包,每次绘制只用绑定VAO就好了。
使用VAO流程如下:
–绑定VAO
–绑定VBO
–调用glBufferData()放入顶点数据
–调用glVertexAttribPointer()告诉openGL放入的顶点数据中哪些是位置信息,哪些是颜色信息,哪些是纹理坐标等等

// …:: 绘制代码(渲染循环中) :: …
–glBindVertexArray(VAO);
–开始绘制

3)EBO
使用索引,去除重复顶点
使用EAO流程如下:
–绑定VAO
–绑定VBO
–调用glBufferData()放入顶点数据
–绑定EBO
–调用glBufferData()放入索引数据
–调用glVertexAttribPointer()告诉openGL放入的顶点数据中哪些是位置信息,哪些是颜色信息,哪些是纹理坐标等等

// …:: 绘制代码(渲染循环中) :: …
–glBindVertexArray(VAO);
glDrawElements();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值