- 328 名前:327 mailto:sage [2008/08/29(金) 07:43:05 ]
- 補足。
D3DUSAGE_DYNAMICフラグはD3DPOOL_DEFAULTと一緒じゃないと使えない。 D3DPOOL_MANAGEDって単にシステムメモリにコピーもってて、 システム側のバッファ⇒DMA転送⇒VRAMのバッファってやってるだけ。 だからデバイスがロストしても復旧できる。 当然だけど描画中のバッファをLock()しようとした場合は描画終わるまで待たされる。 そうなると頻繁にバッファ書き換えるなら直接VRAMのバッファ変えるほうが速いのは当然だし DYNAMICフラグの場合はLock()する度に別のアドレス返してくるからMANAGEDみたいに データの保障は出来ないってことだな。 DYNAMICしたバッファは Lock()→新しいビデオメモリ領域をmalloc()→そのアドレスを返す→描画終わったらドライバがfree() っていう処理だから他のバッファみたいに描画中のバッファに干渉してパイプラインを止めなくてすむ。 だから書き換えないならMANAGEDでいいし、頻繁に書き換えるならDEFAULT+DYNAMICにしとけってな話。 ドキュメントの「DirectXGraphics」→「プログラミング ガイド」→「プログラミングのヒント」→「パフォーマンスの最適化」を参照。
|

|