MCPcopy Create free account
hub / github.com/MethanePowered/MethaneKit / Init

Method Init

Apps/03-TexturedCube/TexturedCubeApp.cpp:81–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81void TexturedCubeApp::Init()
82{
83 UserInterfaceApp::Init();
84
85 const rhi::CommandQueue render_cmd_queue = GetRenderContext().GetRenderCommandKit().GetQueue();
86 m_camera.Resize(GetRenderContext().GetSettings().frame_size);
87
88 // Create vertex buffer for cube mesh
89 const gfx::CubeMesh<CubeVertex> cube_mesh(CubeVertex::layout);
90 const Data::Size vertex_data_size = cube_mesh.GetVertexDataSize();
91 const Data::Size vertex_size = cube_mesh.GetVertexSize();
92 rhi::Buffer vertex_buffer = GetRenderContext().CreateBuffer(rhi::BufferSettings::ForVertexBuffer(vertex_data_size, vertex_size));
93 vertex_buffer.SetName("Cube Vertex Buffer");
94 vertex_buffer.SetData(render_cmd_queue, {
95 reinterpret_cast<Data::ConstRawPtr>(cube_mesh.GetVertices().data()), // NOSONAR
96 vertex_data_size
97 });
98 m_vertex_buffer_set = rhi::BufferSet(rhi::BufferType::Vertex, { vertex_buffer });
99
100 // Create index buffer for cube mesh
101 const Data::Size index_data_size = cube_mesh.GetIndexDataSize();
102 const gfx::PixelFormat index_format = gfx::GetIndexFormat(cube_mesh.GetIndex(0));
103 m_index_buffer = GetRenderContext().CreateBuffer(rhi::BufferSettings::ForIndexBuffer(index_data_size, index_format));
104 m_index_buffer.SetName("Cube Index Buffer");
105 m_index_buffer.SetData(render_cmd_queue, {
106 reinterpret_cast<Data::ConstRawPtr>(cube_mesh.GetIndices().data()), // NOSONAR
107 index_data_size
108 });
109
110 // Create render state with program
111 m_render_state = GetRenderContext().CreateRenderState(
112 rhi::RenderState::Settings
113 {
114 .program = GetRenderContext().CreateProgram(
115 rhi::Program::Settings
116 {
117 .shader_set = rhi::Program::ShaderSet
118 {
119 { rhi::ShaderType::Vertex, { Data::ShaderProvider::Get(), { "TexturedCube", "CubeVS" } } },
120 { rhi::ShaderType::Pixel, { Data::ShaderProvider::Get(), { "TexturedCube", "CubePS" } } },
121 },
122 .input_buffer_layouts = rhi::ProgramInputBufferLayouts
123 {
124 rhi::Program::InputBufferLayout
125 {
126 rhi::Program::InputBufferLayout::ArgumentSemantics { cube_mesh.GetVertexLayout().GetSemantics() }
127 }
128 },
129 .argument_accessors = rhi::ProgramArgumentAccessors
130 {
131 META_PROGRAM_ARG_ROOT_BUFFER_CONSTANT(rhi::ShaderType::Pixel, "g_constants"),
132 META_PROGRAM_ARG_ROOT_BUFFER_FRAME_CONSTANT(rhi::ShaderType::All, "g_uniforms")
133 },
134 .attachment_formats = GetScreenRenderPattern().GetAttachmentFormats()
135 }
136 ),
137 .render_pattern = GetScreenRenderPattern()
138 }

Callers

nothing calls this directly

Calls 15

GetIndexFormatFunction · 0.85
RootConstantClass · 0.85
GetQueueMethod · 0.80
GetRenderCommandKitMethod · 0.80
GetVertexDataSizeMethod · 0.80
GetIndexDataSizeMethod · 0.80
GetSemanticsMethod · 0.80
LoadImageToTexture2DMethod · 0.80
BufferSetClass · 0.50
CommandListSetClass · 0.50
ResizeMethod · 0.45
GetVertexSizeMethod · 0.45

Tested by

no test coverage detected