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

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

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

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

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

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

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

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

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

第十六课,面剔除

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

第十五课,混合

丢弃片段 将透明度小于一定阈值的片段完全丢弃。 vec4 texColor = texture(texture1, TexCoords); if(texColor.a < 0.1) discard; FragColor = texColor; discard将该点颜色完全丢...
第十四课,模板测试-卡核

第十四课,模板测试

当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,会丢弃片段,被保留的片段会进入深度测试。 即,模板测试是在深度测试之前对片段(三角形...
第十三课,深度测试-卡核

第十三课,深度测试

开启深度测试 glEnable(GL_DEPTH_TEST); 清除深度缓存 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 深度测试函数 OpenGL允许我们禁用深度缓冲的写入,只需要设置它的深度掩码(D...
第十二课,assimp模型加载(绘制篇)-卡核

第十二课,assimp模型加载(绘制篇)

首先创建模型渲染管线 Shader ourShader("1.model_loading.vs", "1.model_loading.fs"); vertexShader #version 330 core layout (location = 0) in vec3 aPos; layou...
第十二课,assimp模型加载(数据加载篇)-卡核

第十二课,assimp模型加载(数据加载篇)

大佬讲解入口 OpenGL学习脚印:模型加载初步-加载obj模型(load obj model) ,作者:The fool OpenGL学习脚印-AssImp模型加载 ,作者:The fool 本人主要通过程序流程理...
第十二课,assimp模型加载(配置篇)-卡核

第十二课,assimp模型加载(配置篇)

下载Assimp并使用cmake配置 OpenGL-Assimp库的下载、编译及使用 本人亲测,在自己电脑上不需要DirectX的安装。估计和电脑版本有关,读者自己斟酌是否需要。 cMake及VS编译要尤其注...
第十一课,OpenGL光照之投光物-卡核

第十一课,OpenGL光照之投光物

1.平行光 平行光,即光线方向为定值。 在点光源中,我们通过 lightDir = normalize(light.position.xyz - FragPos);来确定光线照射角度,而在平行光中lightDir(光照角度...