# bevy_pixel_buffer
[](https://crates.io/crates/bevy_pixel_buffer)
[](https://docs.rs/bevy_pixel_buffer/)

A library to draw pixels in [bevy](https://crates.io/crates/bevy).
- Easy to set up and use.
- Can be integrated into an existing project.
- Allows dynamic resize of the pixel buffer to fill an area such as the window.
- Support for multiple pixel buffers.
- Allows to easily attach a compute shader to update the pixels.
- [egui](https://crates.io/crates/egui) integration (through
[bevy_egui](https://crates.io/crates/bevy_egui)) to show the pixels inside the
UI.
## [Examples](./examples/)
A basic example,
```rust
use bevy::prelude::*;
use bevy_pixel_buffer::prelude::*;
fn main() {
let size = PixelBufferSize {
size: UVec2::new(32, 32),
pixel_size: UVec2::new(16, 16),
};
App::new()
.add_plugins((DefaultPlugins, PixelBufferPlugin))
.add_systems(Startup, pixel_buffer_setup(size))
.add_systems(Update, update)
.run()
}
fn update(mut pb: QueryPixelBuffer) {
pb.frame().per_pixel(|_, _| Pixel::random());
}
```

[More examples](./examples/)
## Features
- `egui`\*. Egui integration.
- `rayon`. Enables extra alternative functions that use rayon.
- `rand`. Enables extra functionality related to random values.
\* Disabled by default.
## Bevy versions
Version compatibility table.
| `0.13` | `0.7` |
| `0.12` | `0.6` |
| `0.11` | `0.5` |
| `0.10` | `0.4` |
| `0.9` | `0.3` |
| `0.8` | `0.2` |