2012-03-19 5 views
0

私はアプリで別の開発者と一緒に作業しています。彼の部分は、基本的に独立したモジュールとして開発されたコントロールパネルであり、私の主なアプリに統合されなければなりません。ビットマップデータでの単純な形状または複雑なムービークリップの描画のパフォーマンスの差

私のアプリは、bitmapData.hitTestコントロールを行うために、すべてのパネルと要素をビットマップデータで再描画する必要があります(マルチタッチテーブルで作業していますが、パネルはドラッグ可能ですがオーバーラップは避けなければなりません)。

昨日まで、私はプレースホルダを使って作業していました。つまり、自分が作業しているモジュールの正確な寸法を単純な形で描いていました。今日は初めて合併しようとしましたが、パフォーマンスは大きく異なります。私のプレースホルダの代わりにモジュールを再描画するプロセスは、大きな性能低下を引き起こしているようです。

正常ですか?私は、パフォーマンス面でbitmapData内に表示オブジェクトを描画するプロセスは、そのコンテンツではなくクリップのディメンションに関連していると考えました。

編集:私すでに(基本的にはパネルオブジェクトのバウンディングボックスのようなものを描く)回避策とそれを修正するが、私はまだそれについて興味:)

+0

どのBitmapDataメソッドを使用していますか?透明性は関係していますか? –

+0

私はbitmapData.hitTestを使用しています。私に問題があるパネルには透明度がありません –

+0

いいえ、ピクセルを描画するためにどのような方法を使用していたのですか?たとえば、copyPixelsはdrawよりはるかに高速です。 –

答えて

0

パフォーマンスは、部分的にによって決定されます表示オブジェクトの内容描かれている子供の数と複雑さによっては、これはかなり異なる可能性があります。例えば、潜在的に10,000個(任意に多数)のスプライトを1pxずつ(任意に小さい数)、互いに積み重ねて描画することができます。各スプライトには描画領域には関係なく描画可能な任意のベクトルコマンド(moveTo、lineToなど)を描画領域に含めずに描画コードを含めることができます(描画命令が呼び出されたときに描画領域に関係なく実行されます)。特定の制約のために呼び出されないようにします)。私はあなたがBitmapDataオブジェクトに表示オブジェクトを描画するのと画面に描画するのに大きな違いがあるはずはないと信じています(ここではRAM /ヒープ領域に書き込むことができますがGPUアクセラレーションでは内部的に代わりにビデオRAMを使用してください)。

hitTest自体は、その時点でAのピクセルとBのピクセルを見ているので、子供の数に影響されないと思います。だから、あなたが言うように、ピクセルの領域のみに依存しますAとBで

あなたはどのような種類のタッチ面を使用していますか、それが動作しているプラ​​ットフォームは何ですか(Android?)。私は、Tegra 2または3(または他のマルチコアおよび/またはGPUアクセラレーションチップセット)のような優れたプロセッサでは、これが顕著になるようなパフォーマンスに影響を与えないだろうと想像しています(ただし、 )。私はトップダウンのシューティングゲームでちょっとした作業をしていましたが、最近、バウンディングボックスを使用してBitmapDataのヒットテストメソッドを使用して書いた簡単なヒットテストメソッドから、パフォーマンスをマイナスに影響しないようにローカルでテストしましたデバイス上でテストするためのケーブルはまだありませんので、デバイス上で実行すると性能に影響が出るかどうかはわかりません。

+0

thx、私はそれについてはわからなかった。問題はhitTestではなく、テーブル上のオブジェクトが移動するたびに、テーブル上の他のすべてのオブジェクトを含むbitmapDataが再描画され、hitTest計算が行われます。複雑なオブジェクトのこの一定の再描画によって、パフォーマンスが低下する可能性があります。あなたの質問については、モバイルプラットフォームではなく、カスタムマルチタッチテーブルで作業しています:) –

+0

@ Sr.Richie Awesome!コミュニティのコアビジョンを使ってFTIR(Jeff Hanの技法)をベースにしたものを作りましたが、プロジェクト作業を続けるにはあまりにも忙しくなりました。それは間違いなく幸運の最高のエキサイティングなものです。 – shaunhusain

関連する問題