私は jpeg 画像 (25fps、約 1000x700) のストリームを持っており、できるだけ少ない CPU 使用率で画面にレンダリングしたいと考えています。
今では、jpeg 画像を解凍する高速な方法を見つけました。それは gdi+ API です。私のマシンでは、フレームごとに約 50ns かかります。彼らがどうやってそれを行うのかはわかりませんが、それは本当です。たとえば、libjpeg8は記憶されているようにはるかに遅いです。
gdi+ を使用して引き伸ばした画像を出力しようとしましたが、このような単純な作業のために多くの CPU を使用します。だから私はdirectx9に切り替えました。それは私にとっては良いことですが、gdi+ 画像を directx9 テクスチャに変換する良い方法が見つかりません。
それを行う方法はたくさんありますが、それらはすべて遅くなり、CPU 使用率が高くなります。
それらの中の一つ:
- テクスチャからサーフェスを取得する
- サーフェスから hdc を取得する
- hdc から gdi+ グラフィックスを作成する
- 引き伸ばさずに描く(フラットAPIのDrawI)。
別の方法:
- 画像のロックビット
- 表面のロックビット
- コピービット
ちなみにD3DXCreateTextureFromFileInMemory
遅いです。
問題は、コピーのオーバーヘッドなしで画像をテクスチャとして使用するにはどうすればよいかということです。または、画像をテクスチャに変換する最良の方法は何ですか?