use proj::{ app::app::App, assets, backend::opengl, geometry::{AttributeType, Mesh, MeshBuilder, VertexFormat, VertexSemantic}, math::{Mat4, Vec2, Vec4}, models::{self, Model}, shaders::{FRAGMENT_SHADER_2D, FRAGMENT_SHADER_SOURCE, VERTEX_SHADER_2D, VERTEX_SHADER_SOURCE, inputs::ShaderInputs} }; use winit::event_loop::EventLoop; const HOUSE_OBJ_PATH: &str = "assets/models/small_house/model.obj"; const HOUSE_MAT_PATH: &str = "assets/models/small_house/materials.mtl"; const BUGATTI_OBJ_PATH: &str = "assets/models/bugatti/bugatti.obj"; const BUGATTI_MTL_PATH: &str = "assets/models/bugatti/bugatti.mtl"; fn main() { dotenvy::dotenv().ok(); let event_loop = EventLoop::new() .expect("Should be able to have Event Loop"); let shader_src = opengl::GlShaderSource { vertex_src: VERTEX_SHADER_2D.to_string(), fragment_src: FRAGMENT_SHADER_2D.to_string(), }; let mut app = App::::new(); let mesh = Mesh::builder("triangle", VertexFormat::ui_2d()) .begin_vertex() .position2(Vec2::new(0.0, 0.5)) .color(Vec4::new(1.0, 0.0, 0.0, 1.0)) .end_vertex() .begin_vertex() .position2(Vec2::new(-0.5, -0.5)) .color(Vec4::new(1.0, 1.0, 0.0, 1.0)) .end_vertex() .begin_vertex() .position2(Vec2::new(0.5, -0.5)) .color(Vec4::new(0.0, 0.0, 1.0, 1.0)) .end_vertex() .build(); app.meshes.push(mesh); app.add_shader(shader_src); let event_res = event_loop.run_app(&mut app); println!("{:#?}", event_res); }