SampleGrabberによりカメラからの入力をテクスチャとして貼り付けたスプライトを背景として、スプライトの前方に3Dのメッシュオブジェクトを配置するプログラムについて。
プログラム
SVN の下記の場所にあります。
mripo/trunk/directx/D3DObjectInFrontOfTexture
ポイントとなったところ
今回のプログラムは
「薬のXファイルを表示するプログラム」
mripo/trunk/directx/ShowXFile_main20100511
と、
「テクスチャとしてスプライトにカメラ画像を張り付けるプログラム」
mripo/trunk/directx/TextureFromSampleGrabber2
を組み合わせたものです。
作成に際してポイントとなったところを書いておきます。
スプライトオブジェクトはワールドトランスフォームに影響されない
スプライトオブジェクトはワールドトランスフォーム(絶対座標変換)によって座標変換されることはありません。
スプライトを移動させる場合は、
pSprite->Draw(pTexture,&rect,&vec3Center,&vec3Position,D3DCOLOR_ARGB(255,255,255,255));
のように、スプライトオブジェクトのもつ Draw メソッドの第4引数で座標を指定する必要があります。
スプライトの描画前にはZバッファを無効にしておく
スプライトオブジェクトの描画前にはZバッファを無効にしておきましょう。
でないと、スプライトと3Dオブジェクトが同時に表示されません。
Zバッファの有効/無効を切り替えるときは、
LPDIRECT3DDEVICE9 オブジェクトの持っているSetRenderState()を使います。
例)
pDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
pDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
最終更新:2010年05月28日 17:30