Use one texture with two channels for video
This commit is contained in:
+6
-11
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user