Started on the render-pipeline/pass architecture.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package renderer
|
||||
|
||||
import "core:fmt"
|
||||
import "core:log"
|
||||
|
||||
RENDER_BACKEND_OPENGL :: #config(RENDER_BACKEND_OPENGL, false)
|
||||
RENDER_BACKEND_VULKAN :: #config(RENDER_BACKEND_VULKAN, false)
|
||||
@@ -13,6 +14,8 @@ Renderer :: struct {
|
||||
viewport: Viewport,
|
||||
surface_ptr: rawptr,
|
||||
backend: rawptr,
|
||||
|
||||
pipeline: Pipeline,
|
||||
}
|
||||
|
||||
Viewport :: struct {
|
||||
@@ -26,7 +29,6 @@ Renderer_API :: enum {
|
||||
Metal,
|
||||
}
|
||||
|
||||
|
||||
create :: proc(surface_ptr: rawptr) -> (^Renderer, bool) {
|
||||
renderer := new(Renderer)
|
||||
renderer.surface_ptr = surface_ptr
|
||||
@@ -64,17 +66,29 @@ set_viewport :: proc(renderer: ^Renderer, x, y, width, height: u16) {
|
||||
}
|
||||
}
|
||||
|
||||
set_clear_color :: proc(renderer: ^Renderer, color: [3]u8) {
|
||||
@(private="file") set_clear_color :: proc(renderer: ^Renderer, color: RGB_Color) {
|
||||
when RENDER_BACKEND_OPENGL {
|
||||
opengl_set_clear_color(renderer, color)
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
// TODO: SS - Loop over the pass' render-commands.
|
||||
|
||||
// TODO: SS - "Deactivate" the pass.
|
||||
}
|
||||
|
||||
swap_buffers(renderer)
|
||||
}
|
||||
|
||||
swap_buffers :: proc(renderer: ^Renderer) {
|
||||
@(private="file") swap_buffers :: proc(renderer: ^Renderer) {
|
||||
when RENDER_BACKEND_OPENGL {
|
||||
opengl_swap_buffers(renderer)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user