【C++】 DirectX初心者質問スレ Part24 【C】
■ このスレッドは過去ログ倉庫に格納されています
0281デフォルトの名無しさん
2009/07/09(木) 15:07:02まず、UPをやめる+INDEX化で転送量が2/3になるのは良さそうです。
やってみます。
さらにINDEXバッファは1回だけ書けば書き換え無用ですから、純粋に2/3になりそうで良いですね。
TriangleStripで〜という方法は、いまいちわかりません。
離れた位置の四角ポリゴン(実際は三角ポリ×2)を描画する必要がある以上、TriangleStripは使えないのではないでしょうか?
縮退ポリゴン(描画されない細い三角ポリゴン)を使うことによる手法も聞いたことはありますが。
AGPメモリというのが最初よくわかりませんでしたが、D3DUSAGE_DYNAMICを指定することなんですね。
こちらも試してみます。
このほかに、下記のような手法も考えたのですが、一般的ではないのでしょうか?
説明を楽にするために、INDEXではない方法での説明とします。
・「四角形を1つ描画するのに必要な情報」を作る。つまり6頂点分。
頂点データの中にD3DFVF_SPECULARを加え、その領域に「何個目の四角形か」を入れておく。
・上記の6頂点×描画しうる四角形分の”静的”頂点バッファを作り、情報を書き込む。
その際D3DFVF_SPECULARの領域に入れている「何個目の四角形か」をきちんと適切な値にしておく。
・パーティクルを表現するには、四角形毎の座標情報を更新する必要がある
そこでID3DXEffect::SetVectorArray()で座標情報を渡す
・エフェクト側ではD3DCOLORtoUBYTE4を使って、対応するVectorArrayの座標情報を引き出し、頂点座標に加算する
問題点として、ビルボードをカメラに正面向けにするためのMATRIX変換を頂点シェーダ内でやる必要があります。
(今までは、頂点データ内のxyzを正面向くように調整済みだった)
■ このスレッドは過去ログ倉庫に格納されています