MCPcopy Create free account
hub / github.com/Wassimulator/CactusViewer / create_shader_program

Function create_shader_program

src/source.cpp:116–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114}
115
116static Shader_Program create_shader_program(
117 Graphics *ctx, char *shader_string, size_t shader_string_size,
118 char * vs_entry_point, char * ps_entry_point, size_t constants_size,
119 int input_elements, D3D11_INPUT_ELEMENT_DESC *input_desc) {
120
121 Shader_Program shader = { 0 };
122
123 ID3DBlob *vs_blob = compile_shader_memory(shader_string, shader_string_size, vs_entry_point, "vs_5_0");
124 ctx->device->CreateVertexShader(vs_blob->GetBufferPointer(), vs_blob->GetBufferSize(), nullptr, &shader.vertex_shader);
125
126 ID3DBlob *ps_blob = compile_shader_memory(shader_string, shader_string_size, ps_entry_point, "ps_5_0");
127 ctx->device->CreatePixelShader(ps_blob->GetBufferPointer(), ps_blob->GetBufferSize(), nullptr, &shader.pixel_shader);
128
129 if (input_desc) {
130 ctx->device->CreateInputLayout(
131 input_desc, input_elements,
132 vs_blob->GetBufferPointer(), vs_blob->GetBufferSize(),
133 &shader.input_layout);
134 }
135
136 if (constants_size) {
137 shader.constants_buffer = create_constants_buffer(ctx, constants_size);
138 }
139
140 shader.constants_buffer_size = constants_size;
141
142 return shader;
143}
144
145static void upload_constants(Shader_Program* program, void* data) {
146 D3D11_MAPPED_SUBRESOURCE mapped;

Callers 1

init_d3d11Function · 0.85

Calls 2

compile_shader_memoryFunction · 0.85
create_constants_bufferFunction · 0.85

Tested by

no test coverage detected