Use one texture with two channels for video

This commit is contained in:
2024-11-03 13:26:01 -05:00
parent 8fdff927eb
commit b025f72604
5 changed files with 25 additions and 42 deletions
+6 -11
View File
@@ -8,18 +8,13 @@ use wgpu::{
#[derive(Debug)]
pub struct GameRenderer {
pub queue: Arc<Queue>,
pub eyes: [Arc<Texture>; 2],
pub eyes: Arc<Texture>,
}
impl GameRenderer {
pub fn render(&self, buffers: &[Vec<u8>; 2]) {
for (texture, buffer) in self.eyes.iter().zip(buffers) {
self.update_texture(texture, buffer);
}
}
fn update_texture(&self, texture: &Texture, buffer: &[u8]) {
pub fn render(&self, buffer: &[u8]) {
let texture = ImageCopyTexture {
texture,
texture: &self.eyes,
mip_level: 0,
origin: Origin3d::ZERO,
aspect: wgpu::TextureAspect::All,
@@ -31,7 +26,7 @@ impl GameRenderer {
};
let data_layout = ImageDataLayout {
offset: 0,
bytes_per_row: Some(384),
bytes_per_row: Some(384 * 2),
rows_per_image: Some(224),
};
self.queue.write_texture(texture, buffer, data_layout, size);
@@ -47,11 +42,11 @@ impl GameRenderer {
mip_level_count: 1,
sample_count: 1,
dimension: wgpu::TextureDimension::D2,
format: TextureFormat::R8Unorm,
format: TextureFormat::Rg8Unorm,
usage: TextureUsages::COPY_SRC
| TextureUsages::COPY_DST
| TextureUsages::TEXTURE_BINDING,
view_formats: &[TextureFormat::R8Unorm],
view_formats: &[TextureFormat::Rg8Unorm],
};
device.create_texture(&desc)
}