下载本文的PDF版本 PDF

让您的图形动起来:OpenGL 随时代进步
Alexander Wolfe,科学撰稿人

OpenGL,这个有着十年历史的图形应用程序编程接口(API)之母,正在进行两项重大更新,以使其进入21世纪。

OpenGL 被其支持者准确地誉为开发可移植、交互式 2D 和 3D 图形应用程序的首要环境,它配备了广泛的渲染、纹理映射、特效和可视化功能。然而,面对来自微软 DirectX 和 D3D 产品在桌面领域的日益激烈的竞争,OpenGL 有些过时了。

因此,OpenGL 架构评审委员会(成立于 1992 年的独立联盟,旨在指导 API 的未来发展,该 API 最初由 Silicon Graphics 开发并仍归其所有)已在桌面和工作站领域积极推进,以提供名为 OpenGL Shading Language 的可编程实现。

与此同时,一个名为 Khronos 的衍生组织已经成立,旨在将 OpenGL 品牌扩展到新兴的微型设备世界,如手机和掌上游戏设备。在那里,它以名为 OpenGL ES 的新 API 的形式出现,ES 代表“嵌入式系统”。

掌上设备活动刺激新规范

最近在拉斯维加斯举行的消费电子展(CES)构成了 Khronos 的公开亮相。OpenGL ES 1.0 规范本身实际上已于 2003 年 7 月在圣地亚哥的 Siggraph 大会上公开。但 CES 展会上发布了首批执行利用该规范的应用程序的产品,从而使其从纸上谈兵转变为真正的 3D 嵌入式引擎。

最初,ES 支持以软件引擎的形式出现。德州仪器和 Symbian 已经开发了基于 OpenGL ES 1.0 的 3D 图形库插件,用于配备德州仪器 OMAP 数字信号处理器的 Symbian OS 移动电话。此外,Fathammer 已将 OpenGL ES 集成到其 X-Forge 游戏软件开发工具包(SDK)中,该工具包用于为诺基亚 N-Gage 掌上无线游戏设备开发应用程序。

为了符合其嵌入式设计目标,这些 ES 工程师正在保持紧凑的占用空间——在目标平台上大约 100 千字节的常驻内存。

此类软件之后,将在今年晚些时候推出更快的专用集成电路和内核(后者是知识产权,可以转化为可工作的硅芯片),目前正在 ATI、NeoMagic、Takumi 和 3Dlabs 本身进行开发。

OpenGL ES 的支持者认为它将迅速进入嵌入式领域的真空地带。迄今为止,符合 Java 标准的 3D 图形以 Java 3D API 的形式出现。然而,许多开发人员认为 Java 3D 的级别太低。ES 可能在 Java 领域获得应用的一个初步迹象是,Sun Microsystems 和 Silicon Graphics 计划合作开发从移动 J2ME 运行时环境到 OpenGL ES 的绑定。

就微软而言,它正在开发一种具有竞争力的产品,即 D3D Mobile。该 API 是 DirectX 的嵌入式版本;然而,预计 D3D Mobile 将与微软的嵌入式操作系统产品(如 Windows CE 和 Smartphone)紧密相连。因此,它可能需要很长时间才能迁移到 Symbian 手机等基于 Java 的设备。

如果这看起来像是对微软的抨击,那么同时考虑到 Redmond 在工具支持方面可能处于更有利的位置。微软可以轻松地将 D3D 支持整合到 Visual Studio 和 .NET Framework 中。相比之下,OpenGL 架构评审委员会不会成为负责将 OpenGL ES 支持构建到任何流行的 IDE(集成开发环境)中的一站式商店。相反,这种支持将来自第三方提供的多个插件,例如提供各种 ES 软件和硬件引擎的供应商。

可编程性开始流行

2004 年标志着在计算受限的掌上设备上实现良好 3D 图形的起步,它也将见证桌面设备向可编程性的转变,桌面设备作为一个类别,最终拥有足够的图形引擎实力来支持这种转变。

“在过去的 18 个月中,桌面端在使[图形]硬件可编程方面进行了大量活动,”芯片制造商 3Dlabs 的高级副总裁 Neil Trevett 解释道,他在桌面图形方面拥有专业知识,并且作为 OpenGL ES 工作组主席,也是嵌入式端的关键贡献者。“图形芯片正变得越来越像 CPU:它是多线程的,它具有虚拟内存,它具有任务间安全性,并且它可以用类似 C 的语言编程。唯一的区别是图形 IC 非常并行(与主微处理器相反),这是它们可以更有效地执行图形所必需的。”

OpenGL Shading Language,也称为 OpenGL 2.0(见图 1),应运而生。该版本将在几个月后发布,将为 OpenGL 带来高级着色可编程性。它将公开一个非常类似 C 的 API,并为软件开发人员提供对大量图形操作的访问。

标准 OpenGL 提供了一组固定的功能。这种限制是由于需要大量的计算能力才能将多边形显示在屏幕上。然而,现在图形板和 IC 足够强大,可以从主微处理器(又名 Pentium)卸载 3D 处理,OpenGL 2.0 能够让程序员更灵活地做事,而不用担心拖慢计算机的速度。

因此,2.0 将为当前可用的一些固定功能提供可编程的替代方案。例如,程序员将能够显式地深入了解顶点处理和片段处理等事物的本质。这将使他们能够根据自己的需要修改事物,或针对特定的硬件配置调整性能。

OpenGL 2.0 实现了所谓的直接编译模型——也就是说,符合 2.0 标准的驱动程序将附带内置编译器。这意味着给定的图形硬件/驱动程序组合将获取其 OpenGL 源代码,并将其直接编译为在图形硬件上运行的机器代码。(编译器本身将由各个图形芯片供应商提供。)

“在未来一两年内,我认为您将会看到各种各样的应用程序将您的图形板用作超级计算机,”Trevett 热情地说。

实时渲染即将到来

转向可编程性正值专业图形开发人员准备取得重大进展之际。考虑到目前,动画电影是使用大型渲染农场制作的——大量的工作站集群,它们处理多边形以创建电影的各个帧。由于需要大量的计算能力,渲染农场通常离线运行,将一天的工作转换为隔夜的帧,以便在动画师早上回来时可以使用。

Trevett 说,最近,照片级真实感社区对使用新发现的图形可编程性实时制作像《玩具总动员》(2001 年)这样的电影产生了兴趣。“那是每个人都在追求的梦想,”他说。目标是采用工业级软件——比如《玩具总动员》制作商 Pixar 使用的 Renderman 软件包——并通过可编程性在图形芯片上加速它。

结果将是渲染一部电影所需的更少的工作站,并且每帧渲染的成本将显着降低。

从长远来看,Trevett 认为图形软件不会停滞不前。“无论是在算法还是硬件方面,我们尚未达到稳定状态,”他说。“我认为 20 年后,当我们回顾过去时,会对事物的原始程度感到惊讶。软件社区仍在进行极其创新的工作。这说明了 3D 图形背后的基本市场驱动力。”

最直接的是,软件开发人员可以在 Khronos 网站上访问 OpenGL ES 采用者软件包。可以在 ATI Technologies 网站上查看 OpenGL ES 代码示例。该示例是一个为 Windows CE 4.2 编写的 OpenGL ES 应用程序,它展示了 OpenGL ES 的初始化、一些上下文和表面的创建以及一些常用分析函数的使用。

OpenGL Shading Language 的规范可在 OpenGL 网站上找到。在 OpenGL 组的论坛中可以找到对其功能的经常激烈的讨论。

参考文献

1. OpenGL:参见 http://www.opengl.org/

2. Silicon Graphics (SGI):参见 http://www.sgi.com/

3. Khronos Group:参见 http://www.khronos.org/

4. Siggraph 2003:参见 http://www.siggraph.org/s2003/

5. 德州仪器:参见 http://focus.ti.com/docs/pr/pressrelease.jhtml?prelId=sc03095&prSection=overview

6. Symbian:参见 http://www.symbian.com/news/2003/pr030429c.html

7. Fathammer:参见 http://www.fathammer.com/

8. 诺基亚 N-Gage:参见 http://www.n-gage.com/R1/en/home.html

9. Wolfe, A. “Java is jumpin’, this time for real,” 1,10 (2004 年 2 月), 17-19。

10. Neil Trevett 的引言来自 2004 年 1 月 2 日与作者的电话交谈。

11. 有关描述 OpenGL 2.0 的演示文稿,请访问 3Dlabs 网站: http://www.3dlabs.com/support/developer/ogl2/presentations/index.htm

12. 参见参考文献 9。

13. 参见参考文献 9。

14. 参见参考文献 9。

15. 要下载 OpenGL ES 采用者软件包,请访问 Khronos 网站: http://www.khronos.org/opengles/become_opengles_adopter.html

16. 要查看示例代码,请访问 ATI 网站: http://www.ati.com/developer/indexsc.html#opengl

17. OpenGL Shading Language 的规范可在 OpenGL 网站上获得: http://www.opengl.org/documentation/oglsl/ShaderSpecV1.051.pdf

18. OpenGL 组论坛: http://www.opengl.org/discussion_boards/cgi_directory/forumdisplay.cgi?action=topics&number=7

ALEXANDER WOLFE 获得了纽约市库珀联盟学院的电气工程学位。他是一位科学撰稿人,居住在纽约州森林小丘,曾为 IEEE Spectrum、EE Times、Embedded Systems Programming 和 Byte.com 撰稿。

acmqueue

最初发表于 Queue 第 2 卷,第 1 期
数字图书馆 中评论本文





更多相关文章

David Crandall, Noah Snavely - 使用互联网照片集建模人物和地点
本文介绍了我们如何使用在线照片集来重建关于世界及其居民在全球和本地范围内信息的工作。这项工作受到社交内容共享网站的显着增长的推动,这些网站创建了大量的用户生成视觉数据在线集合。仅 Flickr.com 目前就托管了超过 60 亿张由超过 4000 万独立用户拍摄的图像,而 Facebook.com 表示其每天增长近 2.5 亿张照片。


Jeffrey Heer, Ben Shneiderman - 用于视觉分析的交互式动态
数字数据规模和可用性的增加为公共政策、科学发现、商业策略甚至我们的个人生活提供了非凡的资源。然而,为了充分利用这些数据,用户必须能够理解它:追寻问题、发现感兴趣的模式并识别(并可能纠正)错误。与数据管理系统和统计算法相结合,分析需要对数据中发现的集群、趋势和异常值的特定领域意义进行情境化的人工判断。


Robert DeLine, Gina Venolia, Kael Rowan - 使用代码地图进行软件开发
为了更好地了解专业软件开发人员如何使用其代码的可视化表示,我们采访了微软的九位开发人员以确定常见场景,然后调查了 400 多位开发人员以更深入地了解这些场景。


Brendan Gregg - 可视化系统延迟
当 I/O 延迟以可视化热图的形式呈现时,可能会出现一些有趣而美丽的模式。这些模式提供了对系统实际性能以及最终用户应用程序体验到的延迟类型的深入了解。在这些模式中看到的许多特征仍然不为人所知,但到目前为止,它们的分析正在揭示以前未知的系统行为。





© 保留所有权利。

© . All rights reserved.