代码改变世界

[Stage3D]初窥Stage3D(1)

2012-01-20 17:53  WesleyWoo  阅读(2487)  评论(0编辑  收藏  举报

 

1、什么是Stage3D

  Stage这个类,做flash的人都不应该对它陌生,它是舞台类,所有要显示的对象都必须添加到stage上,用户才能在屏幕上看到;那么,stage3d是不是也是类似的呢?答案是,否定的。stage3D并不像stage一样是个显示类,事实上,我们可以把它理解是包含在stage中的一个“功能类”。简单来说,Stage3D的功能就是用于操作显卡实现硬件加速。

  这里说一下软件加速和硬件加速。虽然在flash player11以前的flash player版本也能做出3D效果,但那是基于CPU的软件加速渲染。软件加速是比较慢的,而且在处理一些3D细节的能力上很弱,原因所有的显示计算都是经过CPU,但这并不是CPU的强项,这样使得CPU的任务繁重。flashplayer在基于软件加速的模式下,最多只能渲染4,000个多边形,渲染能力并不理想;而硬件加速,则是基于GPU(graphic processing unit,图形处理单元),也就是用显卡来处理的,这是一块专门处理图形显示的硬件,它一次可以渲染上百万个多边形。有了硬件加速,CPU就可以单独地处理其他逻辑,而把渲染这项繁重的工作给GPU去做。所以,相比与软件加速,硬件加速的效果可见一斑。

  GPU的工作流程是由一连串的处理操作组成,这一连串的操作,我们叫渲染管道(Pipeline)。早期的GPU是由固定的效果管道(Fixed Function Pipeline),这种处理管道效果单一,能渲染一些3D效果,但是它使用不可变的统一着色模式,因此渲染出来的效果看上去基本上都一个样;现在我们使用更灵活的管道,叫可编程图形管道(Programmable Graphics PipeLine),基于这种管道,着色模式是可编程的,也就是说,怎样去渲染可以根据我们的需求去改变,采用这种管道可以渲染出大量不同的仿真逼真的3D效果。现在基本上所有的主流3D游戏都是用这种管道渲染的,stage3D也是。

  Stage3D的其中一个功能,就是提供一些的API,用来编程可编程图形管道(Programmable Graphics PipeLine)中的Shader(着色器),以实现我们所需要的渲染效果。

2、Stage3D的优缺点

  优点:

  1)stage3D是跨平台的(装有flashplayer11,并且显卡是09年之后);

  2)比OpenGL\DirectX等原生的API容易使用

  缺点:

  1)stage3D是高级语言,没有真正指向硬件,无法在各平台上发挥GPU的最佳性能;

  2)基于shader Model 2.0,比起原生API基于shader Model 4.0,stage3D能使用的着色器寄存器为8个,最多支持200个操作码,数量非常有限;而shader Model 4.0能支持4096个操作码,4096个寄存器。

 

以上内容参考整理自:How Stage3D works http://www.adobe.com/devnet/flashplayer/articles/how-stage3d-works.html