79608b38a2
commit 2d8e0c1692120e9997bd8d376be8a7cc2536429d Author: Daniel Collin <daniel@collin.com> Date: Tue Oct 23 20:51:09 2018 +0200 Bump to 0.11 and added info about macOS Metal commit 0f77968317194f2f72b86da287c04484aeee762a Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 17:44:26 2018 +0200 Tripple buffer textures commit d268c10576c7e9063bd4605aed4a939d956eeb6b Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 16:59:20 2018 +0200 Some cleanup commit 5544773e62afec6f69d0c3b6309e60a543905fef Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 16:24:45 2018 +0200 Working but no proper sync yet commit 843a6625cfddac5a6e2d8e61170f796e763e4002 Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 15:26:45 2018 +0200 Working texture commit 1d4446f1f10c497dde07e0d20c92eb8bb6f836ec Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 14:45:52 2018 +0200 Removed vertex data We construct this in the shader instead commit 2e8027d73a1635e26e412dbda6494193fd04a060 Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 14:42:36 2018 +0200 Fullscreen triangle setup commit 5efd974704c11577944ffdeff9eb9dd4fa40bde0 Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 14:16:23 2018 +0200 Triangle on screen commit d9cf4eb7557f73adfbe1764f3da94a837a4ef8d3 Author: Daniel Collin <daniel@collin.com> Date: Sun Oct 21 12:17:04 2018 +0200 Some hacky metal with clear screen |
||
---|---|---|
examples | ||
src | ||
.gitignore | ||
.travis.yml | ||
appveyor.yml | ||
appveyor_rust_install.ps1 | ||
build.rs | ||
Cargo.toml | ||
CHANGELOG.md | ||
LICENSE | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
minifb is a cross platform library written in Rust and that makes it easy to setup a window and to (optional) display a 32-bit pixel buffer. It also makes it easy to get input from keyboard and mouse. An example is the best way to show how it works:
Usage
# Cargo.toml
[dependencies]
minifb = "0.11"
Example
extern crate minifb;
use minifb::{Key, WindowOptions, Window};
const WIDTH: usize = 640;
const HEIGHT: usize = 360;
fn main() {
let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];
let mut window = Window::new("Test - ESC to exit",
WIDTH,
HEIGHT,
WindowOptions::default()).unwrap_or_else(|e| {
panic!("{}", e);
});
while window.is_open() && !window.is_key_down(Key::Escape) {
for i in buffer.iter_mut() {
*i = 0; // write something more funny here!
}
// We unwrap here as we want this code to exit if it fails. Real applications may want to handle this in a different way
window.update_with_buffer(&buffer).unwrap();
}
}
Status
Currently Mac, Redox, 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!
Build instructions
cargo build
cargo run --example noise
This will run the noise example which should look something like this (Mac screenshot)
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (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.