summaryrefslogtreecommitdiff
path: root/sys/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/lib.rs')
-rw-r--r--sys/src/lib.rs32
1 files changed, 25 insertions, 7 deletions
diff --git a/sys/src/lib.rs b/sys/src/lib.rs
index ddce186..6d20488 100644
--- a/sys/src/lib.rs
+++ b/sys/src/lib.rs
@@ -1,4 +1,5 @@
-use std::ffi::{c_uchar, c_uint, c_void};
+use std::ffi::{c_int, c_uint, c_void};
+use std::num::NonZeroU32;
use std::os::raw::c_char;
mod renderer;
@@ -9,18 +10,24 @@ pub use window::{Window, WindowConfig, WindowEvent};
type CRenderer = *mut ();
type CWindow = *mut ();
+type CVertexBuffer = c_int;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(C)]
pub struct RendererConfig {
pub width: c_uint,
pub height: c_uint,
- pub instance_capacity: c_uint,
- pub fullscreen: bool,
pub vsync: bool,
}
#[repr(C)]
+pub struct DrawCommand {
+ vertex_count: c_uint,
+ start: c_uint,
+ end: c_uint,
+}
+
+#[repr(C)]
pub struct Vertex {
x: f32,
y: f32,
@@ -31,9 +38,6 @@ pub struct Vertex {
color1_g: f32,
color1_b: f32,
color1_a: f32,
- normal_x: f32,
- normal_y: f32,
- normal_z: f32,
}
#[derive(Debug, Clone, Copy)]
@@ -63,8 +67,8 @@ pub enum CWindowEvent {
extern "C" {
fn new_renderer(config: RendererConfig, window: CWindow) -> CRenderer;
fn resize_renderer(renderer: CRenderer, width: c_uint, height: c_uint);
+ fn is_vsync_available(renderer: CRenderer) -> bool;
fn set_vsync(renderer: CRenderer, vsync: bool);
- //fn create_vertex_buffer(renderer: CRenderer, count: c_uint, instances: *const Vertex);
fn set_camera(
renderer: CRenderer,
x: f32,
@@ -74,6 +78,12 @@ extern "C" {
width: f32,
height: f32,
);
+ //fn create_mesh(
+ // renderer: CRenderer,
+ // vertex_count: c_uint,
+ // vertices: *const Vertex,
+ //) -> CVertexBuffer;
+ fn destroy_vertex_buffer(renderer: CRenderer, buffer: CVertexBuffer);
fn render_frame(renderer: CRenderer);
fn destroy_renderer(renderer: CRenderer);
@@ -96,3 +106,11 @@ unsafe extern "C" fn alligator_run_closure(closure: *mut c_void, event: CWindowE
let closure: &mut &mut dyn FnMut(CWindowEvent) = unsafe { &mut *closure.cast() };
closure(event)
}
+
+// avoid linking errors in windows
+
+#[no_mangle]
+extern "C" fn __imp__CrtDbgReport() {}
+
+#[no_mangle]
+extern "C" fn __imp__invalid_parameter() {}