Successfully rendered a quad!

This commit is contained in:
2025-11-25 04:14:07 +01:00
parent 3c3df9796a
commit 28ca7625b8
6 changed files with 334 additions and 9 deletions

View File

@@ -65,17 +65,32 @@ set_viewport :: proc(renderer: ^Renderer, x, y, width, height: u16) {
}
}
@(private="file") clear_screen :: proc(renderer: ^Renderer) { // TODO: SS - Add options here to say if you want to clear depth or not, for example.
when RENDER_BACKEND_OPENGL {
opengl_clear_screen(renderer)
}
}
render_frame :: proc(renderer: ^Renderer) {
pipeline := &renderer.pipeline
for i in 0 ..< pipeline.amount_of_passes {
pass := pipeline.passes[i]
// TODO: SS - "Activate" the pass.
set_clear_color(renderer, pass.clear_color)
clear_screen(renderer)
// TODO: SS - Loop over the pass' render-commands.
for i in 0..<pass.draw_command_count {
command := &pass.draw_commands[i]
activate_material(&command.material)
draw_mesh(&command.mesh)
}
// TODO: SS - "Deactivate" the pass.
// Clear the pass' draw-commands.
pass.draw_command_count = 0
}
when RENDER_BACKEND_OPENGL {
@@ -90,4 +105,20 @@ destroy :: proc(renderer: ^Renderer) {
assert(renderer != nil)
free(renderer)
}
@(private) activate_material :: proc(material: ^Material) {
assert(material != nil)
when RENDER_BACKEND_OPENGL {
opengl_activate_material(material)
}
}
@(private) draw_mesh :: proc(mesh: ^Mesh) {
assert(mesh != nil)
when RENDER_BACKEND_OPENGL {
opengl_draw_mesh(mesh)
}
}