《OpenGL超级宝典(第5版)》——第1章,第1.3节3D图形的常见用途

简介:

1.3 3D图形的常见用途
在现代计算机应用程序中,三维图形具有广泛的应用。实时3D图形的应用范围包括交互式游戏和模拟以及数据的可视化显示(供科学、医学或商业应用)。高端3D图形在电影以及技术和教育出版物中也具有广泛的应用。

1.3.1 实时3D
如前面所述,实时3D图形是指活动的并与用户进行交互的图形。实时3D图形最早的用途之一是军事飞行模拟器。即使到了今天,飞行模拟器仍然为许多业余爱好者所热衷。图1.10所示显示了一个流行的飞行模拟器的屏幕截图,它使用OpenGL进行3D渲染(www.x-plane.com)。


98cd831cb912124f841d0c961d715e7d989bcfb3

图1.10 一个基于OpenGL的飞行模拟器,由x-plane.com提供

在个人计算机领域,3D图形的应用几乎没有止境。目前最为常见的用途或许是计算机游戏。今天,几乎所有发行的游戏都要求PC装有3D图形卡才能够运行。虽然3D图形在科学视觉和工程应用中也非常流行,但价廉物美的3D硬件的大量涌现使得这些应用空前流行。商业应用程序也利用了3D硬件的新功能,引入了越来越复杂的商业图形和数据库挖掘可视化技术。即使现代的GUI也受到了它的影响,开始利用3D硬件的功能。例如,新的Macintosh OS X使用OpenGL对所有窗口和控件进行渲染,从而创建了功能强大、引人入胜的可视化界面。

图1.11至图1.15所示展示了现代个人计算机上无数3D应用中的一些例子。这些图像绝大多数都是用OpenGL实时渲染的。


1bb9eff1dfe699753e82557b98203aa83363d28c

图1.11 用于计算机辅助设计(CAD)的3D图形(图像由Software Bisque提供)


a81e37767f23f6e9ae70c06d9ca44ea7dab7ceed

图1.12 用于建筑或民用计划(图像由Real 3D Inc.提供)的3D图形


9aa5aa40a8946e5290bc96a0739a96851c3dba24

图1.13 用于医学图像应用(Kitware提供的VolView)的3D图形


a89135e8ee89b75278354e251abecb8bdc32233f

图1.14 用于科学视觉的3D图形(图像由Software Bisque提供)


cc27bc27e7f711c20405dbc05fe04b0515d8e0dd

图1.15 用于娱乐(取自Outrage Entertainment Inc. 的Descent 3)的3D图形

1.3.2 非实时3D
在实时3D应用中,我们常常需要做出一些妥协。只要有足够的处理时间,我们可以创建更高质量的3D图形。在一般情况下,我们设计模型和场景,并用一个光线追踪器或扫描线渲染器来处理这些定义,产生高质量的3D图像。典型的处理过程是这样的:一个建模应用程序使用实时3D图形与艺术家进行交互,创建具体的内容;然后,它所创建的帧被发送到另一个应用程序(光线追踪器离线渲染器)或子程序,由它们对图像进行渲染,渲染可能要耗费很长时间。例如,在一台非常快速的计算机上,为一部电影(例如toy Story或Shrek)渲染一个单独的帧可能需要耗费几个小时。渲染并保存成千上万个帧的过程生成了一个可以回放的动画序列。尽管这个动画序列在回放时看上去像是实时的,但它的内容却不是交互性的。因此,它并不是实时的,而是预渲染的。

1.3.3 着色器
在实时计算机图形中,最前沿的艺术是可编程着色器(Programmable Shading)。今天的图形卡不再是低能的渲染芯片了,而是功能强大的高度可编程的渲染计算机。类似CPU(中央处理单元)的术语GPU也应运而生,它代表图形处理单元,特指当今图形卡上的可编程芯片。它们是高度并行的,并且具有非常快的速度。同样重要的是,程序员可以进行重新配置图形卡的工作方式,几乎可以实现任何可以想像得到的特殊效果。

每年,基于着色器的图形硬件不断侵占传统上由高端光线追踪器和前面所提到的软件渲染工具所完成的任务。图1.16所示展示了Software Bisque的Seeker太阳系模拟器上的一幅地球图像。这个应用程序使用了一个自定义的OpenGL着色器,以每秒60幅的速率生成了一幅逼真的地球动态图像。它还包括了大气效果、太阳在水中的倒影,甚至背景中的星星。本书插页的彩图1显示了这张图的彩色版本。


89460018e4c201f66f8a1b97efeec011bb5a114a

图1.16 着色器可以实现前所未有的实时逼真性(图像由Software Bisque, Inc.提供)

相关文章
|
6月前
QT4.7版本的OPENGL的3D旋转模型例子
QT4.7版本的OPENGL的3D旋转模型例子
128 0
|
算法 机器人 Linux
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
4959 0
开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL
ly~
|
1月前
|
数据可视化 BI API
除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
除了OpenGL,C语言中还有多个常用的图形库:SDL,适合初学者,用于2D游戏和多媒体应用;Allegro,高性能,支持2D/3D图形,广泛应用于游戏开发;Cairo,矢量图形库,支持高质量图形输出,适用于数据可视化;SFML,提供简单接口,用于2D/3D游戏及多媒体应用;GTK+,开源窗口工具包,用于创建图形用户界面。这些库各有特色,适用于不同的开发需求。
ly~
177 4
|
3月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
246 0
|
6月前
|
前端开发 API vr&ar
Android开发之OpenGL绘制三维图形的流程
即将连载的系列文章将探索Android上的OpenGL开发,这是一种用于创建3D图形和动画的技术。OpenGL是跨平台的图形库,Android已集成其API。文章以2D绘图为例,解释了OpenGL的3个核心元素:GLSurfaceView(对应View)、GLSurfaceView.Renderer(类似Canvas)和GL10(类似Paint)。通过将这些结合,Android能实现3D图形渲染。文章介绍了Renderer接口的三个方法,分别对应2D绘图的构造、测量布局和绘制过程。示例代码展示了如何在布局中添加GLSurfaceView并注册渲染器。
199 1
Android开发之OpenGL绘制三维图形的流程
|
存储
QT+OpenGL开始3D
顶点坐标起始于局部空间,它在之后会变为世界坐标,观察坐标,裁减坐标,并最后以屏幕坐标的形式结束。
108 0
|
Android开发 C++
Android OpenGL显示任意3D模型文件
Android OpenGL显示任意3D模型文件
Android OpenGL显示任意3D模型文件
|
存储 缓存 Java
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
|
图形学
学习OpenGL ES之绘制更多的图形
学习OpenGL ES之绘制更多的图形
|
API Android开发 索引
【OpenGL ES】OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解(一)
【OpenGL ES】OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解(一)
151 0
【OpenGL ES】OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解(一)