Размер back buffer’а равен определенному значению (как правило 1024x768), а когда рисуем в текстуру, то скорее всего она имеет другое разрешение, а значит данный буфер глубины для нее не подходит. Можно использовать его только если размер буфера больше или равен размеру текстуры, в которую рисуем.
Нужно создать дополнительный буфер глубины и использовать его во время рисования в текстуру.
DirectX:
Создаем указатели на буферы глубины (в одном запомним используемый буфер, в другом создадим новый)
IDirect3DSurface9 *pSurfaceZBuffer; IDirect3DSurface9 *pLastSurfaceZBuffer;
pDevice->GetRenderTarget( 0, &psBackBuffer );
tex_Reflect->GetSurfaceLevel(0, &psTextureReflect);
pDevice->SetRenderTarget(0, psTextureReflect);
pDevice->GetDepthStencilSurface(&pLastSurfaceZBuffer);
pDevice->SetDepthStencilSurface(pSurfaceZBuffer);
Возвращаем поверхность back buffer’а
pDevice->SetRenderTarget(0, psBackBuffer);
pDevice->SetDepthStencilSurface(pLastSurfaceZBuffer);