Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Get the pointer to the back buffer
- result = mSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBufferPtr);
- if(FAILED(result)) { return false; }
- // Create the render target view with the back buffer pointer
- result = Device->CreateRenderTargetView(backBufferPtr, NULL, &mRenderTargetView);
- if(FAILED(result)) { return false; }
- // Release pointer to the back buffer as we no longer need it
- backBufferPtr->Release();
- backBufferPtr = 0;
- // Initialize the description of the depth buffer
- ZeroMemory(&depthBufferDesc, sizeof(depthBufferDesc));
- // Set up the description of the depth buffer
- depthBufferDesc.Width = windowDesc.width;
- depthBufferDesc.Height = windowDesc.height;
- depthBufferDesc.MipLevels = 1;
- depthBufferDesc.ArraySize = 1;
- depthBufferDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- depthBufferDesc.SampleDesc.Count = 1;
- depthBufferDesc.SampleDesc.Quality = 0;
- depthBufferDesc.Usage = D3D11_USAGE_DEFAULT;
- depthBufferDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
- depthBufferDesc.CPUAccessFlags = 0;
- depthBufferDesc.MiscFlags = 0;
- // Create the texture for the depth buffer using the filled out description
- result = Device->CreateTexture2D(&depthBufferDesc, NULL, &mDepthStencilBuffer);
- if(FAILED(result)) { return false; }
- // Initialize the description of the stencil state
- ZeroMemory(&depthStencilDesc, sizeof(depthStencilDesc));
- // Set up the description of the stencil state
- depthStencilDesc.DepthEnable = true;
- depthStencilDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
- depthStencilDesc.DepthFunc = D3D11_COMPARISON_LESS;
- depthStencilDesc.StencilEnable = true;
- depthStencilDesc.StencilReadMask = 0xFF;
- depthStencilDesc.StencilWriteMask = 0xFF;
- // Stencil operations if pixel is front-facing
- depthStencilDesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
- depthStencilDesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
- depthStencilDesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
- depthStencilDesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
- // Stencil operations if pixel is back-facing
- depthStencilDesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
- depthStencilDesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
- depthStencilDesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
- depthStencilDesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
- // Create the depth stencil state
- result = Device->CreateDepthStencilState(&depthStencilDesc, &mDepthStencilState);
- if(FAILED(result)) { return false; }
- // Set the depth stencil state
- DeviceContext->OMSetDepthStencilState(mDepthStencilState, 1);
- // Initialize the depth stencil view
- ZeroMemory(&depthStencilViewDesc, sizeof(depthStencilViewDesc));
- // Set up the depth stencil view description
- depthStencilViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- depthStencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
- depthStencilViewDesc.Texture2D.MipSlice = 0;
- // Create the depth stencil view
- result = Device->CreateDepthStencilView(mDepthStencilBuffer, &depthStencilViewDesc, &mDepthStencilView);
- if(FAILED(result)) { return false; }
- // Bind the render target view and depth stencil buffer to the output render pipeline
- DeviceContext->OMSetRenderTargets(1, &mRenderTargetView, mDepthStencilView);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement