diff options
author | omniscient <17525998+omnisci3nce@users.noreply.github.com> | 2024-07-26 14:02:25 +1000 |
---|---|---|
committer | omniscient <17525998+omnisci3nce@users.noreply.github.com> | 2024-07-26 14:02:25 +1000 |
commit | 9d11440c145cef897853576b509316bf952cb121 (patch) | |
tree | f3803030df2141c77f59f408e074a2afc39e9694 /bindgen | |
parent | e0a047ac1e2cf18c3b0f23f31f869eeda767503e (diff) |
trying to render ent from rust
Diffstat (limited to 'bindgen')
-rw-r--r-- | bindgen/rust/examples/main_loop.rs | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/bindgen/rust/examples/main_loop.rs b/bindgen/rust/examples/main_loop.rs index 4c54f8c..6fce5cf 100644 --- a/bindgen/rust/examples/main_loop.rs +++ b/bindgen/rust/examples/main_loop.rs @@ -1,8 +1,11 @@ +use std::{ffi::{ CString}, ptr::{self, addr_of_mut}}; + use celeritas::*; unsafe fn run_game() { // init - Core_Bringup(); + let p: *mut GLFWwindow = ptr::null_mut(); + Core_Bringup(p); let core = get_global_core(); let glfw_window_ptr = Core_GetGlfwWindowPtr(core); @@ -33,13 +36,62 @@ unsafe fn run_game() { }; SetMainLight(sun); - // let skybox = Skybox_Create(face_paths, 6); +// Geometry cube_geo = Geo_CreateCuboid(f32x3(2.0, 2.0, 2.0)); +// Mesh crate_mesh = Mesh_Create(&cube_geo, false); // dont free as we may use later +// TextureHandle albedo_map = TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_basecolor.jpg"); +// TextureHandle roughness_map = +// TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_roughness.jpg"); +// TextureHandle normal_map = TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_normal.jpg"); +// TextureHandle ao_map = +// TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_ambientOcclusion.jpg"); +// Material crate_mat = { .name = "Wood_Crate", +// .kind = MAT_PBR, +// .metal_roughness_combined = true, +// .pbr_albedo_map = albedo_map, +// .pbr_metallic_map = roughness_map, +// .pbr_normal_map = normal_map, +// .pbr_ao_map = ao_map }; + let mut cube_geo = Geo_CreateCuboid(f32x3 { x: 2.0, y: 2.0, z: 2.0 }); + let mut crate_mesh = Mesh_Create(addr_of_mut!(cube_geo), false); + let albedo_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_basecolor.jpg").unwrap().as_ptr() as *const i8); + let roughness_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_roughness.jpg").unwrap().as_ptr() as *const i8); + let normal_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_normal.jpg").unwrap().as_ptr() as *const i8); + let ao_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_ambientOcclusion.jpg").unwrap().as_ptr() as *const i8); + let name: [i8; 64] = [0; 64]; + let mut crate_mat = Material { + name: name, + kind: 0, + param_albedo: VEC3_ZERO, + param_metallic: 0.0, + param_roughness: 0.0, + param_ao: 0.0, + pbr_albedo_map: albedo_map, + pbr_normal_map: normal_map, + metal_roughness_combined: true, + pbr_metallic_map: TextureHandle { raw: 99999 }, + pbr_roughness_map: roughness_map, + pbr_ao_map: ao_map + }; + let crate_renderent = RenderEnt { + mesh: addr_of_mut!(crate_mesh), + material: addr_of_mut!(crate_mat), + affine: mat4_ident(), + casts_shadows: true, + }; + let mut render_entities: [RenderEnt; 1] = [crate_renderent]; + + // RenderEnt crate_renderable = { + // .mesh = &crate_mesh, .material = &crate_mat, .affine = mat4_scale(3.0), .casts_shadows = true + // }; + + // RenderEnt entities[] = { cube_r, crate_renderable }; + // size_t entity_count = 1; // main loop while !ShouldExit() { Frame_Begin(); - // Skybox_Draw(&mut skybox, camera); + Render_RenderEntities(render_entities.as_mut_ptr(), render_entities.len()); Frame_End(); } |