Direct2D を使用している場合、(ユーザーの操作に応じて) すぐに描画する前に更新領域を無効にする必要がありますか? それとも通話RenderTarget::BeginDraw()
で十分ですか?メッセージの外側のウィンドウの一部をすばやく再描画する必要がありWM_PAINT
ます。更新領域を無効にしないと、ウィンドウのクライアント領域全体が黒くなり、描画が表示されないことがあります。しかし、更新領域を無効にすると、更新領域WM_PAINT
を検証する前にシステムからメッセージが送信され、不要な描画操作が実行されます。WM_PAINT
Direct2D を使用している場合、メッセージ ハンドラーの外部で即時描画操作を実装するにはどうすればよいですか?
2 に答える
0
無効化と検証は、WM_PAINT メッセージを取得して処理する方法です。WM_PAINT ハンドラーの外でペイントしている場合、その描画の一部として無効化または検証を行うべきではありません。
とはいえ、WM_PAINT ハンドラの外でペイントすることは非常にまれです。それを正しく理解するのは非常に難しい場合があります。私のアドバイスは、最初に従来の WM_PAINT ハンドラーを介してすべてを機能させてから、そのハンドラーの外側で何らかのペイントを行う必要があるかどうかを判断することです。
于 2014-05-22T17:12:40.837 に答える
0
通常、ゲームのようなアプリケーションで Direct2D を使用する場合、WM_PAINT で描画を実行せず、1 秒間に何度も Direct2D を使用して描画します。もう 1 つの一般的な手法は、何かを 1 回描画し、新しい描画を 1 秒間に何度も作成しない場合に、描画を何らかのバック バッファーに格納することです。そうすれば、WM_PAINT メッセージに応答して画面に「ブリット」することができます。
もちろん、これは、作成しているプログラムの種類によって異なります。
于 2014-05-25T00:30:15.723 に答える