Creating a Depth Buffer

A depth buffer is a property of a device. To create a depth buffer that is managed by Microsoft Direct3D, set the appropriate members of the PresentParameters class as shown in the following C# code example.

          [C#]
          

PresentParameters presentParams = new PresentParameters();

presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Copy;
presentParams.EnableAutoDepthStencil = true;
presentParams.AutoDepthStencilFormat = DepthFormat.D16;

Setting the PresentParameters.EnableAutoDepthStencil member to true instructs Direct3D to manage depth buffers for the application. Note that PresentParameters.AutoDepthStencilFormat must be set to a valid depth buffer format. The DepthFormat.D16 value specifies a 16-bit depth buffer, provided one is available.

The following C# call to the Device constructor creates a device that in turn creates a depth buffer.

          [C#]
          

Device device;

// Create a device using the PresentParameters previously set.
device = new Device(0, 
                    DeviceType.Hardware,
                    this,
                    CreateFlags.SoftwareVertexProcessing,
                    presentParams);

The depth buffer is automatically set as the render target of the device. When the device is reset, the depth buffer is automatically destroyed and re-created in the new size. To create a new depth buffer surface, use the Device.CreateDepthStencilSurface method. To set a new depth-buffer surface for the device, use the Device.DepthStencilSurface method.

To use the depth buffer in an application, the depth buffer must be enabled. For more information, see Enabling Depth Buffering.