- 博客(17)
- 收藏
- 关注
原创 OpenGL光照渲染:漫反射+高光+纹理贴图完整解析
我们实现的是Phong光照模型分量作用视觉效果环境光 Ambient模拟间接照明让物体暗部不至于全黑漫反射 Diffuse模拟粗糙表面反射面向光源的一面更亮镜面高光 Specular模拟光滑表面反光产生高光亮点。
2026-04-17 19:43:29
661
1
原创 OpenGL入门:手把手教你实现3D光照效果(含完整代码解析)
作为一名OpenGL小白,当我第一次看到光照相关的代码时,整个人是懵的——为什么要多出那么多顶点数据?那个小方块是什么?法线又是干什么用的?如果你也有同样的困惑,这篇文章就是为你准备的。我将通过一个完整的示例,带你逐行理解OpenGL中基本光照的实现。最终效果:一个受光照影响的彩色立方体 + 一个表示光源位置的小方块,支持摄像机移动。
2026-04-15 19:17:40
962
原创 OpenGL新手入门:深入理解摄像机与光源系统
摄像机和光源。本文将以实际代码为例,详细解析这两个核心系统的实现原理。理解了它们,你就掌握了3D场景的“眼睛”和“灵魂”。摄像机系统让你能够“走进”3D世界,第一人称控制的核心是:视图矩阵 = 世界→摄像机坐标的转换投影矩阵 = 实现透视效果deltaTime = 平滑的帧率无关移动光源系统让3D世界有了灵魂,核心要点是:用两个物体分别表示“光源”和“受光物体”用两套着色器分别处理光照计算和纯色渲染通过uniform传递颜色信息到着色器。
2026-04-10 21:02:33
376
原创 OpenGL摄像机入门:让你的3D世界动起来
能不能像玩游戏一样,自由地观察这个3D世界?答案是肯定的!这就是摄像机(Camera)的作用。今天,我就用最通俗的方式,带你理解OpenGL中的摄像机系统。简单来说,摄像机定义了我们从哪个位置、朝哪个方向、以什么姿态观察场景。在OpenGL中,没有真正的“摄像机对象”。我们通过创建一个观察矩阵(View Matrix)来模拟摄像机,这个矩阵会把世界坐标变换到观察坐标。摄像机系统的核心就是三个矩阵矩阵作用类比Model摆放物体把家具搬到房间里View放置摄像机选择站在哪里看。
2026-04-09 12:51:06
347
原创 OpenGL摄像机系统完全解析:从零实现3D场景漫游
OpenGL的摄像机系统本质上是通过矩阵变换实现的“虚拟眼睛”。理解三个核心向量(位置、朝向、上向量)和LookAt矩阵是关键。通过WASD控制移动、鼠标控制旋转、滚轮控制视野,就能实现完整的3D场景漫游体验。记住最重要的公式:最终顶点位置 = 投影矩阵 × 视图矩阵 × 模型矩阵 × 原始顶点位置这个矩阵乘法链条,就是3D图形学的核心精髓。希望这篇文章能帮助你迈出OpenGL学习的重要一步!OpenGL初始化流程:GLFW初始化 → 创建窗口 → GLAD初始化顶点数据处理。
2026-04-08 20:08:05
615
原创 glm这个变换矩阵只会出现在while循环中吗?
情况计算位置原因静态物体while循环外变换不变,避免重复计算动画物体while循环内每帧都需要新位置投影矩阵while循环外通常不变,除非窗口大小改变跟随鼠标/键盘while循环内需要响应用户输入记住原则变的东西→ 放循环内不变的东西→ 放循环外。
2026-04-08 16:44:43
380
原创 OpenGL坐标变换入门:让2D图片在3D世界中动起来
在学习OpenGL的过程中,我们通常会经历这样一个过程:先学会画一个三角形,然后学会给三角形贴上纹理,再然后... 发现这个三角形只能呆在那里,一动不动。如何让我们的图形动起来?答案就是——坐标变换。本文将从一个初学者的视角,解析如何通过GLM数学库和变换矩阵,让一张简单的纹理图片在屏幕上实现平滑的左右移动。简单来说,矩阵就是一个"数字表格"。在图形学中,我们通常使用4×4矩阵来表示各种变换(平移、旋转、缩放)。// 单位矩阵,就像数字"1"单位矩阵长这样:任何向量乘以单位矩阵,结果不变。
2026-04-07 13:54:09
965
原创 OpenGL 纹理入门:从加载图片到渲染带纹理的矩形
/ ==================== 5. 设置顶点数据(一个矩形,由两个三角形组成)====================// ==================== 3. GLAD:加载 OpenGL 函数指针 ====================-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // 左下角。// ==================== 1. GLFW 初始化与配置 ====================
2026-04-07 11:20:05
1141
原创 深入浅出OpenGL纹理:让3D物体更真实
用生活例子引入:就像给白墙贴壁纸、给手机贴膜对比说明:没有纹理→只有单调颜色;有纹理→真实感暴增技术定义:纹理就是贴在3D模型表面的2D图片。
2026-04-03 15:29:05
392
原创 C++ OpenGL入门:手把手教你封装着色器类
用通俗比喻解释:着色器就像GPU的“小程序”,告诉显卡怎么画东西顶点着色器:处理每个点的位置片段着色器:处理每个像素的颜色隐藏OpenGL复杂调用一个类管理所有着色器完善的错误检查符合C++编程习惯。
2026-04-03 10:21:25
410
原创 OpenGL小白入门:手把手教你实现呼吸灯效果
/ 应该是"time"// ==================== 7. 获取Uniform位置 ====================// 设置最终颜色(alpha=1.0)// ==================== 1. 初始化GLFW ====================// ==================== 3. 初始化GLAD ====================// ==================== 4. 编译着色器 ====================
2026-04-02 14:37:16
439
原创 OpenGL颜色渲染三部曲:从静态到动态的进阶之路
固定颜色是最简单直接的方式:将颜色值直接写在片段着色器的代码中,编译后就不可改变。顶点属性颜色是为每个顶点单独指定颜色,GPU会在三角形内部自动进行线性插值,产生平滑的渐变效果。Uniform是OpenGL中的全局变量,可以在运行时从CPU动态设置,影响所有使用该着色器的图形。我们将创建一个完整的OpenGL程序,实现一个随时间变化的彩色矩形,综合运用三种颜色设置方式。
2026-04-02 10:17:39
565
原创 从三角形到矩形:OpenGL着色器与图形绘制实战
0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // 0: 左下(红色)0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // 1: 右下(绿色)-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // 左下:红色。0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // 右下:绿色。-0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f, // 左上:蓝色。
2026-04-01 15:10:17
539
原创 OpenGL新手入门:从零开始绘制你的第一个三角形
OpenGL(Open Graphics Library)是跨平台的图形API,广泛应用于:🎮 游戏开发(如《我的世界》Java版)🎬 数据可视化(科研、医疗影像)🖼️ 图形图像处理软件(Blender、CAD)为什么从三角形开始?这是一个将3D坐标转换为2D屏幕像素的流水线过程:顶点着色器:告诉GPU"这些点是三角形的位置"片段着色器:告诉GPU"这些点之间的区域要涂什么颜色"cpp// 初始化GLFW库glfwInit();// 设置OpenGL版本为3.3(核心模式,移除废弃功能)glf
2026-04-01 09:00:18
636
原创 静态链接 vs 动态链接:.lib 和 .dll 到底有什么区别?
静态链接是‘把家当都背在身上’,动态链接是‘走到哪用到哪’。前者省心,后者省空间。
2026-03-31 14:15:06
405
原创 C++开发环境配置:一文讲透“包含目录”、“库目录”、“附加依赖项”到底是啥
描述新手常见场景:跟着教程配环境,把三个路径填完,程序能跑了,但根本不知道为什么?抛出核心问题:为什么需要三个配置?它们之间什么关系?预告本文的讲解方式:用一个贯穿全文的比喻 + 实际编译链接过程来解释“如果你也曾对着VS的属性页发呆,不知道这几栏是干啥的,那这篇文章就是为你写的”预告比喻:“我会用一个借书的比喻,帮你建立直观理解。
2026-03-31 12:21:45
429
原创 学习OpenGL的路径规划
但问题是,我们无法直接通过C++代码调用这些驱动函数(因为每个操作系统的函数地址不同),而且OpenGL本身不提供创建窗口、处理键盘输入的功能。:负责帮我们在运行时获取OpenGL函数地址,解决了“怎么在代码里调用OpenGL指令”的问题。”——因为这是现代OpenGL的开发模式,更灵活但也更严格。:如果使用的是旧电脑,确保显卡驱动已更新,否则可能不支持OpenGL 3.3以上的核心模式。:负责创建窗口、接收鼠标键盘事件,解决了“怎么把图形画出来”和“怎么跟用户交互”的问题。生成,下载一个压缩包。
2026-03-29 11:22:30
1448
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅