engine: image loading
parent
fab5855aaa
commit
cb1e800279
|
@ -13,6 +13,7 @@ rust_binary(
|
|||
"src/render/mod.rs",
|
||||
"src/render/renderable.rs",
|
||||
"src/render/vulkan/data.rs",
|
||||
"src/render/vulkan/images.rs",
|
||||
"src/render/vulkan/mod.rs",
|
||||
"src/render/vulkan/pipeline.rs",
|
||||
"src/render/vulkan/qfi.rs",
|
||||
|
@ -21,10 +22,12 @@ rust_binary(
|
|||
"src/render/vulkan/swapchain_binding.rs",
|
||||
"src/render/vulkan/worker.rs",
|
||||
"src/util/counter.rs",
|
||||
"src/util/file.rs",
|
||||
"src/util/mod.rs",
|
||||
],
|
||||
deps = [
|
||||
"//third_party/cargo:cgmath",
|
||||
"//third_party/cargo:image",
|
||||
"//third_party/cargo:winit",
|
||||
"//third_party/cargo:log",
|
||||
"//third_party/cargo:env_logger",
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
use std::sync::Arc;
|
||||
|
||||
use image;
|
||||
use image::GenericImageView;
|
||||
|
||||
use vulkano::image as vm;
|
||||
use vulkano::format as vf;
|
||||
use vulkano::sync::GpuFuture;
|
||||
|
||||
pub fn load_texture<WT: 'static + Send + Sync>(
|
||||
surface_binding: &super::surface_binding::SurfaceBinding<WT>,
|
||||
name: String,
|
||||
) -> Arc<vm::ImmutableImage<vf::Format>> {
|
||||
let path = &crate::util::file::resource_path(name);
|
||||
|
||||
let image = image::open(path).unwrap();
|
||||
let width = image.width();
|
||||
let height = image.height();
|
||||
|
||||
let image_rgba = image.to_rgba();
|
||||
let (image_view, future) = vm::ImmutableImage::from_iter(
|
||||
image_rgba.into_raw().iter().cloned(),
|
||||
vm::Dimensions::Dim2d{ width, height },
|
||||
vf::Format::R8G8B8A8Unorm,
|
||||
surface_binding.graphics_queue.clone()
|
||||
).unwrap();
|
||||
|
||||
future.flush().unwrap();
|
||||
|
||||
image_view
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@ mod qfi;
|
|||
mod shaders;
|
||||
mod swapchain_binding;
|
||||
mod worker;
|
||||
pub mod images;
|
||||
|
||||
use crate::render::renderable;
|
||||
|
||||
|
|
Loading…
Reference in New Issue