お久しぶりです
最近は忙しくてなかなかプログラムの時間がないのですが少しでも進めようと質問する次第です
質問内容はタイトルにあるとおり
①描画範囲を指定するにはどうすればいいか
②DirectXでパフォーマンスを落とさずに色を指定して線や面を描画するにはどうすればいいか
の2つです
①についてDXライブラリのhttp://homepage2.nifty.com/natupaji/DxL ... .html#R4N3のような処理を考えています
調べてみるとステンシルを使ってクリッピング描画するといいようなのですがシテンシルバッファなどが
よく分かっていないのでどう扱っていいものか悩んでいます
また、2Dスプライトなどにも適用できるものなのでしょうか
②についてはDXライブラリのhttp://homepage2.nifty.com/natupaji/DxL ... .html#R2N1といったものを考えています
WindowsAPIには線などを描画する関数が用意されていますがDirectXでこういったものを実現するには
どうすればベストなのでしょうか
環境は
OS:Windows Vista
Microsoft Visual C++ 2008 Express Edition
DirectX9
で開発しています
DirectXでの描画範囲指定や線・面の描画について
Re:DirectXでの描画範囲指定や線・面の描画について
>描画範囲を指定するにはどうすればいいか
SetViewport メソッド (IDirect3DDevice9)
ttp://msdn.microsoft.com/ja-jp/library/cc324255.aspx
でいけると思います。
>DirectXでパフォーマンスを落とさずに色を指定して線や面を描画するにはどうすればいいか
ただ描くだけなら
IDirect3DDevice9::DrawPrimitiveUP
ttp://msdn.microsoft.com/ja-jp/library/bb174372(VS.85).aspx
でいいです。
プリミティブの種類のところで 線は D3DPT_LINE*を、ボックスは
D3DPT_TRIANGLE*を指定(三角形が2枚あればボックスの形状が作れます)すればOKです。
が、パフォーマンスを優先するのであれば
IDirect3DDevice9::SetFVF
ttp://msdn.microsoft.com/ja-jp/library/bb174433(VS.85).aspx
のページにある例のように事前に描画したいデータを作成・まとめておいて
IDirect3DDevice9の SetFVF / SetIndices /SetStreamSource /
DrawIndexedPrimitive / DrawPrimitiveで一気に描画するのがいいでしょう。
できるだけ DrawPrimitiveUP / DrawPrimitive / DrawIndexedPrimitiveの呼び出し回数は
少なければ少ないほどパフォーマンスは良くなります。
Re:DirectXでの描画範囲指定や線・面の描画について
お返事遅れてしまいすみません
わざわざページまで紹介していただき感謝感謝です
これで目的の動作が実現できそうです
いつもお世話になってなんとお礼していいか
また分からないことがあったらそのときは宜しくお願いします
わざわざページまで紹介していただき感謝感謝です
これで目的の動作が実現できそうです
いつもお世話になってなんとお礼していいか
また分からないことがあったらそのときは宜しくお願いします