65.9K
CodeProject 正在变化。 阅读更多。
Home

OpenGL 开发食谱

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (4投票s)

2013年9月23日

CPOL

5分钟阅读

viewsIcon

30761

对一本关于现代OpenGL应用程序开发非常有意思的书的评测。

引言

最近,通过与 Packt Publishing 的联系,我有机会看了一本关于 OpenGL 的新书。它叫做《OpenGL 开发秘籍》(Opengl Development Cookbook),其中包含了(40个!)关于图形编程的非常有趣的想法。让我们深入书页,看看它真正的价值。

OpenGL 开发食谱

第一点:这本书是一本“食谱”。这意味着我们可以在其中找到许多即用型的方法。更重要的是,这些方法可以直接使用,所以人们可以快速地实现并进行试验。

第二点:作者描述的是现代 OpenGL(3.3 及以上版本),所以我们可以确信其知识和使用的技术都是最新的。另一件相关的事情是,作者 Muhammad Mobeen Movania 拥有高级计算机图形学和可视化专业的博士学位。他在图形编程方面非常精通,并且绝对知道如何在该领域创造令人惊叹的东西。

第三点:读者应该已经熟悉 OpenGL(和 C++)。主题的进展有时非常快。肯定需要了解如何渲染一个四边形和设置一个顶点着色器。

涵盖的项目列表相当令人印象深刻

  • 从基本的项目设置到使用几何着色器渲染网格和进行动态细分。
  • 各种摄像机模型和对象拾取。对任何应用程序都至关重要。
  • 离屏渲染:后期处理效果(如辉光和模糊)以及动态立方体贴图。
  • 基本的 Phong 光照模型,然后是描述 PCF 过滤和方差阴影贴图的项目。
  • 从磁盘加载网格。使用了多种文件格式并进行了描述。
  • 全局光照:GPU 光线追踪、SSAO 和独立于顺序的透明度技术。
  • 使用各种技术进行体积渲染。
  • 在 GPU 上进行物理计算:粒子、蒙皮(甚至涉及双四元数)和简单的布料模拟。
  • 还有更多……

正如你所见,这本书涵盖了对现代图形编程至关重要的非常重要的主题。其中大多数需要嵌入到游戏引擎中。

起初,我怀疑能否在仅 300 页的书籍中涵盖这么多主题并将其打包。然而,作者似乎成功地很好地反驳了我的初步想法。

我喜欢的地方

本书的结构使其很容易理解。开始时,最好阅读引言并熟悉应用程序框架。之后,读者可以按照自己喜欢的顺序阅读。每个项目都以类似的方式编写。我们有以下几个部分:准备就绪、如何操作、工作原理、更多内容和参见。我认为这种安排非常完美。主题当然是由一个人完成的,所以不需要在写作风格之间切换。

绝大多数项目都做得非常好并得到了很好的解释。我特别喜欢关于独立于顺序的透明度(Order Independent Transparency)的章节。你那里有很好的解释、图片、代码(带有附加注释)以及最后的技巧比较。

另一个很棒的项目是关于体积渲染(3D 纹理、光线投射、飞溅)。在阅读本章之前,我认为这样一个主题很难实现。现在,它看起来更简单、更清晰了。对最终输出质量进行了详细讨论。更多的切片(或纹理样本)会带来更好的结果,但性能会下降。

我不会在这里通读所有章节,但总的来说,每个主题都可以是一个进行自己实验的绝佳起点。在每个项目结束时,你都有额外的资源可以查看。例如,在描述动态立方体贴图时,我们会得到如何使用分层渲染和几何着色器来加快该技术速度的提示。

在我看来,选择的技术非常合适。我们有 Visual C++ 2010、freeGLUT、Glm 和 SOIL。这些附加库都很小且非常容易理解(更不用说它们的流行度了)。无需学习任何复杂的框架/引擎。

我不喜欢的地方

主题的层次有时很奇怪。我们有一个 nice and easy 的项目,描述了基础照明,或者一个关于简单粒子系统的项目。在旁边,我们有像 OOIT 使用双深度剥离这样的高级元素,甚至更多,比如光线追踪。我更希望项目在同一水平上。或者至少改变极端之间的“距离”。

再多一些描述会更好。我知道要在仅 300 页的书里压缩所有知识是很难的。但对于一些主题,作者可以付出更多的努力。例如,在处理几何着色器和四边形细分时,一个小小的图示/图像就可以解释更多。这可以让这本书更完整。

还有一些“代码”问题。例如,好几次我们都能看到“反转图像”的代码,这浪费了书中的一些空间。如果以一种更好的方式使用 SOIL 库,可以简化它。另一件事是,当你想要在不同平台上运行代码时,你必须自己创建项目文件。

最后的想法

5 星中的 4 星。

OpenGL 开发秘籍是一本非常好的书。我不能给 5/5 的评分,因为它存在一些瑕疵和一些我认为可以做得更好的地方。不过,这本书填补了该领域的空白。我们有 GPU Pro 这样的非常高级的书,以及像“OpenGL Superbible”这样的初学者书籍。很高兴看到一本介于这两个极端之间的书。

总而言之:这本书绝对值得任何已经学会用 OpenGL 渲染三角形并想更进一步的开发者阅读:)

竞争对手

  • OpenGL Superbible - 一本开始你的 OpenGL 之旅的标准书籍。事实上,在阅读《OpenGL 开发秘籍》之前就可以阅读。
  • OpenGL 着色语言秘籍 - 另一本很棒的食谱!第二版描述了几乎最新的 OpenGL 版本(4.3),并且包含了很多有价值的技巧。

历史

  • 2014 年 4 月 - 链接更新并添加了更多文本
  • 2013 年 9 月 - 初稿,来自原始博客文章。

注意:此评论是发布在我博客上的文章的一个稍作更新的版本:http://www.bfilipek.com/2013/08/book-opengl-development-cookbook.html

© . All rights reserved.