package renderer import "core:log" import bk "../backend" Depth_Buffer :: struct { texture: bk.Texture_Handle, } create_depth_buffer :: proc(b: ^bk.Backend, width, height: u32) -> (db: Depth_Buffer, ok: bool) { depth_fmt := b.get_depth_format() tex, tex_ok := b.create_image(bk.Texture_Desc{ width = width, height = height, format = depth_fmt, usage = {.Depth_Stencil_Attachment}, }) if !tex_ok { log.error("gpu/renderer: failed to create depth image") return {}, false } if !b.create_image_view(tex, depth_fmt, {.Depth}) { b.destroy_image(tex) log.error("gpu/renderer: failed to create depth image view") return {}, false } db.texture = tex return db, true } destroy_depth_buffer :: proc(b: ^bk.Backend, db: ^Depth_Buffer) { b.destroy_image(db.texture) } recreate_depth_buffer :: proc(b: ^bk.Backend, db: ^Depth_Buffer, width, height: u32) -> bool { destroy_depth_buffer(b, db) new_db, ok := create_depth_buffer(b, width, height) if !ok { return false } db^ = new_db return true }