自定义博客皮肤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 386

原创 【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 344

原创 【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 464

原创 【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 224

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

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

2022-04-28 17:41:42 737

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

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

2022-04-26 16:32:57 449

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

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

2022-04-25 09:51:54 498

原创 【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 277

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

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

2022-04-15 10:31:25 254

原创 【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 461

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

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

2022-04-12 21:15:22 535

原创 【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 340

原创 【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 584

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

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

2022-04-03 22:04:42 444

原创 【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 116

原创 【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 190

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

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

2022-03-26 14:11:32 4038

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

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

2022-03-26 13:13:03 4255

原创 【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 73

空空如也

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

TA关注的人

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