MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / Initialize

Method Initialize

TombEngine/Renderer/RendererInit.cpp:26–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24namespace TEN::Renderer
25{
26 void Renderer::Initialize(const std::string& gameDir, int w, int h, bool windowed, HWND handle)
27 {
28 TENLog("Initializing DX11...", LogLevel::Info);
29
30 _screenWidth = w;
31 _screenHeight = h;
32 _isWindowed = windowed;
33
34 InitializeScreen(w, h, handle, false);
35 InitializeCommonTextures();
36
37 // Load shaders.
38 _shaders.LoadShaders(w, h);
39
40 // Initialize render states.
41 _renderStates = std::make_unique<CommonStates>(_device.Get());
42
43 // Initialize input layout using first vertex shader.
44 D3D11_INPUT_ELEMENT_DESC inputLayoutItems[] =
45 {
46 { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
47 { "NORMAL", 0, DXGI_FORMAT_R8G8B8A8_SNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
48 { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
49 { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
50 { "TANGENT", 0, DXGI_FORMAT_R8G8B8A8_SNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
51 { "NORMAL", 1, DXGI_FORMAT_R8G8B8A8_SNORM, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
52 { "BONEINDICES", 0, DXGI_FORMAT_R8G8B8A8_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
53 { "BONEWEIGHTS", 0, DXGI_FORMAT_R8G8B8A8_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
54 { "EFFECTS", 0, DXGI_FORMAT_R32_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
55 { "EFFECTS", 1, DXGI_FORMAT_R32_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
56 };
57
58 const auto& roomShader = _shaders.Get(Shader::Rooms);
59 Utils::throwIfFailed(_device->CreateInputLayout(inputLayoutItems, 10, roomShader.Vertex.Blob->GetBufferPointer(), roomShader.Vertex.Blob->GetBufferSize(), &_inputLayout));
60
61 // Initialize constant buffers.
62 _cbCameraMatrices = CreateConstantBuffer<CCameraMatrixBuffer>();
63 _cbItem = CreateConstantBuffer<CItemBuffer>();
64 _cbSky = CreateConstantBuffer<CSkyBuffer>();
65 _cbLights = CreateConstantBuffer<CLightBuffer>();
66 _cbShadowMap = CreateConstantBuffer<CShadowLightBuffer>();
67 _cbRoom = CreateConstantBuffer<CRoomBuffer>();
68 _cbAnimated = CreateConstantBuffer<CAnimatedBuffer>();
69 _cbPostProcessBuffer = CreateConstantBuffer<CPostProcessBuffer>();
70 _cbBlending = CreateConstantBuffer<CBlendingBuffer>();
71 _cbInstancedSpriteBuffer = CreateConstantBuffer<CInstancedSpriteBuffer>();
72 _cbInstancedStaticMeshBuffer = CreateConstantBuffer<CInstancedStaticMeshBuffer>();
73 _cbSMAABuffer = CreateConstantBuffer<CSMAABuffer>();
74 _cbMaterial = CreateConstantBuffer<CMaterialBuffer>();
75
76 // Prepare HUD Constant buffer.
77 _cbHUDBar = CreateConstantBuffer<CHUDBarBuffer>();
78 _cbHUD = CreateConstantBuffer<CHUDBuffer>();
79 _stHUD.View = Matrix::CreateLookAt(Vector3::Zero, Vector3(0, 0, 1), Vector3(0, -1, 0));
80 _stHUD.Projection = Matrix::CreateOrthographicOffCenter(0, DISPLAY_SPACE_RES.x, 0, DISPLAY_SPACE_RES.y, 0, 1.0f);
81 UpdateConstantBuffer(_stHUD, _cbHUD);
82 _currentCausticsFrame = 0;
83

Callers 1

CreateMethod · 0.45

Calls 11

TENLogFunction · 0.85
throwIfFailedFunction · 0.85
Texture2DClass · 0.85
RenderTarget2DClass · 0.85
IndexBufferClass · 0.85
LoadShadersMethod · 0.80
GetAddressOfMethod · 0.80
GetSummaryMethod · 0.80
Vector3Function · 0.50
GetMethod · 0.45
reserveMethod · 0.45

Tested by

no test coverage detected