我已经开始使用Stage3D了。 Stage3D中哪些类可用?

时间:2012-04-27 15:58:42

标签: actionscript stage3d

Stage3D是否支持这些类?或者是否存在等价物或类似的类?

flash.display.BitmapData;
flash.display.GraphicsSolidFill;
flash.display.GraphicsStroke;
flash.display.GraphicsPath;
flash.display.IGraphicsData;
flash.display.Shape;
flash.filters.BlurFilter;
flash.geom.ColorTransform;

1 个答案:

答案 0 :(得分:10)

Stage3D是一个完全不同的,相当低级别的野兽。你在那里列出的那些类都与传统的Flash DisplayList有关,它是一个CPU驱动的渲染引擎,所以不,它们本身就不存在。但是还有更多的东西:

如果您正在使用原始Stage3D API(示例tutorial here),那么它感觉非常像OpenGL编程。您将顶点缓冲区,索引缓冲区和纹理加载到GPU中,并使用名为AGAL的汇编语言定义顶点和片段着色器程序。所有这些都为您提供了一个跨平台,硬件加速的应用程序,可能非常快,但它与传统的Flash DisplayList非常不同。你能获得渐变,滤镜和矢量形状 - 当然,但可能使用自定义着色器等,而不是使用这些类。

在某些应用程序中,在Stage3D硬件加速背景之上使用传统的DisplayList进行交互式UI控件是有意义的。 DisplayList位于Stage3D平面的顶部,因此完全可以。

但是,如果这种低级3D编程不是您感兴趣的,您可以选择构建在框架之上。有许多Stage3D框架 - 一些用于创建3D应用程序,另一些用于2D(但使用底层3D加速来提高速度)。 Adobe列出了这些框架here

例如,Starling是一个Stage3D框架,旨在模仿传统的Flash DisplayList,因此它可以让您接近上面提到的一些类 - 查看他们的demoAPI docs具体细节。

Flash启用的另一项技术是blitting,它可以动态生成用于3D加速的Bitmaps。您可以绘制任何您喜欢的Flash DisplayObject(Bitpes,绘制渐变,带滤镜,等等)的Bitmaps(也称为blit),然后将这些Bitmaps推入3D加速框架。您可以单独对单个对象进行blit,或使用此技术将整个舞台blit为一个全屏纹理。但是你必须要小心将新纹理上传到GPU的频率和数量,因为这会显着影响性能。实际上,GPU编程中的一个重要性能考虑因素是能够将多个位图批量分组到单个纹理中。

因此,在考虑从传统DisplayList过渡到Stage3D时,需要考虑许多方面。希望这可以帮助。 :)