pub struct RenderPassBeginInfo {
pub render_pass: Arc<RenderPass>,
pub framebuffer: Arc<Framebuffer>,
pub render_area_offset: [u32; 2],
pub render_area_extent: [u32; 2],
pub clear_values: Vec<Option<ClearValue>>,
pub _ne: NonExhaustive,
}Expand description
Parameters to begin a new render pass.
Fields§
§render_pass: Arc<RenderPass>The render pass to begin.
If this is not the render pass that framebuffer was created with, it must be compatible
with that render pass.
The default value is the render pass of framebuffer.
framebuffer: Arc<Framebuffer>The framebuffer to use for rendering.
There is no default value.
render_area_offset: [u32; 2]The offset from the top left corner of the framebuffer that will be rendered to.
The default value is [0, 0].
render_area_extent: [u32; 2]The size of the area that will be rendered to.
render_area_offset + render_area_extent must not be greater than [framebuffer.extent()].
The default value is [framebuffer.extent()].
clear_values: Vec<Option<ClearValue>>Provides, for each attachment in render_pass that has a load operation of
AttachmentLoadOp::Clear, the clear values that should be used for the attachments in
the framebuffer.
There must be exactly [framebuffer.attachments().len()] elements provided,
and each one must match the attachment format.
To skip over an attachment whose load operation is something else, provide None.
The default value is empty, which must be overridden if the framebuffer has attachments.
_ne: NonExhaustiveImplementations§
Source§impl RenderPassBeginInfo
impl RenderPassBeginInfo
Sourcepub fn framebuffer(framebuffer: Arc<Framebuffer>) -> RenderPassBeginInfo
pub fn framebuffer(framebuffer: Arc<Framebuffer>) -> RenderPassBeginInfo
Examples found in repository?
165pub fn get_cmd_bufs(
166 vk: Arc<Vk>,
167 renderer: &Renderer,
168 imgui_renderer: &mut ImGui,
169 presenter: &Presenter,
170 pipeline: Arc<GraphicsPipeline>,
171) -> Vec<CommandBufferType> {
172 let mut cmd_bufs: Vec<CommandBufferType> = vec![];
173
174 let ubo = VkBuffer::uniform(vk.allocators.clone(), vs::Camera {
175 view: renderer.camera.get_view(),
176 proj: renderer.camera.get_proj(),
177 });
178
179 let camera_desc_set = descriptor_set(
180 vk.clone(),
181 0,
182 pipeline.clone(),
183 [WriteDescriptorSet::buffer(0, ubo.content.clone())]
184 ).0;
185
186 let render_passes = imgui_renderer.get_renderpasses(
187 presenter.images.clone(),
188 vk.clone()
189 );
190
191 let mut i = 0;
192 for framebuffer in &presenter.framebuffers.clone() {
193 let mut builder = VkBuilder::new_multiple(vk.clone());
194
195 builder.0
196 .begin_render_pass(
197 RenderPassBeginInfo {
198 clear_values: vec![Some([0.1, 0.2, 0.3, 1.0].into()), Some(1.0.into())],
199 ..RenderPassBeginInfo::framebuffer(framebuffer.clone())
200 },
201 SubpassBeginInfo {
202 contents: SubpassContents::Inline,
203 ..Default::default()
204 },
205 )
206 .unwrap()
207 .bind_pipeline_graphics(pipeline.clone())
208 .unwrap()
209 .bind_descriptor_sets(
210 vulkano::pipeline::PipelineBindPoint::Graphics,
211 pipeline.layout().clone(),
212 0,
213 camera_desc_set.clone(),
214 )
215 .unwrap();
216
217 for mesh in &renderer.meshes {
218 mesh.build_commands(vk.clone(), &mut builder.0, pipeline.clone());
219 }
220
221 builder.0.end_render_pass(Default::default()).unwrap();
222
223 let render_pass = &render_passes[i];
224 builder.0.begin_render_pass(
225 RenderPassBeginInfo {
226 clear_values: vec![None],
227 render_pass: render_pass.rp.clone(),
228 ..RenderPassBeginInfo::framebuffer(render_pass.framebuffer.clone())
229 },
230 SubpassBeginInfo {
231 contents: SubpassContents::SecondaryCommandBuffers,
232 ..Default::default()
233 },
234 ).expect(&format!("failed to start imgui render pass on framebuffer {:?}", framebuffer));
235
236 builder.0.execute_commands(render_pass.cmd_buf.clone()).unwrap();
237
238 builder.0.end_render_pass(Default::default()).unwrap();
239
240
241 cmd_bufs.push(
242 builder.command_buffer()
243 );
244
245 i += 1;
246 }
247
248 cmd_bufs
249}Trait Implementations§
Source§impl Clone for RenderPassBeginInfo
impl Clone for RenderPassBeginInfo
Source§fn clone(&self) -> RenderPassBeginInfo
fn clone(&self) -> RenderPassBeginInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more