Stage3D 翻译系列之一: Stage3D是如何工作的(一)

必备知识:

  • 基本了解如何用Flash Professionnal创建应用程序;
  • 有用ActionScript3进行开发的经验;

必备应用:

用户级别:

  • 初级

  作为一系列关于Stage3D的第一个教程,你将学习到Adobe在Flash Player11中引入的一套新的ActionScript API,这套API允许Flash利用硬件渲染3D画面。在本教程中,你将了解到何为Stage3D以及它是如何工作的。你还将要使用ActionScript来创建一些带有Vertext Buffers(顶点缓冲)和Index Buffers(索引缓冲)的简单的Stage3D几何图形。

了解Stage3D

  在过去的几年中,人们用3D在Flash中开发出了一些令人称奇的应用,业界也出现了很多基于Flash的3D引擎,比如:Papervision3D, Away3D, 和Alternativa3D,利用这些引擎制作的如此众多的应用表明了在Flash中开发者是多么的需要实时3D渲染。

以前,在Flash中的3D渲染是不经过硬件加速的。事实上,在Flash Player11以前的所有3D渲染都是软件渲染模式,也就是依靠CPU来完成的。软件渲染模式非常的慢,而且不能用来渲染很细节化的3D场景。截至目前,我们在今天的很多3D游戏中经常能见到的漂亮图形效果还是不能集成到Flash中。

随着Flash Player 11的发布,新的机会来了。开发者可以充分利用3D硬件加速,而不是靠CPU来完成渲染。这种新的渲染模式把渲染工作交给了计算机的视频处理器,也就是所谓的GPU来处理。GPU是一种专门用来处理3D对象的硬件。

如何使用Stage3D

  Stage3D是Adobe最近发布的一个新的Flash API。它专门用于实时3D渲染。用Stage3D,你可以让Flash充分利用用户计算机的GPU硬件加速能力。

  Stage3D的发布对开发者来说是一个重要里程碑。在Flash中可以使用3D加速为Flash游戏和应用带来了从未有过的机遇。

  记得当年3D硬件加速横空出世,世界关于3D编程的概念被彻底颠覆。游戏的画面质量和复杂度成倍提高。得益于硬件加速那快如闪电般的渲染能力,让我们有机会体验现代3D游戏那复杂的模型,逼真的效果和实时的交互。

  借助于Flash Player 98%以上的市场占有率,用Flash开发的游戏及应用几乎可以被世界上所有的计算机直接使用。用户只要在浏览器中键入游戏的URL就可以开始玩了。有了在大多数浏览器中安装的Flash player,用户不需要再安装任何运行时库,操作系统和硬件需求的差异化也一同消失了。

  无处不在的Flash Player和3D硬件加速在一起可能会永远改变在线游戏,就像当年3D加速硬件出现有电脑游戏的快速变革。

  现今普遍的Flash站点上大多只有2D的内容。可以想象在不远的将来,用户将在一个3D的世界里畅游。未来,大多数站点可能都会有一个带有3D交互体验的视频游戏,而不是象现在这样只提供2D的内容。

  这就是Stage3D:通过世界上每一台联网的计算机,都可以轻松体验到基于3D硬件加速构建的游戏和交互网站。

如何使用3D硬件加速

  在本章节,你将对用3D硬件加速来渲染Flash内容有一个大概的了解。

  3D硬件加速利用在所有现代计算机中普遍存在GPU来进行渲染,而GPU专门用来承担3D的渲染任务。

  在以下步骤里,软件(你的Flash应用)将只会定义一个简单的3D场景。程序将3D场景的数据,传递给GPU,让它来处理数据,渲染场景。这个过程比用CPU渲染的软件渲染模式要快的多。

  让我们来花点儿时间来比较一下软件渲染和硬件渲染的不同。

  一般来说,一个3D场景由一组3D几何图形(geometries)(面(meshes))组成。每个几何图形由一组三角形(triangles)组成,而每个三角形又由一组顶点(vertices)组成。所以,一个3D场景只由一组顶点定义,最后再加入一些相关渲染信息,比如:纹理(textures)或者顶点颜色(vertex colors).

  在以前的软解模式中,象Away3D这样的3D引擎会接收顶点的数据流,然后计算每个三角形在屏幕上位置,然后提示Flash Player利用一系列填充(fill)操作一个接一个的渲染每个三角形。

  这个由引擎内置程序执行的过程是非常耗时的。在有些时候渲染的结果也不是很精确。场景内容是以三角形,而非像素为单位进行渲染的,会引起层级排序错误(depth sorting errors)。三角形经常会被放置到错误的位置,错误的层上。

  在软解模式下,为了保持可接受的性能,Flash Player 10在一个典型的3D场景中只能同时渲染4000个三角形。

  现在来看看Stage3D的表现。在3D硬件加速模式下,软件只需要定义几何图形数据,然后将它们传递给GPU。这些几何图形被放置在为GPU所专用的GPU内存中。GPU接收数据,然后处理它们,完全接管了渲染3D内容的工作。这样,软件运行起来会更快,更高效,因为它只需要将渲染的参数传给GPU。例如:软件指定将镜头(the 3D camera)放置到场景中,设置场景中光源(lights)的位置,描述其它一些关于3D对象和效果的细节。GPU接收到这些数据,分析每个顶点开始渲染场景中的每个三角形,最终GPU会将要在屏幕上显示的图像准备好。GPU渲染过程比软件渲染模式快多了。GPU被设计用来干专门的工作:计算顶点和渲染三角形,如此而已。因为GPU硬件被用来处理专门的工作,所以硬件加速3D渲染就非常高效了。

  相反,CPU是通用处理器,没有为渲染三角形而优化过,所以就像我们在用软件模式渲染Flash 3D内容看到的一样,效率很低。

从数字比较上来看,用硬件加速来渲染包含上百万三角形的3D场景是一件稀松平常的事情,这对于用软件模式渲染4000个三角形来说是一个巨大的进步。

(待续…)

引用地址:http://www.adobe.com/devnet/flashplayer/articles/how-stage3d-works.html

你可能感兴趣的:(stage3d)