0

これらのクラスは 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;
4

1 に答える 1

10

Stage3D は、まったく異なる、かなり低レベルの野獣です。そこにリストされているこれらのクラスはすべて、CPU 駆動のレンダリング エンジンである従来の Flash DisplayList に関連しているため、それ自体は存在しません。しかし、それだけではありません。

生の Stage3D API (サンプルチュートリアルはこちら) を使用している場合は、OpenGL プログラミングと非常によく似ています。頂点バッファー、インデックス バッファー、およびテクスチャを GPU に読み込み、AGAL と呼ばれるアセンブリ言語で頂点およびフラグメント シェーダー プログラムを定義します。これらすべてにより、おそらく非常に高速なクロスプラットフォームのハードウェア アクセラレーション アプリケーションが得られますが、従来の Flash DisplayList とは大きく異なります。グラデーション、フィルター、ベクトル形状を取得できますか?確かに、おそらくカスタム シェーダーなどを使用して、これらのクラスを使用しません。

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

ただし、そのような低レベルの 3D プログラミングに関心がない場合は、フレームワークの上に構築することを選択できます。多くの Stage3D フレームワークがあります。3D アプリケーションの作成を目的としたものもあれば、2D を目的としたものもあります (ただし、基盤となる 3D アクセラレーションを使用して速度を上げています)。アドビでは、これらのフレームワークのリストをここに掲載しています。

たとえば、Starlingは、従来の Flash DisplayList を模倣することを目的とした Stage3D フレームワークであるため、上記で言及したいくつかのクラスに近づくことができます。詳細については、デモAPI ドキュメントを確認してください。

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

そのため、従来の DisplayList から Stage3D への移行を検討する際には、考慮すべき多くの側面があります。お役に立てれば。:)

于 2012-04-27T19:08:30.083 に答える