2012-04-27 53 views
0

Stage3D支持這些類嗎?或者是否存在等同或類似的類?我已經開始使用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; 

回答

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顯示列表,因此它會得到你靠近一些您在上面提到的類的 - 看看他們demoAPI docs的細節。

Flash啓用的另一種技術是blitting,它可以即時生成用於3D加速的位圖。您可以將任何您喜歡的Flash DisplayObjects(形狀,繪製漸變,濾鏡等)繪製到Bitmaps(aka blit)中,然後將這些位圖推送到3D加速框架中。您可以分別對單個物體進行blit處理,也可以使用這種技術將整個舞臺佈景成一個全屏幕紋理。但是你必須小心你多久將新紋理上傳到GPU中,因爲這會嚴重影響性能。事實上,GPU編程中一個重要的性能考慮因素是能夠將多個位圖批量處理爲單個紋理。

因此,在考慮從傳統DisplayList轉換到Stage3D時,需要考慮許多方面。希望這可以幫助。 :)

+0

寫得很好! – francis 2012-04-27 21:15:28