自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 问答 (1)
  • 收藏
  • 关注

原创 【LearnOpenGL学习笔记】——18.立方体贴图

文章目录1.立方体贴图?2.立方体贴图创建 1.立方体贴图? 包含6个2D纹理 用处:将该贴图应用到某个立方体上,并将立方体移动到原点,就能利用立方体的实际位置向量进行采样,可以将顶点的纹理坐标当成位置坐标直接使用 2.立方体贴图创建 unsigned int textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 和OpenGL的很多枚举(Enum)一样,它们背后的int

2022-05-04 11:03:48 589

原创 【LearnOpenGL学习笔记】——17.帧缓冲

文章目录1.概念与作用2.帧缓冲的创建过程3.附件类型4.练习 1.概念与作用 (1)帧缓冲:深度缓冲、模板缓冲等,我们可以自定义这些缓冲,用于多样化的渲染 (2)离屏渲染:自定义的帧缓冲不是默认帧缓冲,如果不绑定帧缓冲与主窗口,渲染指令将不会对窗口的视觉输出有任何影响 2.帧缓冲的创建过程 (1)创建帧缓冲对象: unsigned int fbo; glGenFramebuffers(1,&fbo); (2)绑定帧缓冲 glBindFramebuffer(GL_FRAMEBUFFER,fbo

2022-05-03 10:38:53 621

原创 【LearnOpenGL学习笔记】——16.混合测试

文章目录1.丢弃片段2.半透明图形渲染——使用混合(blend)3.练习 1.丢弃片段 丢弃纹理中透明部分的片段,保留不透明部分的片段 如何加载透明纹理? stb_image会自动加载,但我们需要告诉OpenGL 因此使用 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 2.半透明图形渲染——使用混合(blend) (1)混合开启:glEnable(GL_BLEND);

2022-04-29 23:49:36 688

原创 【LearnOpenGL学习笔记】——15.模板测试

文章目录1.概念2.模板函数3.模板轮廓 1.概念 (1)模板值(8位):每个像素/片段上的一个属性 (2)模板缓冲:存储模板值 (3)模板测试:对模板值进行比较 (4)模板写入:在比较后修改模板值 2.模板函数 (1)glEnable(GL_STENCIL_TEST):开启模板测试 (2)glStencilFunc(GL_NOTEQUAL, 1, 0xFF):模板测试函数,第一个为op,第二个为模板值,第三个为与的值 (3)glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE)

2022-04-29 11:13:52 388

原创 【LearnOpenGL学习笔记】——14.深度测试

文章目录1.概念与作用 1.概念与作用 (1)深度:屏幕空间中,某个点位上具有的一个数据属性 (2)深度缓冲:存储一个参考值,用于与片段的深度值进行比较,以便 (2)深度写入:在比较之后,对深度缓冲中的参考值进行写入 (3)深度测试:将一个片段的深度值与深度缓冲的内容进行对比 ...

2022-04-28 17:41:42 987

原创 【LearnOpenGL学习笔记】——13.模型加载

文章目录 1.数据格式 3D建模工具生成的数据文件格式.obj或COLLADA格式,通过模型导入库Assimp能在OpenGL中使用模型数据——了解.obj格式数据格式 2.Assimp库导入方法 (1)到GitHub下载Assimp (2)通过CMake ...

2022-04-26 16:32:57 731

原创 【LearnOpenGL学习笔记】——12.投光物+多光源

文章目录1.光源分类 1.光源分类 (1)平行光 到各个物体的光源方向都相等,因此光源位置没必要进行设置,可以通过直接设置光源方向Direction来计算lightDir向量 注意:光的位置和位置向量一般定义为vec3,如果用vec4的话: ①位置向量需要将w分量设置为1.0,这样才能保证平移和投影的正确 ②方向向量需要将w分量设置为0 if(lightVector.w == 0.0) // 注意浮点数据类型的误差 // 执行定向光照计算 else if(lightVector.w == 1.0)

2022-04-25 09:51:54 747

原创 【LearnOpenGL学习笔记】——11.光照贴图

文章目录1.贴图2.练习 1.贴图 (1)漫反射贴图 (2)镜面光贴图 贴图的区分只是为了使其呈现出不同的渲染效果,实际操作与纹理相同,对贴图区分相当于对物体不同的部分使用不同的纹理单元 2.练习 (1)基础代码 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include &lt

2022-04-22 18:12:59 418

原创 【LearnOpenGL学习笔记】——10.材质

文章目录1.总结2.材质3.练习 1.总结 本节主要是对GLSL顶点属性的传输的一个规范,引入材质(material)这个概念,具体使用均体现在代码中 2.材质 (1)材质结构体 #version 330 core struct Material { vec3 ambient; vec3 diffuse; vec3 specular; float shininess;//反光度 }; uniform Material material; (2)光照结构体 struc

2022-04-15 10:31:25 335

原创 【LearnOpenGL学习笔记】——09.基础光照

文章目录1.了解冯氏光照模型2.法向量3.镜面光照(高光)4.练习 1.了解冯氏光照模型 (1)环境光照(ambient) (2)漫反射光照(diffuse) (3)镜面光照(specular) 2.法向量 (1)法向量的作用:计算漫反射过程中,Lambert公式中用到了单位法向量 (2)法线矩阵:用于将法向量从模型空间转换到世界空间——解释参考 法向量的空间转换最好在CPU上进行,再通过uniform传递给着色器 3.镜面光照(高光) (1)Phong模型的使用 4.练习 基础代码 #include

2022-04-14 17:09:54 637

原创 【LearnOpenGL学习笔记】——08.颜色

文章目录1.光照2.创建一个光照场景3.例子实现 1.光照 在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色 2.创建一个光照场景 (1)被照物体:类似前几次,绘制一个立方体,为了简化,先不做纹理映射 (2)光源:绘制一个立方体模拟光照 需要为光源创建一个VAO? 当然也可以让这个灯和其它物体使用同一个VAO,简单地对它的model(模型)矩阵做一些变换就好了,然而如果频繁地对顶点数据和属性指针做出修改,可能会让这些修改影响到灯,因此有必要为灯创建一

2022-04-12 21:15:22 840

原创 【LearnOpenGL学习笔记】——07.摄像机

文章目录1.摄像机/观察空间2.LookAt(观察矩阵)3.欧拉角练习 1.摄像机/观察空间 以摄像机为原点的右手坐标系,x轴向右,z轴从屏幕指向自己(因此摄像机方向是z轴负方向) 如何构造模拟一个摄像机: ①摄像机位置:随便设置一个,如glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); ②摄像机方向:设置指向目标(如原点),glm::vec3 cameraTarget = glm::vec3(0.0f, 0.0f, 0.0f); 然后计算方向camera

2022-04-10 17:54:57 512

原创 【LearnOpenGL学习笔记】——06.坐标系统

文章目录1,坐标系统2.变换过程3.矩阵组合4.应用 1,坐标系统 标准化设备坐标(Normalized Device Coordinate, NDC):顶点着色器输出 坐标变换过程:模型空间——世界空间——观察空间(右手坐标系)——裁剪空间——屏幕空间 变换过程使用的矩阵(MVP矩阵):模型、观察、投影 2.变换过程 (1)模型空间到世界空间:模型矩阵 (2)世界空间到观察空间:观察矩阵 (3)观察空间到裁剪空间:投影矩阵,这个步骤将在先前指定范围内的坐标变换为标准化设备坐标的范围(-1.0, 1.0),

2022-04-04 16:13:51 777

原创 【LearnOpenGL学习笔记】——05.变换

文章目录1.欧拉变换与万向锁2.glm3.变换矩阵4.练习 1.欧拉变换与万向锁 欧拉变换:将一个变换拆分成以三个基底(x,y,z)方向为轴的变换 万向锁:当变换过程中,两个方向基底的轴重合之后,使得在另一个方向上无法变换 目前变换矩阵无法处理该问题,但是可以尽量避免,该部分讲解参考视频——欧拉变换与万向锁 2.glm glm(OpenGL Mathematics):OpenGL进行矩阵变换计算使用的一个库,具体下载与使用见——OpenGL.变换 3.变换矩阵 矩阵变换为左乘,变换顺序一般为缩放——旋转——

2022-04-03 22:04:42 705

原创 【LearnOpenGL学习笔记】——04.纹理

文章目录1.纹理2.纹理环绕方式3.纹理过滤4.多级渐远纹理5.加载与创建纹理——stb_image.h6.生成纹理步骤7.纹理应用——OpenGL部分(待补充) 1.纹理 (1)用图片控制模型的外观,而不需要通过逐顶点设置模型的外观 (2)OpenGL中纹理坐标原点位于左下角,DirectX中位于左上角 (3)纹理采样:使用纹理坐标(u,v)获取纹理颜色 (4)纹理可以是1D、2D、3D,各个对应坐标轴数量不同(S、T、R) 2.纹理环绕方式 环绕方式 描述 GL_REPEAT 对纹理

2022-03-28 15:01:06 267

原创 【LearnOpenGL学习笔记】—— 03.着色器

文章目录1.着色器2.GLSL3.向量4.输入与输出5.uniform6.其他属性 1.着色器 在【LearnOpenGL学习笔记】——02.三角形绘制中使用到的GLSL编写的是供shader使用的代码,也就是着色器的代码,在外的部分主要做顶点属性的传输、着色器之间的链接(着色器之间只能通过输入输出进行联系)、渲染程序的运行。 2.GLSL (1)在LearnOpenGL——着色器中介绍了一些GLSL的代码结构以及常用数据类型 (2)基本数据类型:int、float、double、uint和bool

2022-03-28 00:25:16 386

原创 【LearnOpenGL学习笔记】——02.三角形绘制

文章目录1.渲染管线了解2.绘制过程3.顶点缓冲对象4.索引缓冲对象 1.渲染管线了解 【Unity Shader 入门精要学习笔记】—— 01.渲染管线 2.绘制过程 (1)数据的输入与管理 ①顶点输入(涉及3D到2D坐标变换) ②顶点缓冲对象的创建与类型绑定 ③顶点数据的复制(复制到创建的缓冲中) (2)对数据的处理(顶点着色器、片元着色器) 顶点着色器 ①GLSL源码编写 ②顶点着色器对象的创建与源码附着 ③编译检测 片元着色器过程类似 (3)着色器程序编写 ①创建着色器程序对象 ②添加并链

2022-03-26 14:11:32 4354

原创 【Unity Shader 入门精要学习笔记】—— 01.渲染管线

文章目录1.渲染管线2.GPU流水线3.模板测试4.深度测试5.延迟渲染 1.渲染管线 定义 由三维场景出发,生成(渲染)一张二维图像,由CPU、GPU共同完成 渲染流程包含三个阶段:应用阶段——几何阶段——光栅化阶段 应用阶段输出渲染图元到几何阶段,几何阶段输出屏幕空间的顶点信息到光栅化阶段 应用阶段(三个任务): 1.准备好场景数据,如摄像机位置、视锥体、场景中包含的模型、使用的光源等 2.做粗粒度剔除工作,剔除不可见的物体,提高渲染性能 3.设置好,每个模型的渲染状态,如使用的材质、使用的纹

2022-03-26 13:13:03 4666

原创 【LearnOpenGL学习笔记】——01.初始窗口的绘制

文章目录1.绘制过程2.代码展示3.运行结果 1.绘制过程 ①glfw的初始化与配置 ②glfw窗口创建 ③glad加载OpenGL的函数指针 ④渲染循环(渲染命令在这) ⑤释放资源 2.代码展示 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream> //初始窗口绘制 //Callback Function:窗口大小被调整时调用 void framebuffer_size_callback

2022-03-26 12:45:20 141

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除