- NeHe 教程是什么? —— 介绍其历史地位和特点。
- 为什么它如此经典? —— 分析其成功的原因。
- 如何获取和运行 NeHe 教程? —— 提供具体步骤。
- NeHe 教程目录概览 —— 列出核心章节,让你了解学习路径。
- 学习 NeHe 教程的注意事项 —— 现代 OpenGL 开发者必看。
- 从 NeHe 到现代 OpenGL 的学习路径建议 —— 帮助你平滑过渡。
NeHe 教程是什么?
NeHe 教程是由 Jeff Molofee(网名 NeHe)在 1999 年左右创建的一系列 OpenGL 编程入门教程,它最初发布在 GameDev.net 上,以其简洁、直观、易于理解的特点,迅速成为了全世界无数 OpenGL 初学者的“第一课”。

这些教程的特点是:
- 基于 Win32 API:早期的教程主要使用 C++ 和 Windows 的 Win32 API 来创建窗口和处理消息。
- 代码精简:每个教程都专注于一个或两个特定的 OpenGL 概念,代码量不大,易于消化。
- 即时反馈:你几乎可以立刻看到代码修改后的视觉效果,学习成就感强。
- 全球社区:形成了庞大的学习社区,有无数的翻译版本(包括中文)、改进代码和讨论。
对于任何一个想学习 3D 图形编程的人来说,NeHe 都是一个绕不开的名字。
为什么它如此经典?
NeHe 的成功并非偶然,它完美地契合了那个时代的需求和教学理念:
- 循序渐进:从创建一个窗口、画一个三角形开始,逐步过渡到光照、纹理、混合、模型加载等复杂主题,学习曲线设计得非常合理。
- “Hello, World”式的入门:第一课就教你如何创建一个黑色的 OpenGL 窗口并让它旋转,这解决了初学者“如何让程序跑起来”的最大障碍,建立了信心。
- 专注核心概念:每一课都剥离了复杂的框架,直接让你看到 OpenGL API 的调用和效果,第 7 课就是专门讲“纹理映射”,让你明白如何将一张图片贴到 3D 物体上。
- 强大的社区支持:在那个互联网还不像今天发达的年代,NeHe 的论坛和邮件列表是开发者交流的重要平台,遇到问题,很容易找到解决方案。
如何获取和运行 NeHe 教程?
现在直接找到原始的 Win32 项目源码并配置环境可能会有些麻烦,以下是几种推荐的获取和运行方式:

使用现成的现代化项目(最推荐)
为了解决环境配置难题,许多开发者已经将 NeHe 教程移植到了现代的图形库和开发环境中。
-
GitHub - opengl-sdk/NeHe-Tutorials: 这是一个非常优秀的项目,它将 NeHe 的 48 个教程用 C++ 和 GLFW(一个现代化的窗口和输入库)重新实现了一遍,你可以直接下载或克隆这个仓库,然后使用 CMake 构建项目,一键运行。
- 链接:https://github.com/opengl-sdk/NeHe-Tutorials
- 优点:环境配置简单,代码结构清晰,是学习 NeHe 概念的最佳实践。
-
GitHub - LearnOpenGL-CN/LearnOpenGL: 虽然这是现代 OpenGL 教程,但它的代码结构清晰,并且基于 GLFW 和 GLAD,如果你对 NeHe 的概念已经有一定了解,可以直接转向这个更现代的教程。
寻找原始 Win32 版本
如果你对 Windows 历史和 Win32 API 感兴趣,可以尝试搜索原始代码。

- NeHe 官方存档:
NeHe 的原始网站已经不再维护,但内容被归档在 GameDev.net 上。
- 链接:https://www.gamedev.net/tutorials/ (在搜索框中输入 "NeHe" 可以找到部分教程)
- 个人网站和博客: 许多老程序员在自己的网站上保留了 NeHe 教程的中文翻译和代码,你可以通过搜索引擎寻找。
运行步骤(以现代化 GLFW 版本为例):
-
安装依赖:
- C++ 编译器:如 Visual Studio, MinGW (g++)。
- CMake:用于构建项目。
- GLFW:用于创建窗口。
- GLAD:用于加载 OpenGL 函数指针。
- GLM (OpenGL Mathematics):一个用于 3D 数学计算的库(向量、矩阵等)。
这些依赖通常在 NeHe-Tutorials 的
README.md中都有详细说明。
-
克隆/下载代码:
git clone https://github.com/opengl-sdk/NeHe-Tutorials.git
-
构建项目: 进入项目目录,创建一个
build文件夹,然后用 CMake 配置和生成项目。cd NeHe-Tutorials mkdir build cd build cmake .. # 如果是 Visual Studio cmake --build . # 如果是 Makefile make
-
运行: 在
build目录下找到生成的可执行文件(如Lesson01.exe),双击运行,你将看到一个黑色的旋转窗口。
NeHe 教程目录概览
以下是 NeHe 教程的核心内容脉络,你可以感受到其学习的递进性:
-
第 1-6 课:基础入门
Lesson01: 创建 OpenGL 窗口。Lesson02: 绘制一个 3D 立方体并让它旋转。Lesson03: 处理键盘输入,实现立方体的移动。Lesson04: 添加颜色,让立方体的每个面颜色不同。Lesson05: 透视投影,让场景看起来更真实。Lesson06: 旋转三角形和四边形,理解顶点数组。
-
第 7-12 课:纹理与光照
Lesson07: 纹理映射,将图片贴到立方体上。Lesson08: 纹理过滤,让纹理在不同距离下都清晰。Lesson09: 光照基础,环境光和漫反射。Lesson10: 光照应用,在旋转的茶壶上应用光照。Lesson11: 混合,实现透明效果。Lesson12: 纹理对象,优化纹理加载。
-
第 13-20 课:高级技巧与效果
Lesson13: 坐标变换,理解模型、视图、投影矩阵。Lesson14: 键盘控制,实现第一人称视角的移动。Lesson15: 3D 模型加载,从文件中加载 3D 对象。Lesson16: 粒子系统,创建简单的火焰或雪花效果。Lesson17: 雾化效果。Lesson18: 坐标系统,深入理解glTranslatef,glRotatef等。Lesson19: 投影与裁剪,更深入地理解投影矩阵。Lesson20: 拾取,实现鼠标点击 3D 物体的功能。
-
第 21-48 课:专题与扩展
后续课程涵盖了天空盒、球体生成、字体渲染、碰撞检测、使用 SDL 等库、使用 GLUT、以及一些更高级的着色器概念(这是非常前瞻性的内容)。
学习 NeHe 教程的注意事项 ⚠️
NeHe 教程是学习 OpenGL “概念” 的绝佳资源,但绝对不适合作为现代 OpenGL 开发的直接代码参考。 这是因为它使用的是 立即渲染模式,这种模式在现代 OpenGL (3.3+) 中已经被废弃。
主要区别:
| 特性 | NeHe 教程 (立即模式) | 现代 OpenGL (核心模式) |
|---|---|---|
| 渲染方式 | glBegin(GL_TRIANGLES); ... glEnd(); |
使用 VAO (顶点数组对象) 和 VBO (顶点缓冲对象) 在 GPU 上批量上传数据。 |
| 矩阵变换 | 使用 glMatrixMode, glLoadIdentity, glTranslatef 等 固定功能管线。 |
使用 GLM 等数学库在 CPU 端计算矩阵,然后通过 Uniform 变量 传入着色器。 |
| 光照/纹理 | 由 OpenGL 固定功能自动处理。 | 在 着色器 中用代码手动实现所有光照和纹理逻辑。 |
| 可编程性 | 几乎没有,功能固定。 | 完全可编程,所有渲染效果都由开发者编写的 顶点着色器 和 片段着色器 控制。 |
- 学什么? 学习 NeHe 是为了理解 3D 图形学的基本概念:什么是顶点、什么是纹理、什么是光照、什么是透视投影、什么是模型视图矩阵,这些概念在今天是完全通用的。
- 怎么用? 不要直接复制 NeHe 的
glBegin和glMatrixMode代码到你的新项目中,你应该用 NeHe 教会你的“为什么”,去学习现代 OpenGL 的“怎么做”。
从 NeHe 到现代 OpenGL 的学习路径建议
这是一个平滑的过渡路线,可以让你既打下坚实基础,又不被过时的技术拖累:
-
通过 NeHe 建立概念 (1-2 周)
- 目标:理解 3D 图形的基本流程和核心概念。
- 行动:快速浏览 NeHe 的前 20 课。不要纠结于代码实现,而是专注于理解每个教程实现了什么效果,以及它背后的原理(纹理就是一张贴图,光照让物体有立体感)。
- 资源:NeHe-Tutorials (GLFW版) 用于对照概念。
-
学习现代 OpenGL 基础 (2-4 周)
- 目标:掌握核心模式下的基本工作流程。
- 行动:开始学习现代 OpenGL 教程,强烈推荐 LearnOpenGL-CN。
- 资源:LearnOpenGL-CN
- 重点学习:
- Hello Window:如何用 GLFW 创建窗口。
- Hello Triangle:理解 VAO, VBO, EBO 和着色器的基本用法。
- Shaders:深入理解顶点和片段着色器。
- Textures:如何加载和使用纹理。
- Coordinate Systems:如何使用 GLM 进行矩阵变换和透视投影。
-
项目实践与深化 (长期)
- 目标:将所学知识应用到实际项目中,并探索更高级的主题。
- 行动:
- 尝试自己实现一个简单的 3D 场景,比如一个带纹理和光照的旋转立方体。
- 学习加载 3D 模型文件(如 OBJ)。
- 学习使用 PBR (基于物理的渲染) 等更高级的渲染技术。
- 阅读图形学经典书籍,如《Real-Time Rendering》和《OpenGL 编程指南》(俗称“红宝书”)。
把 NeHe 教程 当作一本 “图形学概念图解”,把 LearnOpenGL-CN 当作一本 “现代 OpenGL 开发手册”,先用前者建立宏观认知,再用后者学习具体实现,这是目前最高效、最扎实的 OpenGL 学习路径。
