engine: image loading
parent
fab5855aaa
commit
cb1e800279
|
@ -13,6 +13,7 @@ rust_binary(
|
||||||
"src/render/mod.rs",
|
"src/render/mod.rs",
|
||||||
"src/render/renderable.rs",
|
"src/render/renderable.rs",
|
||||||
"src/render/vulkan/data.rs",
|
"src/render/vulkan/data.rs",
|
||||||
|
"src/render/vulkan/images.rs",
|
||||||
"src/render/vulkan/mod.rs",
|
"src/render/vulkan/mod.rs",
|
||||||
"src/render/vulkan/pipeline.rs",
|
"src/render/vulkan/pipeline.rs",
|
||||||
"src/render/vulkan/qfi.rs",
|
"src/render/vulkan/qfi.rs",
|
||||||
|
@ -21,10 +22,12 @@ rust_binary(
|
||||||
"src/render/vulkan/swapchain_binding.rs",
|
"src/render/vulkan/swapchain_binding.rs",
|
||||||
"src/render/vulkan/worker.rs",
|
"src/render/vulkan/worker.rs",
|
||||||
"src/util/counter.rs",
|
"src/util/counter.rs",
|
||||||
|
"src/util/file.rs",
|
||||||
"src/util/mod.rs",
|
"src/util/mod.rs",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//third_party/cargo:cgmath",
|
"//third_party/cargo:cgmath",
|
||||||
|
"//third_party/cargo:image",
|
||||||
"//third_party/cargo:winit",
|
"//third_party/cargo:winit",
|
||||||
"//third_party/cargo:log",
|
"//third_party/cargo:log",
|
||||||
"//third_party/cargo:env_logger",
|
"//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 shaders;
|
||||||
mod swapchain_binding;
|
mod swapchain_binding;
|
||||||
mod worker;
|
mod worker;
|
||||||
|
pub mod images;
|
||||||
|
|
||||||
use crate::render::renderable;
|
use crate::render::renderable;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue