ビットマップハンドルをDirectXで描画

[戻る]
ダイ 2009/09/16(水) 20:32:33
はじめまして。

DirectXを使ったプログラムを行っています。

よくDirectXで画像を描画したりするのですが、
ビットマップハンドル(HBitmap,CBitmap)のハンドルから
DirectX側のテクスチャに変換する方法って何かご存知ですか?

通常だと、1度画像を取り込めばいい話なので、
ファイルから読み込んだりするのですが、
今回、何度も読込を行わせたいのです。(ライブ画像のように)

何かご存じの方おりましたら、
メッセージ頂けたら幸いです。

きのこ 2009/09/21(月) 20:47:02
D3D9で軽く調べた感じでは、IDirect3DTexture9はDCが取得できず、変わりにIDirect3DSurface9は
DCが取得できるようなので、IDirect3DTexture9のGetSurfaceLevelメソッドで、
IDirect3DSurface9としてのptrを取得し、IDirect3DSurface9のGetDCメソッドでDCを取得して
Win32APIのBitBltで画素の転送を行う感じで実現できないでしょうか。

と書きつつ実際には試していないので、ご参考まで。

ダイ 2009/09/24(木) 14:55:56
[[解決]]
きのこ さん

お返事有難うございます。

以下の方法で出来ました!

1)空のテクスチャを作成
2)テクスチャ->GetSurfaceLevelメソッドでサーフェイスを取得
3)サーフェイス->GetDCメソッドでDCを取得
4)取得したDCへと画像をコピー

非常に悩んでいたので、助かりました。

(気にしていた処理時間もBitBlt以外はほぼ0msecに近かったです。)

有難うございました。

古いスレッドには追加発言できません。