forked from bwasty/vulkan-tutorial-rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
13_framebuffers.rs.diff
59 lines (53 loc) · 1.99 KB
/
13_framebuffers.rs.diff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
--- a/12_graphics_pipeline_complete.rs
+++ b/13_framebuffers.rs
@@ -39,6 +39,8 @@ use vulkano::pipeline::{
use vulkano::framebuffer::{
RenderPassAbstract,
Subpass,
+ FramebufferAbstract,
+ Framebuffer,
};
use vulkano::descriptor::PipelineLayoutAbstract;
@@ -101,6 +103,8 @@ struct HelloTriangleApplication {
// works when the concrete type of the graphics pipeline is visible
// to the command buffer.
graphics_pipeline: Arc<ConcreteGraphicsPipeline>,
+
+ swap_chain_framebuffers: Vec<Arc<FramebufferAbstract + Send + Sync>>,
}
impl HelloTriangleApplication {
@@ -119,6 +123,8 @@ impl HelloTriangleApplication {
let render_pass = Self::create_render_pass(&device, swap_chain.format());
let graphics_pipeline = Self::create_graphics_pipeline(&device, swap_chain.dimensions(), &render_pass);
+ let swap_chain_framebuffers = Self::create_framebuffers(&swap_chain_images, &render_pass);
+
Self {
instance,
debug_callback,
@@ -137,6 +143,8 @@ impl HelloTriangleApplication {
render_pass,
graphics_pipeline,
+
+ swap_chain_framebuffers,
}
}
@@ -383,6 +391,20 @@ impl HelloTriangleApplication {
)
}
+ fn create_framebuffers(
+ swap_chain_images: &[Arc<SwapchainImage<Window>>],
+ render_pass: &Arc<RenderPassAbstract + Send + Sync>
+ ) -> Vec<Arc<FramebufferAbstract + Send + Sync>> {
+ swap_chain_images.iter()
+ .map(|image| {
+ let fba: Arc<FramebufferAbstract + Send + Sync> = Arc::new(Framebuffer::start(render_pass.clone())
+ .add(image.clone()).unwrap()
+ .build().unwrap());
+ fba
+ }
+ ).collect::<Vec<_>>()
+ }
+
fn find_queue_families(surface: &Arc<Surface<Window>>, device: &PhysicalDevice) -> QueueFamilyIndices {
let mut indices = QueueFamilyIndices::new();
// TODO: replace index with id to simplify?