- 180 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:13:55 ]
- レンダリングステートを変更する事は、結構重いコストとして扱われるので、
Dx6まではコロコロ変化させずに、同じレンダリングステートのメッシュやターゲットを纏めて レンダリングしたり、ステートの変化が最小になる順番でステート郡をレンダリングしてたりしたんだけど、 ステートブロックを使えば、複数のレンダリングステートの変化を一度にデバイスに適用出きるので、 上記の事をあまり意識しなくて良いレンダリングループが作れるようになったわけ。 でも、別にレンダリングするターゲットやステートの種類によってはステートブロックを使わなくても そんなに処理が重くならないのも事実で、自分が作成しているプログラムでステートの変更が 重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの? GPUとGPUへのバスの帯域、レンダリングするプリミティブの数、ステートの変更量といった要因が あって、トータルで考える必要があるから、なんでもかんでも管理するのは効率的ともいえないし、 大規模エンジンを作るのに、ステートの管理コストを嫌って管理しないのも効率が逆に悪くなるし。 ケースバイで。効率的ってのは目的が無いと決定しない項目だから。
|

|