Add image views
This commit is contained in:
parent
f9c423cd47
commit
cc941caa71
15
src/app.rs
15
src/app.rs
@ -1,5 +1,8 @@
|
||||
mod functions;
|
||||
use functions::{create_instance, create_logical_device, create_swapchain, pick_physical_device};
|
||||
use functions::{
|
||||
create_instance, create_logical_device, create_swapchain, create_swapchain_image_views,
|
||||
pick_physical_device,
|
||||
};
|
||||
|
||||
use crate::VALIDATION_ENABLED;
|
||||
use ::anyhow::{anyhow, Result};
|
||||
@ -35,6 +38,7 @@ impl App {
|
||||
pick_physical_device(&instance, &mut data)?;
|
||||
let device = create_logical_device(&instance, &mut data)?;
|
||||
create_swapchain(window, &instance, &device, &mut data)?;
|
||||
create_swapchain_image_views(&device, &mut data)?;
|
||||
|
||||
Ok(Self {
|
||||
entry,
|
||||
@ -45,12 +49,16 @@ impl App {
|
||||
}
|
||||
|
||||
/// Renders a frame for our Vulkan app.
|
||||
pub unsafe fn render(&mut self, window: &Window) -> Result<()> {
|
||||
pub unsafe fn render(&mut self, _window: &Window) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Destroys our Vulkan app.
|
||||
pub unsafe fn destroy(&mut self) {
|
||||
self.data
|
||||
.swapchain_image_views
|
||||
.iter()
|
||||
.for_each(|v| self.device.destroy_image_view(*v, None));
|
||||
self.device.destroy_swapchain_khr(self.data.swapchain, None);
|
||||
self.device.destroy_device(None);
|
||||
|
||||
@ -79,6 +87,7 @@ pub struct AppData {
|
||||
swapchain_extent: vk::Extent2D,
|
||||
swapchain: vk::SwapchainKHR,
|
||||
swapchain_images: Vec<vk::Image>,
|
||||
swapchain_image_views: Vec<vk::ImageView>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
@ -105,7 +114,7 @@ impl QueueFamilyIndicies {
|
||||
.map(|i| i as u32);
|
||||
|
||||
let mut present = None;
|
||||
for (index, properties) in properties.iter().enumerate() {
|
||||
for (index, _properties) in properties.iter().enumerate() {
|
||||
if instance.get_physical_device_surface_support_khr(
|
||||
physical_device,
|
||||
index as u32,
|
||||
|
@ -329,3 +329,38 @@ pub(super) unsafe fn create_swapchain(
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) unsafe fn create_swapchain_image_views(
|
||||
device: &Device,
|
||||
data: &mut AppData,
|
||||
) -> Result<()> {
|
||||
data.swapchain_image_views = data
|
||||
.swapchain_images
|
||||
.iter()
|
||||
.map(|i| {
|
||||
let components = vk::ComponentMapping::builder()
|
||||
.r(vk::ComponentSwizzle::IDENTITY)
|
||||
.g(vk::ComponentSwizzle::IDENTITY)
|
||||
.b(vk::ComponentSwizzle::IDENTITY)
|
||||
.a(vk::ComponentSwizzle::IDENTITY);
|
||||
|
||||
let subresource_range = vk::ImageSubresourceRange::builder()
|
||||
.aspect_mask(vk::ImageAspectFlags::COLOR)
|
||||
.base_mip_level(0)
|
||||
.level_count(1)
|
||||
.base_array_layer(0)
|
||||
.layer_count(1);
|
||||
|
||||
let info = vk::ImageViewCreateInfo::builder()
|
||||
.image(*i)
|
||||
.view_type(vk::ImageViewType::_2D)
|
||||
.format(data.swapchain_format)
|
||||
.components(components)
|
||||
.subresource_range(subresource_range);
|
||||
|
||||
device.create_image_view(&info, None)
|
||||
})
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user