| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package karl2d
- import "base:runtime"
- Shader_Constant_Desc :: struct {
- name: string,
- size: int,
- }
- Shader_Texture_Bindpoint_Desc :: struct {
- name: string,
- }
- Shader_Desc :: struct {
- constants: []Shader_Constant_Desc,
- texture_bindpoints: []Shader_Texture_Bindpoint_Desc,
- inputs: []Shader_Input,
- }
- Render_Backend_Interface :: struct #all_or_none {
- state_size: proc() -> int,
- init: proc(state: rawptr, window_handle: Window_Handle, swapchain_width, swapchain_height: int, allocator := context.allocator),
- shutdown: proc(),
- clear: proc(render_target: Render_Target_Handle, color: Color),
- present: proc(),
-
- draw: proc(
- shader: Shader,
- render_target: Render_Target_Handle,
- bound_textures: []Texture_Handle,
- scissor: Maybe(Rect),
- blend: Blend_Mode,
- vertex_buffer: []u8,
- ),
- set_internal_state: proc(state: rawptr),
- create_texture: proc(width: int, height: int, format: Pixel_Format) -> Texture_Handle,
- load_texture: proc(data: []u8, width: int, height: int, format: Pixel_Format) -> Texture_Handle,
- update_texture: proc(handle: Texture_Handle, data: []u8, rect: Rect) -> bool,
- destroy_texture: proc(handle: Texture_Handle),
- texture_needs_vertical_flip: proc(handle: Texture_Handle) -> bool,
- create_render_texture: proc(width: int, height: int) -> (Texture_Handle, Render_Target_Handle),
- destroy_render_target: proc(render_texture: Render_Target_Handle),
-
- set_texture_filter: proc(
- handle: Texture_Handle,
- scale_down_filter: Texture_Filter,
- scale_up_filter: Texture_Filter,
- mip_filter: Texture_Filter,
- ),
- load_shader: proc(
- vertex_shader_data: []byte,
- pixel_shader_data: []byte,
- desc_allocator: runtime.Allocator,
- layout_formats: []Pixel_Format = {},
- ) -> (
- handle: Shader_Handle,
- desc: Shader_Desc,
- ),
- destroy_shader: proc(shader: Shader_Handle),
- resize_swapchain: proc(width, height: int),
- get_swapchain_width: proc() -> int,
- get_swapchain_height: proc() -> int,
- flip_z: proc() -> bool,
- default_shader_vertex_source: proc() -> []byte,
- default_shader_fragment_source: proc() -> []byte,
- }
|