QT with OpenGL(Shadow Mapping)(平行光篇)-卡核

QT with OpenGL(Shadow Mapping)(平行光篇)

一. 给平行光添加阴影 1. 生成一张深度帧缓存 glwidget.h //-----------------测试参数 QOpenGLFramebufferObject* depthMapFBO; const unsigned int SHADOW_WIDTH = 1024, SHADOW_HEIGHT ...
2年前
0990
第二十一课,几何着色器(使用篇-法向量可视化)-卡核

第二十一课,几何着色器(使用篇-法向量可视化)

法向量可视化 绘制物体绘制物体法向量 VS #version 450 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aNormal; out VS_OUT { vec3 normal; } vs_out; un...
2年前
0410
第二十一课,几何着色器(使用篇-爆破效果)-卡核

第二十一课,几何着色器(使用篇-爆破效果)

爆破效果 原理: 将每一个片元沿三角形法向量方向移动一段距离 核心代码 + 避坑点: .vert #version 450 core layout (location = 0) in vec3 aPos; layout (location &#...
2年前
0420
第二十一课,几何着色器(基础篇)-卡核

第二十一课,几何着色器(基础篇)

几何着色器的作用 输入 输入类型 从顶点着色器接收下列任何一个图元值: 类型数组大小points:绘制GL_POINTS图元时。1lines:绘制GL_LINES或GL_LINE_STRIP时2lines_adjacency...
2年前
0640
第二十课,高级GLSL-卡核

第二十课,高级GLSL

内建变量 已知 gl_Position 顶点着色器的裁剪空间输出位置向量 FragColor 片元着色器的片元输出颜色值 未知 顶点着色器变量 gl_PointSize GLSL定义了一个叫做gl_PointSize输出变量,它是...
2年前
0400
第十九课,高级数据(数据存储)-卡核

第十九课,高级数据(数据存储)

以下为一些对数据存储原理的自我推断,如有错误,还请指正。 数据原理 数据定义 命名一个unsigned int类型变量 GLuint VBO,EBO,VAO; 将EBO定义为gpu内存中的数据区块地址。 glGenBu...
2年前
0310
第十八课,立方体贴图(环境映射)-卡核

第十八课,立方体贴图(环境映射)

使用立方体贴图,还可以给物体反射和折射的属性。 反射 片元着色器 #version 450 core out vec4 FragColor; in vec3 Normal; in vec3 Position; uniform vec3 cameraPos; uniform sampler...
2年前
0690
第十八课,立方体贴图(加载天空盒)-卡核

第十八课,立方体贴图(加载天空盒)

原理我在这里不再过多叙述,主要从代码的运行方向来解读立方体贴图 添加天空盒顶点 float skyboxVertices[] = { // positions -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0...
2年前
01470
第十七课,帧缓存(后期处理)-卡核

第十七课,帧缓存(后期处理)

反向 void main() { FragColor = vec4(vec3(1.0 - texture(screenTexture, TexCoords)), 1.0); } 灰度 均分灰度 void main() { FragColor = texture(screenTexture, TexCoords); floa...
2年前
0750
第十七课,帧缓存(创建和使用方法)-卡核

第十七课,帧缓存(创建和使用方法)

OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。 创建一个帧缓冲 1.创建一个帧缓冲对象(Framebuffer Object, FBO) 创建...
2年前
0840
第十六课,面剔除-卡核

第十六课,面剔除

使用OpenGL的面剔除选项,它默认是禁用状态 glEnable(GL_CULL_FACE); 直接运行后,我们发现正方体的部分面确实被剔除了,但是却不是背向面,这是因为我们定义的正方体...
2年前
0330
第十五课,混合-卡核

第十五课,混合

丢弃片段 将透明度小于一定阈值的片段完全丢弃。 vec4 texColor = texture(texture1, TexCoords); if(texColor.a < 0.1) discard; FragColor = texColor; discard将该点颜色完全丢...
2年前
0630