rust_minifb/README.md

77 lines
2.3 KiB
Markdown
Raw Normal View History

[![Crates.io](https://img.shields.io/crates/v/minifb.svg)](https://crates.io/crates/minifb)
2016-01-05 08:58:47 +11:00
[![Build Status](https://travis-ci.org/emoon/rust_minifb.svg)](https://travis-ci.org/emoon/rust_minifb)
2016-01-05 09:18:04 +11:00
[![Build Status](https://ci.appveyor.com/api/projects/status/sfvgqq4d4sjulkbx?svg=true)](https://ci.appveyor.com/project/emoon/rust-minifb)
2015-11-23 04:55:38 +11:00
2015-11-24 05:46:51 +11:00
rust_minifb (Mini FrameBuffer) is a small cross platform library written in [Rust](https://www.rust-lang.org) and that makes it easy to render (32-bit) pixels in a window. An example is the best way to show how it works:
[Documentation](http://prodbg.com/minifb/minifb/index.html)
2016-01-03 18:29:37 +11:00
Usage
-----
```toml
# Cargo.toml
[dependencies]
2016-01-10 07:04:00 +11:00
minifb = "0.2.6"
2016-01-03 18:29:37 +11:00
```
Example
-------
2015-11-23 04:55:38 +11:00
2015-11-23 05:00:35 +11:00
```rust
extern crate minifb;
2015-11-23 04:55:38 +11:00
2015-12-25 20:37:13 +11:00
const WIDTH: usize = 640;
const HEIGHT: usize = 360;
2015-11-23 04:55:38 +11:00
2015-11-23 05:00:35 +11:00
fn main() {
let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];
2015-11-23 04:55:38 +11:00
2016-01-03 18:29:37 +11:00
let mut window = match minifb::Window::new("Test - ESC to exit", WIDTH, HEIGHT, Scale::X1) {
Ok(win) => win,
Err(err) => {
println!("Unable to create window {}", err);
return;
}
};
2015-11-23 04:55:38 +11:00
2015-12-25 20:37:13 +11:00
while window.is_open() && !window.is_key_down(Key::Escape) {
2015-11-23 05:00:35 +11:00
for i in buffer.iter_mut() {
2015-12-25 20:37:13 +11:00
*i = 0; // write something more funny here!
2015-11-23 05:00:35 +11:00
}
2015-11-23 04:55:38 +11:00
2015-12-25 20:37:13 +11:00
window.update(&buffer);
}
2015-11-23 05:01:34 +11:00
}
2015-11-23 05:00:35 +11:00
```
2015-11-23 04:55:38 +11:00
2015-11-24 05:46:51 +11:00
Status
------
2016-01-06 07:22:20 +11:00
Currently Mac, Linux and Windows (64-bit and 32-bit) are the current supported platforms. X11 (Linux/FreeBSD/etc) support has been tested on Ubuntu (x64). Bug report(s) for other OSes/CPUs are welcome!
2015-11-24 05:46:51 +11:00
2016-01-03 18:29:37 +11:00
Build instructions
2015-11-23 04:55:38 +11:00
------------------
2015-11-24 05:27:18 +11:00
```
2015-11-23 05:00:35 +11:00
cargo build
2015-11-24 05:39:43 +11:00
cargo run --example noise
2015-11-24 05:27:18 +11:00
```
2015-11-24 05:26:27 +11:00
2016-01-03 18:31:51 +11:00
This will run the [noise example](https://github.com/emoon/rust_minifb/blob/master/examples/noise.rs) which should look something like this (Mac screenshot)
2015-11-24 05:39:43 +11:00
2015-11-24 05:26:27 +11:00
![mac_screenshot](https://dl.dropboxusercontent.com/u/5205843/rust_minifb/noise_screen.png)
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.