MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Samples / build_command_buffers

Method build_command_buffers

samples/api/hdr/hdr.cpp:77–225  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77void HDR::build_command_buffers()
78{
79 VkCommandBufferBeginInfo command_buffer_begin_info = vkb::initializers::command_buffer_begin_info();
80
81 VkClearValue clear_values[2];
82 clear_values[0].color = {{0.0f, 0.0f, 0.0f, 0.0f}};
83 clear_values[1].depthStencil = {0.0f, 0};
84
85 VkRenderPassBeginInfo render_pass_begin_info = vkb::initializers::render_pass_begin_info();
86 render_pass_begin_info.renderPass = render_pass;
87 render_pass_begin_info.renderArea.offset.x = 0;
88 render_pass_begin_info.renderArea.offset.y = 0;
89 render_pass_begin_info.clearValueCount = 2;
90 render_pass_begin_info.pClearValues = clear_values;
91
92 for (int32_t i = 0; i < draw_cmd_buffers.size(); ++i)
93 {
94 VK_CHECK(vkBeginCommandBuffer(draw_cmd_buffers[i], &command_buffer_begin_info));
95
96 {
97 /*
98 First pass: Render scene to offscreen framebuffer
99 */
100
101 std::array<VkClearValue, 3> clear_values;
102 clear_values[0].color = {{0.0f, 0.0f, 0.0f, 0.0f}};
103 clear_values[1].color = {{0.0f, 0.0f, 0.0f, 0.0f}};
104 clear_values[2].depthStencil = {0.0f, 0};
105
106 VkRenderPassBeginInfo render_pass_begin_info = vkb::initializers::render_pass_begin_info();
107 render_pass_begin_info.renderPass = offscreen.render_pass;
108 render_pass_begin_info.framebuffer = offscreen.framebuffer;
109 render_pass_begin_info.renderArea.extent.width = offscreen.width;
110 render_pass_begin_info.renderArea.extent.height = offscreen.height;
111 render_pass_begin_info.clearValueCount = 3;
112 render_pass_begin_info.pClearValues = clear_values.data();
113
114 vkCmdBeginRenderPass(draw_cmd_buffers[i], &render_pass_begin_info, VK_SUBPASS_CONTENTS_INLINE);
115
116 VkViewport viewport = vkb::initializers::viewport(static_cast<float>(offscreen.width), static_cast<float>(offscreen.height), 0.0f, 1.0f);
117 vkCmdSetViewport(draw_cmd_buffers[i], 0, 1, &viewport);
118
119 VkRect2D scissor = vkb::initializers::rect2D(offscreen.width, offscreen.height, 0, 0);
120 vkCmdSetScissor(draw_cmd_buffers[i], 0, 1, &scissor);
121
122 VkDeviceSize offsets[1] = {0};
123
124 // Skybox
125 if (display_skybox)
126 {
127 vkCmdBindPipeline(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.skybox);
128 vkCmdBindDescriptorSets(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layouts.models, 0, 1, &descriptor_sets.skybox, 0, NULL);
129
130 draw_model(models.skybox, draw_cmd_buffers[i]);
131 }
132
133 // 3D object
134 vkCmdBindPipeline(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.reflect);

Callers

nothing calls this directly

Calls 5

render_pass_begin_infoFunction · 0.85
viewportFunction · 0.85
rect2DFunction · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected