| 1252 | } |
| 1253 | |
| 1254 | void Renderer::RenderInventoryScene(RenderTarget2D* renderTarget, TextureBase* background, float backgroundFade) |
| 1255 | { |
| 1256 | // Set basic render states |
| 1257 | SetBlendMode(BlendMode::Opaque, true); |
| 1258 | SetDepthState(DepthState::Write, true); |
| 1259 | SetCullMode(CullMode::CounterClockwise, true); |
| 1260 | |
| 1261 | // Bind and clear render target |
| 1262 | ID3D11RenderTargetView* pRenderViewPtrs[2]; |
| 1263 | pRenderViewPtrs[0] = _renderTarget.RenderTargetView.Get(); |
| 1264 | pRenderViewPtrs[1] = _emissiveAndRoughnessRenderTarget.RenderTargetView.Get(); |
| 1265 | |
| 1266 | _context->RSSetViewports(1, &_viewport); |
| 1267 | ResetScissor(); |
| 1268 | |
| 1269 | _context->ClearDepthStencilView(_renderTarget.DepthStencilView.Get(), D3D11_CLEAR_STENCIL | D3D11_CLEAR_DEPTH, 1.0f, 0); |
| 1270 | _context->ClearRenderTargetView(_renderTarget.RenderTargetView.Get(), Colors::Black); |
| 1271 | _context->ClearRenderTargetView(_emissiveAndRoughnessRenderTarget.RenderTargetView.Get(), Colors::Transparent); |
| 1272 | |
| 1273 | if (background != nullptr) |
| 1274 | DrawFullScreenImage(background->ShaderResourceView.Get(), backgroundFade, _renderTarget.RenderTargetView.Get(), _renderTarget.DepthStencilView.Get()); |
| 1275 | |
| 1276 | _context->OMSetRenderTargets(2, &pRenderViewPtrs[0], _renderTarget.DepthStencilView.Get()); |
| 1277 | _context->ClearDepthStencilView(_renderTarget.DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); |
| 1278 | |
| 1279 | unsigned int stride = sizeof(Vertex); |
| 1280 | unsigned int offset = 0; |
| 1281 | |
| 1282 | // Set vertex buffer. |
| 1283 | _context->IASetVertexBuffers(0, 1, _moveablesVertexBuffer.Buffer.GetAddressOf(), &stride, &offset); |
| 1284 | _context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); |
| 1285 | _context->IASetInputLayout(_inputLayout.Get()); |
| 1286 | _context->IASetIndexBuffer(_moveablesIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0); |
| 1287 | |
| 1288 | // Set shaders. |
| 1289 | _shaders.Bind(Shader::Inventory); |
| 1290 | |
| 1291 | if (CurrentLevel == 0) |
| 1292 | { |
| 1293 | auto titleMenu = g_Gui.GetMenuToDisplay(); |
| 1294 | bool drawLogo = (titleMenu == Menu::Title || titleMenu == Menu::Options); |
| 1295 | |
| 1296 | if (drawLogo && _logo.Texture != nullptr) |
| 1297 | { |
| 1298 | auto& settings = g_GameFlow->GetSettings()->UI; |
| 1299 | |
| 1300 | float factorX = (float)_screenWidth / DISPLAY_SPACE_RES.x; |
| 1301 | float factorY = (float)_screenHeight / DISPLAY_SPACE_RES.y; |
| 1302 | float scale = _screenWidth > _screenHeight ? factorX : factorY; |
| 1303 | |
| 1304 | float logoWidthScaled = _logo.Width * settings.TitleLogoScale; |
| 1305 | float logoHeightScaled = _logo.Height * settings.TitleLogoScale; |
| 1306 | |
| 1307 | float centerX = (settings.TitleLogoPosition.x / 100.0f) * DISPLAY_SPACE_RES.x; |
| 1308 | float centerY = (settings.TitleLogoPosition.y / 100.0f) * DISPLAY_SPACE_RES.y; |
| 1309 | |
| 1310 | float logoLeft = centerX - logoWidthScaled * 0.5f; |
| 1311 | float logoRight = centerX + logoWidthScaled * 0.5f; |
nothing calls this directly
no test coverage detected