| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- // This file is purely documentational and never built.
- #+ignore
- package karl2d
- Handle :: hm.Handle
- Texture_Handle :: distinct Handle
- TEXTURE_NONE :: Texture_Handle {}
- // Opens a window and initializes some internal state. The internal state will use `allocator` for
- // all dynamically allocated memory. The return value can be ignored unless you need to later call
- // `set_state`.
- init :: proc(window_width: int, window_height: int, window_title: string,
- allocator := context.allocator, loc := #caller_location) -> ^State
- VERTEX_BUFFER_MAX :: 1000000
- make_default_projection :: proc(w, h: int) -> matrix[4,4]f32
- DEFAULT_SHADER_SOURCE :: #load("shader.hlsl")
- // Closes the window and cleans up the internal state.
- shutdown :: proc()
- // Clear the backbuffer with supplied color.
- clear :: proc(color: Color)
- // Present the backbuffer. Call at end of frame to make everything you've drawn appear on the screen.
- present :: proc()
- // Call at start or end of frame to process all events that have arrived to the window.
- //
- // WARNING: Not calling this will make your program impossible to interact with.
- process_events :: proc()
- /* Flushes the current batch. This sends off everything to the GPU that has been queued in the
- current batch. Normally, you do not need to do this manually. It is done automatically when these
- procedures run:
- present
- set_camera
- set_shader
- TODO: complete this list and motivate why it needs to happen on those procs (or do that in the
- docs for those procs).
- */
- draw_current_batch :: proc()
- // Can be used to restore the internal state using the pointer returned by `init`. Useful after
- // reloading the library (for example, when doing code hot reload).
- set_internal_state :: proc(state: ^State)
- get_screen_width :: proc() -> int
- get_screen_height :: proc() -> int
- key_went_down :: proc(key: Keyboard_Key) -> bool
- key_went_up :: proc(key: Keyboard_Key) -> bool
- key_is_held :: proc(key: Keyboard_Key) -> bool
- shutdown_wanted :: proc() -> bool
- set_window_position :: proc(x: int, y: int)
- set_window_size :: proc(width: int, height: int)
- set_camera :: proc(camera: Maybe(Camera))
- load_texture_from_file :: proc(filename: string) -> Texture
- destroy_texture :: proc(tex: Texture)
- draw_rect :: proc(r: Rect, c: Color)
- draw_rect_ex :: proc(r: Rect, origin: Vec2, rot: f32, c: Color)
- draw_rect_outline :: proc(r: Rect, thickness: f32, color: Color)
- draw_circle :: proc(center: Vec2, radius: f32, color: Color, segments := 16)
- draw_line :: proc(start: Vec2, end: Vec2, thickness: f32, color: Color)
- draw_texture :: proc(tex: Texture, pos: Vec2, tint := WHITE)
- draw_texture_rect :: proc(tex: Texture, rect: Rect, pos: Vec2, tint := WHITE)
- draw_texture_ex :: proc(tex: Texture, src: Rect, dst: Rect, origin: Vec2, rotation: f32, tint := WHITE)
- load_shader :: proc(shader_source: string, layout_formats: []Shader_Input_Format = {}) -> Shader
- get_shader_input_default_type :: proc(name: string, type: Shader_Input_Type) -> Shader_Default_Inputs
- get_shader_input_format :: proc(name: string, type: Shader_Input_Type) -> Shader_Input_Format
- destroy_shader :: proc(shader: Shader)
- set_shader :: proc(shader: Maybe(Shader))
- maybe_handle_equal :: proc(m1: Maybe($T), m2: Maybe(T)) -> bool
- set_shader_constant :: proc(shd: Shader, loc: Shader_Constant_Location, val: $T)
- set_shader_constant_mat4 :: proc(shader: Shader, loc: Shader_Constant_Location, val: matrix[4,4]f32)
- set_shader_constant_f32 :: proc(shader: Shader, loc: Shader_Constant_Location, val: f32)
- set_shader_constant_vec2 :: proc(shader: Shader, loc: Shader_Constant_Location, val: Vec2)
- get_default_shader :: proc() -> Shader
- set_scissor_rect :: proc(scissor_rect: Maybe(Rect))
- screen_to_world :: proc(pos: Vec2, camera: Camera) -> Vec2
- draw_text :: proc(text: string, pos: Vec2, font_size: f32, color: Color)
- mouse_button_went_down :: proc(button: Mouse_Button) -> bool
- mouse_button_went_up :: proc(button: Mouse_Button) -> bool
- mouse_button_is_held :: proc(button: Mouse_Button) -> bool
- get_mouse_wheel_delta :: proc() -> f32
- get_mouse_position :: proc() -> Vec2
- _batch_vertex :: proc(v: Vec2, uv: Vec2, color: Color)
- shader_input_format_size :: proc(f: Shader_Input_Format) -> int
- State :: struct {
- allocator: runtime.Allocator,
- custom_context: runtime.Context,
- win: Window_Interface,
- window_state: rawptr,
- rb: Rendering_Backend_Interface,
- rb_state: rawptr,
-
- shutdown_wanted: bool,
- mouse_position: Vec2,
- mouse_delta: Vec2,
- mouse_wheel_delta: f32,
- keys_went_down: #sparse [Keyboard_Key]bool,
- keys_went_up: #sparse [Keyboard_Key]bool,
- keys_is_held: #sparse [Keyboard_Key]bool,
- window: Window_Handle,
- width: int,
- height: int,
- shape_drawing_texture: Texture_Handle,
- batch_camera: Maybe(Camera),
- batch_shader: Maybe(Shader),
- batch_texture: Texture_Handle,
- view_matrix: Mat4,
- proj_matrix: Mat4,
- vertex_buffer_cpu: []u8,
- vertex_buffer_cpu_used: int,
- default_shader: Shader,
- }
|