Поделиться через


Состояние буферизации глубины (Direct3D 9)

Буферизация глубины — это метод удаления скрытых линий и поверхностей. По умолчанию Direct3D не использует буферизацию глубины.

Общие сведения о буферах глубины см. в разделе Буферы глубины (Direct3D 9).

Приложения C++ обновляют состояние буферизации глубины с помощью состояния D3DRS_ZENABLE отрисовки, используя член перечисления D3DZBUFFERTYPE для указания нового значения состояния.

Если приложению необходимо запретить запись Direct3D в буфер глубины, оно может использовать перечисленное значение D3DRS_ZWRITEENABLE, указав D3DZB_FALSE в качестве второго параметра для вызова IDirect3Ddevice9::SetRenderState.

В следующем примере кода показано, как задано состояние буфера глубины для включения z-буферизации.

// This code example assumes that d3dDevice is a 
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

Приложение также может использовать состояние D3DRS_ZFUNC отрисовки для управления функцией сравнения, используемой Direct3D при выполнении буферизации глубины.

Z-смещение — это метод отображения одной поверхности перед другой, даже если их значения глубины одинаковы. Этот метод можно использовать для различных эффектов. Распространенным примером является отрисовка теней на стенах. И тень, и стена имеют одинаковое значение глубины. Однако вы хотите, чтобы приложение отображали тень на стене. При предоставлении z-смещения тени Direct3D отображает их должным образом (см. D3DRS_DEPTHBIAS).

Состояния отрисовки