use crate::{RendererConfig, Vertex, Window};
pub struct Renderer {
ptr: *mut (),
}
impl Drop for Renderer {
fn drop(&mut self) {
unsafe { crate::destroy_renderer(self.ptr) }
}
}
impl Renderer {
pub fn new(window: &Window, config: RendererConfig) -> Self {
let ptr = unsafe { crate::new_renderer(config, window.ptr) };
Self { ptr }
}
pub fn resize(&mut self, width: u32, height: u32) {
unsafe { crate::resize_renderer(self.ptr, width, height) }
}
pub fn set_vsync(&mut self, vsync: bool) {
unsafe { crate::set_vsync(self.ptr, vsync) }
}
//pub fn create_vertex_buffer(&mut self, vertices: &[Vertex]) {
// assert!(vertices.len() < (u32::MAX as usize), "Too many triangles!");
// let ptr = vertices.as_ptr();
// let len = vertices.len();
// unsafe { crate::create_vertex_buffer(self.ptr, len as u32, ptr) }
//}
pub fn set_camera(
&mut self,
x: f32,
y: f32,
zoom: f32,
rotation: f32,
width: f32,
height: f32,
) {
unsafe { crate::set_camera(self.ptr, x, y, zoom, rotation, width, height) }
}
pub fn render_frame(&mut self) {
unsafe { crate::render_frame(self.ptr) }
}
}
|