2024新年总结
记得上一次做年终总结还是在22年1月1日,转眼日历已经迈入了2024年。时间或许的确不存在,你往里面塞的事情越多,它就变得越长。2023,这一年真的很长,但同时也很短,现在就来回顾一下这一年吧。
记得上一次做年终总结还是在22年1月1日,转眼日历已经迈入了2024年。时间或许的确不存在,你往里面塞的事情越多,它就变得越长。2023,这一年真的很长,但同时也很短,现在就来回顾一下这一年吧。
从openGL的渲染管线图中可以看出,其实在顶点着色器和片段着色器之间还隐藏着一个着色器——几何着色器。这个着色器并不是必须的,如果不主动提供给openGL,它便会自己生成一个最基本几何着色器,即对顶点不做任何变换。
立方体贴图其实很好理解,就是将二维的贴图变成立方体的,注意,立方体贴图其实并不是三维贴图,或者说立方体贴图只是三维贴图的特殊形式,因为它的形状恰好是一个正立方体,而一般的三维贴图形状可能并不是固定的。
到目前为止,我们已经掌握了很多缓冲,比如用来储存顶点的GL_ARRAY_BUFFER
,用来储存顶点索引的GL_ELEMENT_ARRAY_BUFFER
以及储存颜色的颜色缓冲,储存深度信息的深度缓冲等等,这些诸多缓冲其实就是构成每一帧画面的诸多要素,所以故而便存在一个储存这些所有缓冲的缓冲,便是帧缓冲。
和其他缓冲一样,帧缓冲的创建也是先创建,然后再绑定。glGenFramebuffers
用来创建一个帧缓冲,再将帧缓冲用glBindFramebuffer
绑定到GL_FRAMEBUFFER
之后,便可以开始对其进行修改。刚创建好的帧缓冲其实是不完整的,一个完整的帧缓冲需要满足以下的条件:
混合
目前我们所有的操作都是建立在物体是完全不透明的前提下的,但是对于透明材质的物体,例如玻璃,我们应该怎么样去渲染呢?
我们在片段着色器输出颜色的时候会输出一个vec4类型的向量,而这个向量的第四个向量便是控制物体透明度的通道,又因为之前我们渲染的都是不透明的物体,所以这个通道都设置为了1,也即是完全不透明,相反的,完全透明的物体也就是0,这将使物体不会被渲染出来。而问题最大的便是那种半透明的物体,也即是物体本身带有一点颜色,但是可以透光,例如有色玻璃等等。所以我们需要将两种颜色进行混合从而达到这种半透明的效果。
模板测试简介
在几何着色器之后,渲染管线便来到了模板测试,这是一个在深度测试之前的测试。和深度测试一样,模板测试也是根据某个值将像素点剔除,只不过深度测试是通过深度值也就是Z轴值来剔除罢了。