DirectXでの描画範囲指定や線・面の描画について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nayo

DirectXでの描画範囲指定や線・面の描画について

#1

投稿記事 by nayo » 16年前

お久しぶりです
最近は忙しくてなかなかプログラムの時間がないのですが少しでも進めようと質問する次第です

質問内容はタイトルにあるとおり
①描画範囲を指定するにはどうすればいいか
②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
で開発しています

Justy

Re:DirectXでの描画範囲指定や線・面の描画について

#2

投稿記事 by Justy » 16年前


>描画範囲を指定するにはどうすればいいか

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の呼び出し回数は
少なければ少ないほどパフォーマンスは良くなります。

nayo

Re:DirectXでの描画範囲指定や線・面の描画について

#3

投稿記事 by nayo » 16年前

お返事遅れてしまいすみません

わざわざページまで紹介していただき感謝感謝です
これで目的の動作が実現できそうです
いつもお世話になってなんとお礼していいか

また分からないことがあったらそのときは宜しくお願いします

閉鎖

“C言語何でも質問掲示板” へ戻る