Load multiple textures
This commit is contained in:
@@ -34,7 +34,6 @@ use crate::mesh::CPUMesh;
|
||||
use crate::gameobject::{GameObject, GameObjectHandle};
|
||||
|
||||
const VALIDATION_LAYERS: &[&str] = &[
|
||||
"VK_LAYER_LUNARG_standard_validation"
|
||||
];
|
||||
|
||||
#[derive(Default, Debug, Clone)]
|
||||
@@ -65,7 +64,13 @@ pub struct Mesh {
|
||||
index_buffer: Arc<CpuAccessibleBuffer<[u32]>>,
|
||||
}
|
||||
|
||||
pub(crate) type MeshHandle = usize;
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub struct MeshHandle {
|
||||
pub index: usize,
|
||||
pub diffuse_handle: TextureHandle,
|
||||
pub normal_handle: TextureHandle,
|
||||
}
|
||||
|
||||
pub(crate) type TextureHandle = usize;
|
||||
|
||||
pub struct GameData {
|
||||
@@ -437,7 +442,7 @@ impl VulkanRenderer {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn upload_mesh(self: &mut Self, mesh: CPUMesh) -> MeshHandle {
|
||||
pub fn upload_mesh(self: &mut Self, mesh: CPUMesh) -> usize {
|
||||
let vertex_buffer = CpuAccessibleBuffer::from_iter(self.device.clone(), BufferUsage::vertex_buffer(), false, mesh.vertices.into_iter()).unwrap();
|
||||
let index_buffer = CpuAccessibleBuffer::from_iter(self.device.clone(), BufferUsage::index_buffer(), false, mesh.indices.into_iter()).unwrap();
|
||||
self.game_data.meshes.push(Mesh { vertex_buffer, index_buffer });
|
||||
@@ -463,11 +468,14 @@ impl VulkanRenderer {
|
||||
pub fn add_game_object(self: &mut Self, mut game_object: GameObject) -> GameObjectHandle {
|
||||
let descriptor_set_layout = self.pipeline.descriptor_set_layout(0).unwrap().clone();
|
||||
|
||||
println!("Diff: {:?}, Norm: {:?}", game_object.texture_index, game_object.normal_map_index);
|
||||
|
||||
let descriptor_sets = self.uniform_buffers.iter().map(|uniform_buffer| {
|
||||
let builder = PersistentDescriptorSet::start(descriptor_set_layout.clone());
|
||||
let result: Arc<RendererDescriptorSets> = Arc::new(builder
|
||||
.add_buffer(uniform_buffer.clone()).unwrap()
|
||||
.add_sampled_image(self.game_data.textures[game_object.texture_index].clone(), self.sampler.clone()).unwrap()
|
||||
.add_sampled_image(self.game_data.textures[game_object.normal_map_index].clone(), self.sampler.clone()).unwrap()
|
||||
.build().unwrap());
|
||||
result
|
||||
}).collect();
|
||||
|
||||
Reference in New Issue
Block a user