OpenGL

第八课,OpenGL光照之基本光照-卡核

第八课,OpenGL光照之基本光照

冯氏光照模型(Phong Lighting Model) 环境光照(Ambient Lighting):即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0510
第十课,OpenGL光照之贴图-卡核

第十课,OpenGL光照之贴图

光照贴图 光照贴图,及使用纹理代替物体颜色,物体的实际颜色由物体材质和光照决定。 漫反射贴图 使用一张覆盖物体的图像,让我们能够逐片段索引其独立的颜色值。 方式 1 将...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0470
第六课,OpenGL的3D坐标系统-卡核

第六课,OpenGL的3D坐标系统

启动深度测试 glEnable(GL_DEPTH_TEST); 启动3D深度测试,绘制的图形不会因为先后顺序改变。 模型矩阵 glm::mat4 mode = glm::mat4(1.0f); mode = glm::rotate(mode, (float)gl...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0470
第二十四课、二十五课,高级光照(blinn),Gamma矫正-卡核

第二十四课、二十五课,高级光照(blinn),Gamma矫正

高级光照(blinn) 这里主要是矫正了,视口方向和反射方向夹角太小造成的阴影轮廓现象。 但是在我的项目中,只要给blinn光照的shiness乘4,基本与冯氏光照没有区...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0460
第十二课,assimp模型加载(绘制篇)-卡核

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

首先创建模型渲染管线 Shader ourShader("1.model_loading.vs", "1.model_loading.fs"); vertexShader #version 330 core layout (location = 0) in vec3 aPos; layou...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0440
第二课,OpenGL第一个三角形的流程-卡核

第二课,OpenGL第一个三角形的流程

本篇文章不按照代码的顺序编写,而按照数据的走向流程编辑。 1 顶点输入 GLfloat vertices[] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f }; 使用GLfloat数组记录...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0431
第七课,OpenGL之摄像机类-卡核

第七课,OpenGL之摄像机类

类参数 private: glm::vec3 cameraPosi; glm::vec3 cameraFocus; glm::vec3 cameraUp; glm::vec3 dirZ;//正向 glm::vec3 dirX;//右向 glm::vec3 dirY;//上方 定义cameraPosi,cameraFocus,及came...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0420
第二十一课,几何着色器(使用篇-爆破效果)-卡核

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

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

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

法向量可视化 绘制物体绘制物体法向量 VS #version 450 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aNormal; out VS_OUT { vec3 normal; } vs_out; un...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0400
第二十课,高级GLSL-卡核

第二十课,高级GLSL

内建变量 已知 gl_Position 顶点着色器的裁剪空间输出位置向量 FragColor 片元着色器的片元输出颜色值 未知 顶点着色器变量 gl_PointSize GLSL定义了一个叫做gl_PointSize输出变量,它是...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0400
第十三课,深度测试-卡核

第十三课,深度测试

开启深度测试 glEnable(GL_DEPTH_TEST); 清除深度缓存 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 深度测试函数 OpenGL允许我们禁用深度缓冲的写入,只需要设置它的深度掩码(D...
Elsa的迷弟的头像-卡核Elsa的迷弟2年前
0360
第十六课,面剔除-卡核

第十六课,面剔除

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