译者序
欢迎来到计算机图形学编程和OpenGL的世界!跟随本书两位作者,你将经历一段奇妙的旅程。
计算机图形学(Computer Graphics,CG)是研究使用计算机创造图形的学科,属于计算机科学的分支。本书涵盖一部分常用的计算机图形学概念和理论,但并不是完整介绍这方面知识的教材。本书的优点是在简明地介绍概念的同时,手把手地讲解OpenGL的基础技术实现。图形学不只是一门学科,也是一项实践技术。工业界对图形学算法和方法的实现往往会为了性能而牺牲完全的精确性。因此,同时理解理论知识和掌握实践技巧,并懂得在应用时如何取舍,是学习图形学编程的重要目标之一。
OpenGL是当今行业中使用最多、功能最强大的图形库吗?很可能不是。OpenGL向前兼容,有不小的历史包袱。它的状态机制也可能导致在某些情境下无谓的性能丧失。更重要的是,当前在工业界有很多更具优势的其他图形库。例如,由操作系统厂商推出的自家图形接口,如Windows下的DirectX、macOS下的Metal等,通常情况下都能实现远高于OpenGL的图形性能;Vulkan之类的图形库又给了开发者对GPU细节更强的掌控力。实际上,在真实的生产环境中使用OpenGL的应用并没有那么多。这是不是意味着初学者应该直接开始学习这些在工作中也许能直接输出价值的技术呢?也很可能不是。
正如前言中两位原作者所述,本书面向的是计算机图形编程初学者。对初学者而言,最重要的是建立对重要概念的全局认知,而不是陷入各种琐碎的API细节中。从这个维度看,OpenGL在一定程度上隐藏了GPU驱动程序的事务性细节,让读者能专注于理解图形学技术及其实现,掌握着色器编程模型和基础技巧,而这些正是会在读者未来学习和工作中发挥基础性和长期性作用的知识。相较于上文所述的其他图形库,OpenGL的学习曲线较为缓和,读者跟随本书的进程能在渐进式的过程中感受到图形编程的全貌,这能为后续对其他图形库的学习打下良好的基础。本书第2版新增的模拟水面、光线追踪、立体视觉等内容都是近期热点话题,虽然有很多硬件或软件的方式能让我们更高效地实现这些场景,但是了解这些技术的原理既对直接应用这些技术有帮助,也能帮读者更进一步练习、巩固学习到的各项技术。
此外,常用于Android设备的OpenGL ES和网页标准WebGL基本上就是OpenGL的子集。在移动和Web端大行其道的今天,如BIM、CIM和数字孪生、智慧城市、数字驾驶舱等应用也常结合基于WebGL的模型可视化和数据可视化技术,OpenGL也有其用武之地。
我们祝愿每一位读者学习顺利,收获长期价值。
魏广程 沈瞳
2021年11月