OpenGL学习日记
文章平均质量分 89
昵称好难写
你可以走的很慢,但是你要一直在走。
展开
-
OpenGL学习日志之模板测试
模板测试根据模板缓冲区中片段的模板值与设置的引用值,进行我们设置的运算式进行比较,如果没有通过测试,则丢弃该片段。OpenGL是通过设置位遮罩来控制写操作的,当我们在准备写入模板值之前,我们会将模板值与这个位遮罩进行与运算,一般我们使用0xFF和0x00就行,如果你有特殊的需求需要控制某一位的写入和其他不一样,你也可以自己设置。由于原本绘制的正方形区域片元模板值都为1,而我们设置的模板值不等于1通过,因此放大的正方形绘制时,只有大于原本大小的正方形的片元片段才能通过模板测试,也就是我们拿来作为描边的部分。原创 2023-05-04 19:00:00 · 1141 阅读 · 0 评论 -
OpenGL学习日志之深度测试
当开启深度测试,OpenGL会读取当前片段存储的深度值,与当前片段的深度缓冲区的深度值进行比较。比较是按照我们设置的运算操作符,如果测试通过,则会把片元数据传入下一个阶段,如果测试不通过,丢弃该片元,不再传入下一个阶段。OpenGL开启深度测试的方法一旦启用深度测试,如果片段通过深度测试,OpenGL自动在深度缓冲区存储片段的 z 值,如果深度测试失败,那么相应地丢弃该片段。如果我们深度测试通过,但是也不想写入深度缓冲区新的值,我们也可以通过指令关闭深度写入。原创 2023-03-20 09:32:42 · 777 阅读 · 0 评论 -
OpenGL学习日记之模型绘制
下载Assimp已编译的lib(因为我们公司的电脑有很多权限和限制,也不能自己安装一些没有报备的软件,所以愁方便我就没有用cMake自己编译了)找到一位免费分享的博主的。现实生活中一个我们看到的模型都是由很多部位组成的,也可以说成是由很多mesh组合而成的,比如一张桌子,是由一个桌板加四个桌脚拼成的为了方便抽象,我们又封装了一层模型的类。现实生活中,我们都是美术同学通过一些现代的绘图工具,为我们导出模型来绘制,建模工具会自己生成所有的顶点坐标、顶点法线和纹理坐标,我们开发者就不需要去关注这些细节了。原创 2023-02-21 17:59:52 · 794 阅读 · 0 评论 -
OpenGL学习日记之纹理
通俗一点:就是我们所说的贴图,精确点的定义:存储可供着色器读写数据的数据结构。纹素是纹理读取或者写入的最小单元,纹理相当于存储纹素的一个数据结构。纹理坐标为了将纹理映射到模型上,我们需要为模型的每个顶点指定映射到纹理的哪个位置,这个坐标就是纹理坐标,也称uv坐标。uv坐标的范围是(0,1)纹理采样使用纹理坐标获取纹理颜色的过程就叫纹理采样。原创 2023-02-20 19:00:00 · 1081 阅读 · 0 评论 -
OpenGL学习日记之光照计算
现实生活中,光照通常来自于多个光源,并且会在多个物体之间发散和反弹,一个物体的光照可能受到来自一个非直射的光源影响,最后才进入人眼,也就是所谓的间接光照。光线照在粗糙物体表面,随机散射到各个方向,漫反射中视角的位置是不重要的,因为反射是完全随机的,所以在任何反射方向都是随机的。我们知道的定向光源的一个好例子是,太阳。常用的光照模型有:兰伯特光照模型(主要是模拟漫反射),半兰伯特光照模型(调优兰伯特全黑的缺点),Phong光照模型(模拟镜面反射),BlinnPhong光照模型(兰伯特+Phong)等。原创 2023-02-20 10:22:25 · 864 阅读 · 0 评论 -
OpenGL学习日记之VBO、VAO、EBO
OpenGL的库是C语言写的,为了方便,OPenGL为我们抽象了一个层,这个层就是把一个状态或者选项包装为一个“对象”,一个对象就是一些选项或者数据的集合,它代表OpenGL状态的一个子集。VAO就像是为了向GPU解释顶点数据,指定VBO数据中的各个属性字段用途,我们把顶点相关数据打包成一个VBO传入显存,供GPU读取,GPU读取到这个数组数据以后,顶点着色器并不知道要如何去使用这些数据,这个时候就需要VAO来解释这些数据,通过指针告诉顶点着色器,第一组数据去哪里取,第二组数据从哪里开始取。原创 2023-01-10 20:57:46 · 816 阅读 · 0 评论