1

私は現在、地図を表示し、その上にいくつかのマーカーを描画する簡単なアプリケーションを開発しています。私はWindowsMo​​bile用に開発しているので、DirectDrawおよびImagingインターフェイスを使用して、アプリケーションを高速できれいにすることにしました。ユーザーがタッチスクリーン上で指を動かすと地図が移動するため、地図の移動/スクロールアニメーション全体を高速にする必要がありますが、そうではありません。

マップを更新するたびに、マップの一部、コントロールボタン、およびマーカーを描画する必要があります。ボタンとマーカーは、ミップマップとしてDirectDrawサーフェスにプリロードされています。したがって、私が行う唯一のことは、ミップマップからバックバッファーへ、およびバックバッファーからプライマリサーフェスへのBitBlitです(アプリケーションのウィンドウモードのため、ページめくりを使用できません)。

以前は、画像のミップマップに32ビットARGBピクセル形式の事前乗算アルファサーフェスを使用していましたが、すべてが見栄えが良かったのですが、「シーン」全体の描画がひどく遅く、スムーズなマップスクロールを忘れることができました。現在、ネイティブ(RGB565)ピクセル形式とフクシア(0xFF00FF)カラーキーでミップマップを使用しています。描画ははるかに優れています。

私のミップマップサーフェスはプログラムのロード時に生成されます-画像はファイルからロードされ、スケーリングされ(フィルタリングを使用して)、ミップマップに描画されます。問題は、画像スケーリングプロセスでピクセルの色がブレンドされ、スプライト領域の境界にあるピクセルが周囲のフクシアピクセルとブレンドされて、カラーキーとして扱われないセミフクシアカラーが生成されることです。カラーキーオプションを使用してブリッティングを行うと、スプライトにはフクシアのような小さな境界線があり、非常に見栄えが悪くなります。

この問題を解決する方法は?アルファブリッティングを使用できますが、ARGB1555形式でも遅すぎます。

4

0 に答える 0