thallium
This is a 2d and 3d game engine. It is sill very early in development so expect changes in the api.
Currently it only supports OpenGL 3.3+
How to render a red traingle
```rust use thallium::{math::, platform::, renderer::, scene::, *};
fn main() { let mut renderer = Surface::new((640, 480).into(), "Test").into_renderer(RendererAPI::OpenGL);
let shader = renderer.create_shader(
r"#version 330 core
in vec4 a_Position;
void main() { glPosition = aPosition; } ", r"#version 330 core
out vec4 o_Color;
void main() { o_Color = vec4(1.0, 0.0, 0.0, 1.0); } ", ).unwrap();
let vertices: &[Vector2<f32>] = &[(0.0, 0.5).into(), (0.5, -0.5).into(), (-0.5, -0.5).into()];
let vertex_buffer = renderer.create_vertex_buffer(
&[VertexBufferElement::Float2],
slice_to_bytes(vertices),
);
renderer.get_surface_mut().show();
'main_loop: loop {
for event in renderer.get_surface_mut().events() {
match event {
SurfaceEvent::Close => break 'main_loop,
SurfaceEvent::Resize(size) => renderer.resize(size),
_ => {}
}
}
renderer.clear((0.2, 0.4, 0.8).into());
{
let mut draw_context = renderer.drawing_context(Camera::default(), false);
draw_context.draw(shader, vertex_buffer, Matrix4x4::default(), Vector3::zero());
}
renderer.present();
}
renderer.get_surface_mut().hide();
} ```