Allowed setting uniforms in shader

This commit is contained in:
2026-02-03 09:37:56 +01:00
parent 991d394098
commit 32a6d498b9
6 changed files with 267 additions and 48 deletions

View File

@@ -32,8 +32,12 @@ Texture_Format :: enum {
Depth32F_Stencil8,
}
MAX_COLOR_TEXTURES_IN_RENDER_TARGET :: 32
Render_Target :: struct {
color_texture, depth_texture: ^Texture,
color_textures: [dynamic]^Texture,
depth_texture: ^Texture,
backend: Render_Target_Backend,
}
@@ -119,11 +123,16 @@ create_texture_raw :: proc(renderer: ^Renderer, width, height: u16, format: Text
return t, true
}
create_render_target :: proc(renderer: ^Renderer, color_texture, depth_texture: ^Texture) -> (Render_Target, bool) {
create_render_target :: proc(renderer: ^Renderer, color_textures: []^Texture, depth_texture: ^Texture) -> (Render_Target, bool) {
rt: Render_Target
rt.color_texture = color_texture
rt.depth_texture = depth_texture
rt.color_textures = make([dynamic]^Texture, 0, MAX_COLOR_TEXTURES_IN_RENDER_TARGET)
_, err := append(&rt.color_textures, ..color_textures)
if err != .None {
return {}, false
}
when RENDER_BACKEND_OPENGL {
if !opengl_create_render_target(renderer, &rt) {
return {}, false
@@ -133,6 +142,18 @@ create_render_target :: proc(renderer: ^Renderer, color_texture, depth_texture:
return rt, true
}
destroy_render_target :: proc(renderer: ^Renderer, render_target: ^Render_Target) {
assert(renderer != nil)
assert(render_target != nil)
assert(render_target.color_textures != nil)
delete(render_target.color_textures)
when RENDER_BACKEND_OPENGL {
opengl_destroy_render_target(renderer, render_target)
}
}
delete_texture :: proc(renderer: ^Renderer, texture: ^Texture) {
when RENDER_BACKEND_OPENGL {