Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
New repo, new history!
  • Loading branch information
not-fl3 committed Jan 7, 2020
0 parents commit c2b39ae
Show file tree
Hide file tree
Showing 37 changed files with 125,029 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/target
**/*.rs.bk
Cargo.lock
9 changes: 9 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[package]
name = "miniquad"
version = "0.1.0"
authors = ["not-fl3 <[email protected]>"]
edition = "2018"

[dependencies]
sokol_app_sys = { path = "./sokol-app-sys" }

131 changes: 131 additions & 0 deletions examples/quad.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
use miniquad::*;

#[repr(C)]
struct Vec2 {
x: f32,
y: f32,
}
#[repr(C)]
struct Vertex {
pos: Vec2,
uv: Vec2,
}

struct Stage {
pipeline: Pipeline,
bindings: Bindings,
}

impl Stage {
pub fn new(ctx: &mut Context) -> Stage {
#[rustfmt::skip]
let vertices: [Vertex; 4] = [
Vertex { pos : Vec2 { x: -0.5, y: -0.5 }, uv: Vec2 { x: 0., y: 0. } },
Vertex { pos : Vec2 { x: 0.5, y: -0.5 }, uv: Vec2 { x: 1., y: 0. } },
Vertex { pos : Vec2 { x: 0.5, y: 0.5 }, uv: Vec2 { x: 1., y: 1. } },
Vertex { pos : Vec2 { x: -0.5, y: 0.5 }, uv: Vec2 { x: 0., y: 1. } },
];
let vertex_buffer =
unsafe { Buffer::new(ctx, BufferType::VertexBuffer, Usage::Immutable, &vertices) };

let indices: [u16; 6] = [0, 1, 2, 0, 2, 3];
let index_buffer =
unsafe { Buffer::new(ctx, BufferType::IndexBuffer, Usage::Immutable, &indices) };

let pixels: [u8; 4 * 4 * 4] = [
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
];
let texture = Texture::from_rgba8(4, 4, &pixels);

let bindings = Bindings {
vertex_buffer: vertex_buffer,
index_buffer: index_buffer,
images: vec![texture],
};

let shader = Shader::new(ctx, shader::VERTEX, shader::FRAGMENT, shader::META);

let pipeline = Pipeline::new(
ctx,
VertexLayout::new(&[
(VertexAttribute::Custom("pos"), VertexFormat::Float2),
(VertexAttribute::Custom("uv"), VertexFormat::Float2),
]),
shader,
);

Stage { pipeline, bindings }
}
}

impl EventHandler for Stage {
fn update(&mut self, _ctx: &mut Context) {}

fn draw(&mut self, ctx: &mut Context) {
let t = date::now();

ctx.begin_render_pass();

ctx.apply_pipeline(&self.pipeline);
ctx.apply_bindings(&self.bindings);
for i in 0..10 {
let t = t + i as f64 * 0.3;

unsafe {
ctx.apply_uniforms(&shader::Uniforms {
offset: (t.sin() as f32 * 0.5, (t * 3.).cos() as f32 * 0.5),
});
}
ctx.draw(6);
}
ctx.end_render_pass();

ctx.commit_frame();
}
}

fn main() {
miniquad::start(conf::Conf::default(), |ctx| Box::new(Stage::new(ctx)));
}

mod shader {
use miniquad::*;

pub const VERTEX: &str = r#"#version 100
attribute vec2 pos;
attribute vec2 uv;
uniform vec2 offset;
varying lowp vec2 texcoord;
void main() {
gl_Position = vec4(pos + offset, 0, 1);
texcoord = uv;
}"#;

pub const FRAGMENT: &str = r#"#version 100
varying lowp vec2 texcoord;
uniform sampler2D tex;
void main() {
gl_FragColor = texture2D(tex, texcoord);
}"#;

pub const META: ShaderMeta = ShaderMeta {
images: &["tex"],
uniforms: UniformBlockLayout {
uniforms: &[("offset", UniformType::Float2)],
},
};

#[repr(C)]
pub struct Uniforms {
pub offset: (f32, f32),
}
}
12 changes: 12 additions & 0 deletions examples/window.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
use miniquad::*;

struct Stage;
impl EventHandler for Stage {
fn update(&mut self, _ctx: &mut Context) {}

fn draw(&mut self, _ctx: &mut Context) {}
}

fn main() {
miniquad::start(conf::Conf::default(), |_| Box::new(Stage));
}
Loading

0 comments on commit c2b39ae

Please sign in to comment.