はんぎょねこの憂鬱

さあ、ふるえるがいい

DirectX11 Efficient Buffer Management

未だに参照するけどスライド探すのに時間かかってしまうのでメモ http://gamedevs.org/uploads/efficient-buffer-management.pdf

これは知っとけ的な

  • API呼び出しは可能な限り減らす
  • 16バイトアライメントする(最大30倍速度差が出る)
  • D3D11Deviceはmutexを使うが、各DeviceContextは一度に1スレッドからしか呼び出せない
  • UpdateSubresourceはCPU時間を食う。できればMap/Unmapを使う
  • CPU-GPU間のSyncPointをなるべく減らす

各バッファの使い分け

TypeUsage (e.g)Create FlagUpdate Method
ForeverLevel BSPsIMMUTABLECannot Update
Long-LivedCharactersDEFAULTUpdateSubResource
TransientUI/TextDYNAMICCTransientBuffer
TemporaryParticlesDYNAMICMap/NO_OVERWRITE
ConstantMaterial PropsDYNAMICMap/DISCARD

Efficient Buffer Managementっつうタイトルが出てこないんですわ