ピクセルバッファーからデバイスコンテキストにブリットするための最速の方法

StackOverflow https://stackoverflow.com/questions/4721078

質問

こんばんは、

メモリバッファーには、デバイスコンテキストに「ブリット」したい32ビット画像がいくつかあります。バッファーは絶えず操作され、DCに繰り返し貼られる必要があるため、速度はここで問題です。

バッファの色深度は32ビットなので、setDibits()のDIB発現形式に既にあります。ただし、setDibits()のビットマップターゲットは、操作前にDCに既に選択できないため、これはかなり面倒です。したがって、DCのビットマップを常に交換し、SetDibits()を呼び出し、ビットマップをDCに戻し、DCをウィンドウのDCにブリットする必要があります。私にとって、それはCPUの多くのワークロードのように思え、Windows APIでの分岐が多すぎます。最適なパフォーマンスには多すぎます。

DirectXの使用には、2D操作にデバイスコンテキストを使用せず、画像の内容が常に変化しているため、ビデオメモリにテクスチャをアップロードする前に使用することに興味があります。

私の質問は簡単です(長い記事にもかかわらず)。メモリ内のピクセルバッファーから画像を画面に押し付けるための最速の方法は何でしょうか? DCのピクセルバッファーへの直接アクセスは素晴らしいことですが、それが起こらないことは知っています。

私の長い記事を読んでくれてありがとう。

役に立ちましたか?

解決

APIメソッドがあります createdibsection アプリケーションが直接書き込むことができるDIBを作成するには。これにより、ビットマップを継続的に更新できます(Memcopyまたは直接書き込み)。

詳細については、MSDNの記事を参照してください。

ビットマップへのアクセスは同期する必要があります。 GDiflush関数を呼び出すことにより、これを行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top