wip
This commit is contained in:
@@ -536,7 +536,9 @@ impl VulkanRenderer {
|
||||
offset += mip_byte_size;
|
||||
}
|
||||
} else {
|
||||
upload_bytes(bytes, 0, dimensions.to_image_dimensions().width_height_depth());
|
||||
let mut texture_bytes: Vec<u8> = bytes.to_vec();
|
||||
texture_bytes.resize((width * height) as usize, 0u8);
|
||||
upload_bytes(&texture_bytes, 0, dimensions.to_image_dimensions().width_height_depth());
|
||||
}
|
||||
|
||||
let cb = cbb.build().unwrap();
|
||||
@@ -555,7 +557,7 @@ impl VulkanRenderer {
|
||||
Texture { image: image_view, sampler }
|
||||
}
|
||||
|
||||
pub fn blit_and_update_texture(&mut self, texture: &Texture, new_data: &[u8], new_data_dimensions: [u32; 3], device: Arc<Device>) -> Texture {
|
||||
pub fn update_texture(&mut self, texture: &mut Texture, new_data: &[u8], new_data_dimensions: [u32; 3], new_data_offset: [u32; 3], device: Arc<Device>) -> Option<Texture> {
|
||||
let new_image_usage = ImageUsage {
|
||||
transfer_destination: true,
|
||||
transfer_source: true,
|
||||
@@ -563,29 +565,38 @@ impl VulkanRenderer {
|
||||
..ImageUsage::none()
|
||||
};
|
||||
|
||||
let (new_image_view, new_image_initializer) = ImmutableImage::uninitialized(
|
||||
device.clone(),
|
||||
Dimensions::Dim2d { width: texture.image.dimensions().width(), height: texture.image.dimensions().height() },
|
||||
texture.image.format(),
|
||||
texture.image.mipmap_levels(),
|
||||
new_image_usage,
|
||||
ImageLayout::ShaderReadOnlyOptimal,
|
||||
device.active_queue_families(),
|
||||
).unwrap();
|
||||
// let (new_image_view, new_image_initializer) = ImmutableImage::uninitialized(
|
||||
// device.clone(),
|
||||
// Dimensions::Dim2d { width: texture.image.dimensions().width(), height: texture.image.dimensions().height() },
|
||||
// texture.image.format(),
|
||||
// texture.image.mipmap_levels(),
|
||||
// new_image_usage,
|
||||
// ImageLayout::ShaderReadOnlyOptimal,
|
||||
// device.active_queue_families(),
|
||||
// ).unwrap();
|
||||
|
||||
let new_sub_image = SubImage::new(
|
||||
Arc::new(new_image_initializer),
|
||||
let old_sub_image = SubImage::new(
|
||||
texture.image.clone(),
|
||||
0,
|
||||
new_image_view.mipmap_levels(),
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
ImageLayout::ShaderReadOnlyOptimal,
|
||||
);
|
||||
|
||||
// let new_sub_image = SubImage::new(
|
||||
// Arc::new(new_image_initializer),
|
||||
// 0,
|
||||
// new_image_view.mipmap_levels(),
|
||||
// 0,
|
||||
// 1,
|
||||
// ImageLayout::ShaderReadOnlyOptimal,
|
||||
// );
|
||||
|
||||
let mut cbb = AutoCommandBufferBuilder::new(device.clone(), self.queue.family()).unwrap();
|
||||
|
||||
// cbb.copy_image(
|
||||
// texture.image.clone(),
|
||||
// old_sub_image.clone(),
|
||||
// [0, 0, 0],
|
||||
// 0,
|
||||
// 0,
|
||||
@@ -593,7 +604,7 @@ impl VulkanRenderer {
|
||||
// [0, 0, 0],
|
||||
// 0,
|
||||
// 0,
|
||||
// texture.image.dimensions().width_height_depth(),
|
||||
// old_sub_image.dimensions().width_height_depth(),
|
||||
// 1
|
||||
// ).unwrap();
|
||||
|
||||
@@ -606,8 +617,8 @@ impl VulkanRenderer {
|
||||
|
||||
cbb.copy_buffer_to_image_dimensions(
|
||||
upload_source.clone(),
|
||||
new_sub_image.clone(),
|
||||
[0, 0, 0],
|
||||
old_sub_image.clone(),
|
||||
new_data_offset,
|
||||
new_data_dimensions,
|
||||
0,
|
||||
1,
|
||||
@@ -620,7 +631,8 @@ impl VulkanRenderer {
|
||||
|
||||
future.flush().unwrap();
|
||||
|
||||
Texture { image: new_image_view, sampler: texture.sampler.clone() }
|
||||
// Texture { image: texture.image.clone(), sampler: texture.sampler.clone() }
|
||||
None
|
||||
}
|
||||
|
||||
pub fn add_game_object(self: &mut Self, mut game_object: GameObject) -> GameObjectHandle {
|
||||
|
||||
Reference in New Issue
Block a user