可以说,NeHe 教程是无数 OpenGL 开发者的“圣经”和入门启蒙,无论你现在使用的是现代 OpenGL (3.0+) 还是其他图形 API,了解 NeHe 教程所蕴含的思想和它所解决的问题,都对你理解图形学编程大有裨益。

NeHe 教程是什么?
NeHe 教程是由 Jeff Molofee (网名 NeHe) 在 1999 年左右创建的一系列 OpenGL 编程教程,它以 C 语言 + Win32 API 的形式,将复杂的 OpenGL API 拆解成一个个简单、可运行的示例程序。
核心特点:
- 循序渐进:从最简单的“画一个三角形”开始,逐步深入到纹理映射、光照、混合、粒子系统、天空盒等高级主题。
- 代码驱动:每个教程都提供一个完整、可编译的 C 语言项目,读者可以立即运行、修改和实验,学习效果立竿见影。
- 社区驱动:在鼎盛时期,每个教程都有来自全球开发者的大量留言,提供了在 Windows、Linux、Mac 甚至其他编程语言(如 C++、C#、Java、Python、Delphi)上的移植版本和优化方案,这使得 NeHe 成为了一个巨大的知识库。
- 经典范例:它所使用的许多技术(如旋转的立方体、带纹理的茶壶、粒子效果等)成为了图形学编程的经典入门范例,至今仍在各种教程和项目中被引用。
NeHe 教程的重要性与历史地位
- 启蒙之光:在 2000 年初,互联网上系统化的图形学编程资源非常稀缺,NeHe 教程以其清晰的结构和实用的代码,为无数初学者打开了通往 3D 图形世界的大门。
- 时代的产物:它完美地代表了 “立即模式” (Immediate Mode) OpenGL 的编程风格,在这种模式下,开发者需要不断地调用
glBegin()和glEnd()来绘制图元,并维护大量的状态(如当前颜色、纹理、矩阵等)。 - 思想基石:即使现代 OpenGL 已经完全抛弃了立即模式,转向了更复杂但更强大的“核心模式” (Core Profile),NeHe 教程中讲解的图形学基本概念——模型视图投影矩阵、纹理坐标、光照计算、深度测试等——依然是所有现代图形 API 的基石。
NeHe 教程的局限性(为什么现在看它会觉得过时?)
NeHe 教程的辉煌时代已经过去,对于现代开发者来说,它存在一些明显的局限性:
- API 过时:它使用的是 OpenGL 1.x 的 API,现代 OpenGL (3.0+) 推荐使用 着色器 和 核心模式,完全摒弃了
glBegin(),glutSolidCube()等立即模式函数,直接学习 NeHe 的代码会让你养成一些在现代 OpenGL 中需要极力避免的坏习惯。 - 平台依赖:教程基于 Win32 API,代码中包含了大量的窗口创建、事件处理等与 Windows 系统相关的代码,这使得跨平台学习变得困难。
- 设计模式陈旧:代码结构比较直接,没有使用现代 C++ 的特性(如类、RAII、智能指针等),对于现代软件工程实践来说不够规范。
- 依赖 GLUT:早期教程使用了 GLUT (OpenGL Utility Toolkit) 来简化窗口和输入管理,虽然 GLUT 很方便,但它本身也是一个过时的库。
NeHe 教程是学习“图形学思想”的经典,但不是学习“现代 OpenGL 编程”的最佳起点。

如何正确地看待和使用 NeHe 教程?
对于今天的初学者,我建议以下两种学习路径:
如果你是图形学初学者,想快速建立概念
- 快速浏览,理解概念:不要逐行敲代码,直接下载 NeHe 的源码,编译运行,观察每个示例的效果。
- 阅读讲解,理解原理:重点阅读每个教程的文字说明,理解它背后的数学和物理概念,教程 6 (纹理映射) 告诉你什么是纹理坐标;教程 7 (光照) 告诉你什么是法线、光源和材质。
- 抛弃旧 API,用现代方式实现:理解了概念后,尝试用 现代 OpenGL (3.0+) + C++ + GLFW/SDL (窗口库) + GLM (数学库) 重新实现这些经典效果,这个过程会让你深刻体会到“立即模式”和“核心模式”的区别,以及为什么我们需要着色器。
如果你是经验丰富的开发者,想回顾历史或寻找灵感
- 作为参考:当你忘记某个经典效果(如天空盒、简单粒子系统)的实现思路时,可以回头看看 NeHe 的教程,它能快速唤起你的记忆。
- 寻找灵感:NeHe 教程的很多创意和效果组合在今天看来依然很酷,可以为你自己的项目提供灵感。
NeHe 教程目录概览(48个经典教程)
这里列出部分核心教程,让你对其内容有个了解:
- 01-05: 基础设置、三角形、四边形、彩色立方体、旋转立方体。
- 06: 纹理映射 (Texture Mapping) - 经典中的经典。
- 07: 光照 (Lighting) - 引入环境光、漫反射、镜面反射。
- 08: 键盘与鼠标交互 (Keyboard & Mouse Input)。
- 09: 球体与圆环 (Sphere & Torus) - 学习
glutSolidSphere等函数。 - 10-13: 混合、图像处理、透视、运动模糊等特效。
- 14-20: 显示列表、2D 文字、雾效、裁剪面、位图字体、资源文件。
- 21-30: 更高级的主题,如球状映射、凹凸贴图、立方体环境映射、粒子系统、天空盒等。
- 31-48: 更多特效和优化,如镜面反射、运动模糊、阴影、TGA 加载器等。
现代 OpenGL 学习替代方案
如果你决定从现代 OpenGL 开始,这里有一些更优秀的资源推荐:
-
LearnOpenGL (强烈推荐)
(图片来源网络,侵删)- 网址:
https://learnopengl.com/ - 特点: 现代 OpenGL 的“新圣经”,使用 C++ 和 GLFW/SDL,从零开始,讲解清晰,代码质量高,涵盖了从基础到 PBR (基于物理的渲染) 的所有内容。这是目前最适合初学者的现代 OpenGL 教程。
- 网址:
-
OpenGL SuperBible (书籍)
- 特点: 一本非常全面的 OpenGL 参考书,既有基础概念,也有高级技巧,最新版(如第7版)专注于现代 OpenGL。
-
OpenGL 4.0 Shading Language Cookbook (书籍)
- 特点: 如果你已经掌握了基础,这本书专注于教你如何用 GLSL (OpenGL Shading Language) 解决各种具体的渲染问题。
-
各类视频教程
- B站/YouTube: 搜索 "Modern OpenGL Tutorial" 或 "OpenGL Shader Programming",有很多优秀的视频教程,"The Cherno" 的 OpenGL 系列就非常不错。
NeHe 教程是一座不朽的丰碑,它代表了那个时代图形学编程的探索精神和社区力量。 尽管它的技术已经过时,但它所传递的图形学核心思想永不过时。
对于今天的学习者,最好的方式是:怀着敬意学习 NeHe 的思想,然后用现代的工具和 API 去实践它。 先从 LearnOpenGL 这样的现代教程入手,打下坚实的基础,当你遇到瓶颈时,再回头看看 NeHe 教程,或许会有新的收获。
