aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorLibravatar Silas Bartha <[email protected]>2024-04-24 23:56:11 -0400
committerLibravatar Silas Bartha <[email protected]>2024-04-24 23:56:11 -0400
commit73316d02cceeeb23f3082901d2541c987fa99ab5 (patch)
tree24a09abd7dddbac9b6754fcd2681030b3364b8b2 /README.md
parent98d21d244bb92a1a8d35b1dff35d9c10bdcab19a (diff)
Initial Commit
Diffstat (limited to 'README.md')
-rw-r--r--README.md82
1 files changed, 82 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4f0bf79
--- /dev/null
+++ b/README.md
@@ -0,0 +1,82 @@
+# grex_framebuffer_extract
+
+
+A plugin for the [Bevy](https://bevyengine.org) engine which allows for exporting framebuffer data from a camera.
+
+Currently it only supports cameras which render to a render texture.
+
+## Compatibility
+
+| Crate Version | Bevy Version |
+|--- |--- |
+| 0.1 | 0.13 |
+
+## Installation
+
+### Using git URL in Cargo.toml
+```toml
+[dependencies.grex_framebuffer_extract]
+git = "https://github.com/exvacuum/grex_framebuffer_extract.git"
+```
+
+## Usage
+
+In `main.rs`:
+```rs
+use bevy::prelude::*;
+use grex_framebuffer_extract;
+
+fn main() {
+ App::new()
+ .add_plugins((
+ DefaultPlugins,
+ grex_framebuffer_extract::FramebufferExtractPlugin,
+ ))
+ .run();
+}
+```
+
+When spawning a camera:
+```rs
+let size = Extent3d {
+ width: 640,
+ height: 480,
+ depth_or_array_layers: 1,
+};
+
+let mut image = Image {
+ texture_descriptor: TextureDescriptor {
+ label: None,
+ size,
+ dimension: TextureDimension::D2,
+ format: TextureFormat::R8Unorm,
+ mip_level_count: 1,
+ sample_count: 1,
+ usage: TextureUsages::TEXTURE_BINDING
+ | TextureUsages::COPY_SRC
+ | TextureUsages::RENDER_ATTACHMENT,
+ view_formats: &[],
+ },
+ ..default()
+};
+
+image.resize(size);
+
+let image_handle = images.add(image); // ResMut<Assets<Image>>
+
+commands.spawn((
+ Camera3dBundle {
+ camera: Camera {
+ target: image_handle.clone().into();
+ ..Default::default()
+ },
+ ..Default::default()
+ },
+ grex_framebuffer_extract::ExtractFramebufferBundle {
+ source: framebuffer_extract_sources.add(FramebufferExtractSource(image_handle.clone())), // ResMut<Assets<FramebufferExtractSource>>
+ destination: FramebufferExtractDestination::default(),
+ },
+));
+```
+
+The FramebufferExtractDestination component will contain the extracted image which can be used or saved for whatever you need.