File tree Expand file tree Collapse file tree 5 files changed +13
-5
lines changed Expand file tree Collapse file tree 5 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,8 @@ void App::create_shader() {
2222 .device = *m_device,
2323 .vertex_spirv = vertex_spirv,
2424 .fragment_spirv = fragment_spirv,
25+ .vertex_input = {},
26+ .set_layouts = {},
2527 };
2628 m_shader.emplace(shader_ci);
2729}
Original file line number Diff line number Diff line change @@ -46,6 +46,7 @@ struct ShaderProgramCreateInfo {
4646 vk::Device device;
4747 std::span<std::uint32_t const> vertex_spirv;
4848 std::span<std::uint32_t const> fragment_spirv;
49+ std::span<vk::DescriptorSetLayout const> set_layouts;
4950};
5051```
5152
@@ -69,12 +70,13 @@ The definition of the constructor is fairly straightforward:
6970
7071``` cpp
7172ShaderProgram::ShaderProgram (CreateInfo const& create_info) {
72- static auto const create_shader_ci =
73- [ ] (std::span<std::uint32_t const> spirv) {
73+ auto const create_shader_ci =
74+ [ &create_info ] (std::span<std::uint32_t const> spirv) {
7475 auto ret = vk::ShaderCreateInfoEXT{};
7576 ret.setCodeSize(spirv.size_bytes())
7677 .setPCode(spirv.data())
7778 // set common parameters.
79+ .setSetLayouts(create_info.set_layouts)
7880 .setCodeType(vk::ShaderCodeTypeEXT::eSpirv)
7981 .setPName("main");
8082 return ret;
Original file line number Diff line number Diff line change @@ -219,6 +219,8 @@ void App::create_shader() {
219219 .device = *m_device,
220220 .vertex_spirv = vertex_spirv,
221221 .fragment_spirv = fragment_spirv,
222+ .vertex_input = {},
223+ .set_layouts = {},
222224 };
223225 m_shader.emplace (shader_ci);
224226}
Original file line number Diff line number Diff line change @@ -10,12 +10,13 @@ constexpr auto to_vkbool(bool const value) {
1010
1111ShaderProgram::ShaderProgram (CreateInfo const & create_info)
1212 : m_vertex_input(create_info.vertex_input) {
13- static auto const create_shader_ci =
14- [](std::span<std::uint32_t const > spirv) {
13+ auto const create_shader_ci =
14+ [&create_info ](std::span<std::uint32_t const > spirv) {
1515 auto ret = vk::ShaderCreateInfoEXT{};
1616 ret.setCodeSize (spirv.size_bytes ())
1717 .setPCode (spirv.data ())
1818 // set common parameters.
19+ .setSetLayouts (create_info.set_layouts )
1920 .setCodeType (vk::ShaderCodeTypeEXT::eSpirv)
2021 .setPName (" main" );
2122 return ret;
Original file line number Diff line number Diff line change @@ -14,7 +14,8 @@ struct ShaderProgramCreateInfo {
1414 vk::Device device;
1515 std::span<std::uint32_t const > vertex_spirv;
1616 std::span<std::uint32_t const > fragment_spirv;
17- ShaderVertexInput vertex_input{};
17+ ShaderVertexInput vertex_input;
18+ std::span<vk::DescriptorSetLayout const > set_layouts;
1819};
1920
2021class ShaderProgram {
You can’t perform that action at this time.
0 commit comments