2012-04-27 6 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はまったく異なる、かなり低レベルの獣です。ここにリストするクラスはすべて、CPU駆動のレンダリングエンジンである従来のFlash DisplayListに関連しているため、存在しません。しかし、それ以上のことはありません:

生のStage3D API(例:tutorial here)を使用している場合、OpenGLプログラミングと非常によく似ています。 Vertexバッファ、Indexバッファ、およびテクスチャをGPUにロードし、VertexおよびフラグメントシェーダプログラムをAGALというアセンブリ言語で定義しています。これにより、クロスプラットフォームのハードウェアアクセラレーションアプリケーションが実現しますが、これはおそらく非常に高速ですが、従来のFlash DisplayListとはまったく異なります。グラデーション、フィルター、ベクターシェイプを取得できますか?もちろん、カスタムシェーダーなどで、これらのクラスを使用しないでください。

一部のアプリケーションでは、従来のDisplayListをStage3Dのハードウェアアクセラレーションされた背景の上にインタラクティブなUIコントロールとして使用するのが理にかなっています。 DisplayListはStage3Dプレーンの上に配置されるため、これは完全に可能です。

しかし、そのような低レベルの3Dプログラミングが興味のあるものでない場合は、フレームワークの上に構築することができます。 3Dアプリケーションを作成するためのものもあれば、速度のために3Dアクセラレーションを使用するものもあります。 Adobeには、これらのフレームワークのリストhereがあります。

は例えば、Starlingは、伝統的なフラッシュDISPLAYLISTを模倣することを意図していますStage3Dのフレームワークであり、それはあなたが上に言及したクラスの一部に近い取得します - 仕様のために彼らのdemoAPI docsをチェックしてください。

Flashが有効にするもう1つの技法は、飛行中に3Dアクセラレーション用のビットマップを生成するブリッティングです。好きなFlash DisplayObjects(シェイプ、描画されたグラデーション、フィルタなど)をビットマップ(別名blit)に描画し、それらのビットマップを3Dアクセラレーションフレームワークにプッシュすることができます。このテクニックを使用すると、個々のオブジェクトを個別にブリットすることも、ステージ全体を1つのフルスクリーンテクスチャにブリットすることもできます。しかし、パフォーマンスに大きな影響を与える可能性があるため、新しいテクスチャをGPUにアップロードする頻度と量を慎重に検討する必要があります。実際、GPUプログラミングで重要なパフォーマンスの考慮事項は、複数のビットマップを1つのテクスチャにバッチする機能です。

伝統的なDisplayListからStage3Dへの移行を考える際には、多くの面を考慮する必要があります。お役に立てれば。 :)

+0

偉大な書き込み! – francis

関連する問題