use bytemuck::Pod;
use bytemuck::Zeroable;
pub type RenderFrameFn = fn(
frame_info_ptr: *const RenderFrameInfo,
draw_info_ptr: *const RenderDrawInfo,
draw_info_len: u32,
);
pub const RENDER_FRAME: &str = "ark_render_frame";
bitflags! {
#[repr(C)]
#[derive(Pod, Zeroable)]
pub struct RenderDrawFlags : u32 {
const REMOVED = 0b0000_0001;
}
}
#[derive(Copy, Clone, Pod, Zeroable)]
#[repr(C)]
pub struct RenderDrawInfo {
pub object_to_world: [f32; 16],
pub static_data_ptr: u32,
pub static_data_len: u32,
pub cache_id: u64,
pub flags: RenderDrawFlags,
pub dynamic_data_ptr: u32,
pub dynamic_data_len: u32,
pub reserved: u32,
}
#[derive(Copy, Clone, Pod, Zeroable)]
#[repr(C)]
pub struct RenderFrameInfo {
pub view_to_world: [f32; 16],
pub game_time_s: f64,
pub frame_delta_time_s: f32,
pub display_width: u16,
pub display_height: u16,
pub dpi_factor: f32,
pub _pad: u32,
}