Direct3Dにて。
Direct3Dにて今日はまったこと。
症状
IDirect3DDevice9::Clear()が失敗する。
ありえる理由
D3DCLEAR_ZBUFFERを指定しているのに、Z-Bufferがない。
対処
Z-BufferをIDirect3DDevice::CreateDeviceを呼ぶときについでに作成しておくといい。
方法
D3DPRESENT_PARAMETERS構造体に
EnableAutoDepthStencil = 1;
AutoDepthStencilFormat = D3DFMT_D16;
を指定すれば、16ビットのビット深度を持つZ-bufferが勝手に作られる(らしい)。
これやんねえと描画しない部分が全部ゴミになる('д`)
教訓
返り値判定は必ず書くべし。