第十八课,立方体贴图(加载天空盒)
原理我在这里不再过多叙述,主要从代码的运行方向来解读立方体贴图 添加天空盒顶点 float skyboxVertices[] = { // positions -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0...
第十八课,立方体贴图(环境映射)
使用立方体贴图,还可以给物体反射和折射的属性。 反射 片元着色器 #version 450 core out vec4 FragColor; in vec3 Normal; in vec3 Position; uniform vec3 cameraPos; uniform sampler...
第十九课,高级数据(数据存储)
以下为一些对数据存储原理的自我推断,如有错误,还请指正。 数据原理 数据定义 命名一个unsigned int类型变量 GLuint VBO,EBO,VAO; 将EBO定义为gpu内存中的数据区块地址。 glGenBu...
第二十课,高级GLSL
内建变量 已知 gl_Position 顶点着色器的裁剪空间输出位置向量 FragColor 片元着色器的片元输出颜色值 未知 顶点着色器变量 gl_PointSize GLSL定义了一个叫做gl_PointSize输出变量,它是...
第二十一课,几何着色器(基础篇)
几何着色器的作用 输入 输入类型 从顶点着色器接收下列任何一个图元值: 类型数组大小points:绘制GL_POINTS图元时。1lines:绘制GL_LINES或GL_LINE_STRIP时2lines_adjacency...
第二十一课,几何着色器(使用篇-爆破效果)
爆破效果 原理: 将每一个片元沿三角形法向量方向移动一段距离 核心代码 + 避坑点: .vert #version 450 core layout (location = 0) in vec3 aPos; layout (location ...
第二十一课,几何着色器(使用篇-法向量可视化)
法向量可视化 绘制物体绘制物体法向量 VS #version 450 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aNormal; out VS_OUT { vec3 normal; } vs_out; un...
QT with OpenGL(Shadow Mapping)(平行光篇)
一. 给平行光添加阴影 1. 生成一张深度帧缓存 glwidget.h //-----------------测试参数 QOpenGLFramebufferObject* depthMapFBO; const unsigned int SHADOW_WIDTH = 1024, SHADOW_HEIGHT ...
第二十二课,实例化(instancing)
概述 对于拥有同一模型数据的物体(例如:草),每一帧需要渲染成百上千的实例,这些渲染几乎可以瞬间完成,但是上千个渲染函数的调用却会造成极大的性能...
第二十三课,抗锯齿(Anti Aliasing)
Anti Aliasing(ˈænti ,ˈeliəsɪŋ )反走样 文章目录 超采样抗锯齿(Super Sample Anti-aliasing, SSAA)多重采样抗锯齿(Multisample Anti-aliasing, MSAA)GLFW中的MSAAO...
第二十四课、二十五课,高级光照(blinn),Gamma矫正
高级光照(blinn) 这里主要是矫正了,视口方向和反射方向夹角太小造成的阴影轮廓现象。 但是在我的项目中,只要给blinn光照的shiness乘4,基本与冯氏光照没有区...
QT with OpenGL(HDR)
借鉴自 https://www.bilibili.com/read/cv11765941/ 文章目录 为什么引入HDR(High Dynamic Range)如何使用更大范围的帧缓存在Qt中使用帧缓存对象构造FBO纹理附件(多纹理绑定及渲染)数据...