package vendor:raylib

⌘K
Ctrl+K
or
/

    Overview

    Package vendor:raylib implements bindings for version 5.0 of the raylib library (https://www.raylib.com/)

    *********************************************************************************************
    *
    *   raylib v5.0 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
    *
    *   FEATURES:
    *       - NO external dependencies, all required libraries included with raylib
    *       - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly,
    *                        MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5.
    *       - Written in plain C code (C99) in PascalCase/camelCase notation
    *       - Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3 or ES2 - choose at compile)
    *       - Unique OpenGL abstraction layer (usable as standalone module): [rlgl]
    *       - Multiple Fonts formats supported (TTF, XNA fonts, AngelCode fonts)
    *       - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC)
    *       - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more!
    *       - Flexible Materials system, supporting classic maps and PBR maps
    *       - Animated 3D models supported (skeletal bones animation) (IQM)
    *       - Shaders support, including Model shaders and Postprocessing shaders
    *       - Powerful math module for Vector, Matrix and Quaternion operations: [raymath]
    *       - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD)
    *       - VR stereo rendering with configurable HMD device parameters
    *       - Bindings to multiple programming languages available!
    *
    *   NOTES:
    *       - One default Font is loaded on InitWindow()->LoadFontDefault() [core, text]
    *       - One default Texture2D is loaded on rlglInit(), 1x1 white pixel R8G8B8A8 [rlgl] (OpenGL 3.3 or ES2)
    *       - One default Shader is loaded on rlglInit()->rlLoadShaderDefault() [rlgl] (OpenGL 3.3 or ES2)
    *       - One default RenderBatch is loaded on rlglInit()->rlLoadRenderBatch() [rlgl] (OpenGL 3.3 or ES2)
    *
    *   DEPENDENCIES (included):
    *       [rcore] rglfw (Camilla Löwy - github.com/glfw/glfw) for window/context management and input (PLATFORM_DESKTOP)
    *       [rlgl] glad (David Herberth - github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading (PLATFORM_DESKTOP)
    *       [raudio] miniaudio (David Reid - github.com/mackron/miniaudio) for audio device/context management
    *
    *   OPTIONAL DEPENDENCIES (included):
    *       [rcore] msf_gif (Miles Fogle) for GIF recording
    *       [rcore] sinfl (Micha Mettke) for DEFLATE decompression algorithm
    *       [rcore] sdefl (Micha Mettke) for DEFLATE compression algorithm
    *       [rtextures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...)
    *       [rtextures] stb_image_write (Sean Barret) for image writing (BMP, TGA, PNG, JPG)
    *       [rtextures] stb_image_resize (Sean Barret) for image resizing algorithms
    *       [rtext] stb_truetype (Sean Barret) for ttf fonts loading
    *       [rtext] stb_rect_pack (Sean Barret) for rectangles packing
    *       [rmodels] par_shapes (Philip Rideout) for parametric 3d shapes generation
    *       [rmodels] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL)
    *       [rmodels] cgltf (Johannes Kuhlmann) for models loading (glTF)
    *       [rmodels] Model3D (bzt) for models loading (M3D, https://bztsrc.gitlab.io/model3d)
    *       [raudio] dr_wav (David Reid) for WAV audio file loading
    *       [raudio] dr_flac (David Reid) for FLAC audio file loading
    *       [raudio] dr_mp3 (David Reid) for MP3 audio file loading
    *       [raudio] stb_vorbis (Sean Barret) for OGG audio loading
    *       [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading
    *       [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading
    *
    *
    *   LICENSE: zlib/libpng
    *
    *   raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified,
    *   BSD-like license that allows static linking with closed source software:
    *
    *   Copyright (c) 2013-2023 Ramon Santamaria (@raysan5)
    *
    *   This software is provided "as-is", without any express or implied warranty. In no event
    *   will the authors be held liable for any damages arising from the use of this software.
    *
    *   Permission is granted to anyone to use this software for any purpose, including commercial
    *   applications, and to alter it and redistribute it freely, subject to the following restrictions:
    *
    *     1. The origin of this software must not be misrepresented; you must not claim that you
    *     wrote the original software. If you use this software in a product, an acknowledgment
    *     in the product documentation would be appreciated but is not required.
    *
    *     2. Altered source versions must be plainly marked as such, and must not be misrepresented
    *     as being the original software.
    *
    *     3. This notice may not be removed or altered from any source distribution.
    *
    *********************************************************************************************
    

    Index

    Types (96)
    Constants (119)
    Variables (1)
    Procedures (898)
    Procedure Groups (0)

    This section is empty.

    Types

    AudioStream ¶

    AudioStream :: struct {
    	buffer:     rawptr,
    	// Pointer to internal data used by the audio system
    	processor:  rawptr,
    	// Pointer to internal data processor, useful for audio effects
    	sampleRate: u32,
    	// Frequency (samples per second)
    	sampleSize: u32,
    	// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
    	channels:   u32,
    }
     

    Audio stream type NOTE: Actual structs are defined internally in raudio module

    Related Procedures With Parameters
    Related Procedures With Returns

    AutomationEvent ¶

    AutomationEvent :: struct {
    	frame:  u32,
    	// Event frame
    	type:   u32,
    	// Event type (AutomationEventType)
    	params: [4]i32,
    }
     

    Automation event

    Related Procedures With Parameters

    AutomationEventList ¶

    AutomationEventList :: struct {
    	capacity: u32,
    	// Events max entries (MAX_AUTOMATION_EVENTS)
    	count:    u32,
    	// Events entries count
    	events:   [^]AutomationEvent,
    }
     

    Automation event list

    Related Procedures With Parameters
    Related Procedures With Returns

    BlendMode ¶

    BlendMode :: enum i32 {
    	ALPHA             = 0, // Blend textures considering alpha (default)
    	ADDITIVE,              // Blend textures adding colors
    	MULTIPLIED,            // Blend textures multiplying colors
    	ADD_COLORS,            // Blend textures adding colors (alternative)
    	SUBTRACT_COLORS,       // Blend textures subtracting colors (alternative)
    	ALPHA_PREMULTIPLY,     // Blend premultiplied textures considering alpha
    	CUSTOM,                // Blend textures using custom src/dst factors (use rlSetBlendFactors())
    	CUSTOM_SEPARATE,       // Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate())
    }
     

    Color blending modes (pre-defined)

    Related Procedures With Parameters

    BoneInfo ¶

    BoneInfo :: struct {
    	name:   [32]u8 "fmt:\"s,0\"",
    	// Bone name
    	parent: i32,
    }
     

    Bone information

    BoundingBox ¶

    BoundingBox :: struct {
    	min: [3]f32,
    	// Minimum vertex box-corner
    	max: [3]f32,
    }
     

    Bounding box type

    Related Procedures With Parameters
    Related Procedures With Returns

    Camera ¶

    Camera :: Camera3D
     

    Camera type fallback, defaults to Camera3D

    Camera2D ¶

    Camera2D :: struct {
    	offset:   [2]f32,
    	// Camera offset (displacement from target)
    	target:   [2]f32,
    	// Camera target (rotation and zoom origin)
    	rotation: f32,
    	// Camera rotation in degrees
    	zoom:     f32,
    }
     

    Camera2D type, defines a 2d camera

    Related Procedures With Parameters

    Camera3D ¶

    Camera3D :: struct {
    	position:   [3]f32,
    	// Camera position
    	target:     [3]f32,
    	// Camera target it looks-at
    	up:         [3]f32,
    	// Camera up vector (rotation over its axis)
    	fovy:       f32,
    	// Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic
    	projection: CameraProjection,
    }
     

    Camera type, defines a camera position/orientation in 3d space

    Related Procedures With Parameters

    CameraMode ¶

    CameraMode :: enum i32 {
    	CUSTOM       = 0, // Custom camera
    	FREE,             // Free camera
    	ORBITAL,          // Orbital camera
    	FIRST_PERSON,     // First person camera
    	THIRD_PERSON,     // Third person camera
    }
     

    Camera system modes

    Related Procedures With Parameters

    CameraProjection ¶

    CameraProjection :: enum i32 {
    	PERSPECTIVE  = 0, // Perspective projection
    	ORTHOGRAPHIC,     // Orthographic projection
    }
     

    Camera projection

    Color ¶

    Color :: distinct [4]u8
     

    Color, 4 components, R8G8B8A8 (32bit)

    Note: In Raylib this is a struct. But here we use a fixed array, so that .rgba swizzling etc work.

    Related Procedures With Parameters
    Related Procedures With Returns
    Related Constants

    ConfigFlag ¶

    ConfigFlag :: enum i32 {
    	VSYNC_HINT               = 6,  // Set to try enabling V-Sync on GPU
    	FULLSCREEN_MODE          = 1,  // Set to run program in fullscreen
    	WINDOW_RESIZABLE         = 2,  // Set to allow resizable window
    	WINDOW_UNDECORATED       = 3,  // Set to disable window decoration (frame and buttons)
    	WINDOW_HIDDEN            = 7,  // Set to hide window
    	WINDOW_MINIMIZED         = 9,  // Set to minimize window (iconify)
    	WINDOW_MAXIMIZED         = 10, // Set to maximize window (expanded to monitor)
    	WINDOW_UNFOCUSED         = 11, // Set to window non focused
    	WINDOW_TOPMOST           = 12, // Set to window always on top
    	WINDOW_ALWAYS_RUN        = 8,  // Set to allow windows running while minimized
    	WINDOW_TRANSPARENT       = 4,  // Set to allow transparent framebuffer
    	WINDOW_HIGHDPI           = 13, // Set to support HighDPI
    	WINDOW_MOUSE_PASSTHROUGH = 14, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED
    	BORDERLESS_WINDOWED_MODE = 15, // Set to run program in borderless windowed mode
    	MSAA_4X_HINT             = 5,  // Set to try enabling MSAA 4X
    	INTERLACED_HINT          = 16, // Set to try enabling interlaced video format (for V3D)
    }
     

    ---------------------------------------------------------------------------------- Enumerators Definition ---------------------------------------------------------------------------------- System/Window config flags NOTE: Every bit registers one state (use it with bit masks) By default all flags are set to 0

    ConfigFlags ¶

    ConfigFlags :: distinct bit_set[ConfigFlag; i32]
    Related Procedures With Parameters

    CubemapLayout ¶

    CubemapLayout :: enum i32 {
    	AUTO_DETECT         = 0, // Automatically detect layout type
    	LINE_VERTICAL,           // Layout is defined by a vertical line with faces
    	LINE_HORIZONTAL,         // Layout is defined by an horizontal line with faces
    	CROSS_THREE_BY_FOUR,     // Layout is defined by a 3x4 cross with cubemap faces
    	CROSS_FOUR_BY_THREE,     // Layout is defined by a 4x3 cross with cubemap faces
    	PANORAMA,                // Layout is defined by a panorama image (equirectangular map)
    }
     

    Cubemap layouts

    Related Procedures With Parameters

    CullMode ¶

    CullMode :: enum i32 {
    	FRONT = 0, 
    	BACK, 
    }
    Related Procedures With Parameters

    DrawCall ¶

    DrawCall :: struct {
    	mode:            i32,
    	// Drawing mode: LINES, TRIANGLES, QUADS
    	vertexCount:     i32,
    	// Number of vertex of the draw
    	vertexAlignment: i32,
    	// Number of vertex required for index alignment (LINES, TRIANGLES)
    	textureId:       u32,
    }
     

    Draw call type NOTE: Only texture changes register a new draw, other state-change-related elements are not used at this moment (vaoId, shaderId, matrices), raylib just forces a batch draw call if any of those state-change happens (this is done in core module)

    FilePathList ¶

    FilePathList :: struct {
    	capacity: u32,
    	// Filepaths max entries
    	count:    u32,
    	// Filepaths entries count
    	paths:    [^]cstring,
    }
     

    File path list

    Related Procedures With Parameters
    Related Procedures With Returns

    Font ¶

    Font :: struct {
    	baseSize:     i32,
    	// Base size (default chars height)
    	glyphCount:   i32,
    	// Number of characters
    	glyphPadding: i32,
    	// Padding around the chars
    	texture:      Texture,
    	// Characters texture atlas
    	recs:         [^]Rectangle,
    	// Characters rectangles in texture
    	glyphs:       [^]GlyphInfo,
    }
     

    Font type, includes texture and charSet array data

    Related Procedures With Parameters
    Related Procedures With Returns

    FontType ¶

    FontType :: enum i32 {
    	DEFAULT = 0, // Default font generation, anti-aliased
    	BITMAP,      // Bitmap font generation, no anti-aliasing
    	SDF,         // SDF font generation, requires external shader
    }
     

    Font type, defines generation method

    Related Procedures With Parameters

    FramebufferAttachTextureType ¶

    FramebufferAttachTextureType :: enum i32 {
    	CUBEMAP_POSITIVE_X = 0,   // Framebuffer texture attachment type: cubemap, +X side
    	CUBEMAP_NEGATIVE_X = 1,   // Framebuffer texture attachment type: cubemap, -X side
    	CUBEMAP_POSITIVE_Y = 2,   // Framebuffer texture attachment type: cubemap, +Y side
    	CUBEMAP_NEGATIVE_Y = 3,   // Framebuffer texture attachment type: cubemap, -Y side
    	CUBEMAP_POSITIVE_Z = 4,   // Framebuffer texture attachment type: cubemap, +Z side
    	CUBEMAP_NEGATIVE_Z = 5,   // Framebuffer texture attachment type: cubemap, -Z side
    	TEXTURE2D          = 100, // Framebuffer texture attachment type: texture2d
    	RENDERBUFFER       = 200, // Framebuffer texture attachment type: renderbuffer
    }
     

    Framebuffer texture attachment type

    FramebufferAttachType ¶

    FramebufferAttachType :: enum i32 {
    	COLOR_CHANNEL0 = 0,   // Framebuffer attachment type: color 0
    	COLOR_CHANNEL1 = 1,   // Framebuffer attachment type: color 1
    	COLOR_CHANNEL2 = 2,   // Framebuffer attachment type: color 2
    	COLOR_CHANNEL3 = 3,   // Framebuffer attachment type: color 3
    	COLOR_CHANNEL4 = 4,   // Framebuffer attachment type: color 4
    	COLOR_CHANNEL5 = 5,   // Framebuffer attachment type: color 5
    	COLOR_CHANNEL6 = 6,   // Framebuffer attachment type: color 6
    	COLOR_CHANNEL7 = 7,   // Framebuffer attachment type: color 7
    	DEPTH          = 100, // Framebuffer attachment type: depth
    	STENCIL        = 200, // Framebuffer attachment type: stencil
    }
     

    Framebuffer attachment type NOTE: By default up to 8 color channels defined, but it can be more

    GamepadAxis ¶

    GamepadAxis :: enum i32 {
    	LEFT_X        = 0, // Gamepad left stick X axis
    	LEFT_Y        = 1, // Gamepad left stick Y axis
    	RIGHT_X       = 2, // Gamepad right stick X axis
    	RIGHT_Y       = 3, // Gamepad right stick Y axis
    	LEFT_TRIGGER  = 4, // Gamepad back trigger left, pressure level: [1..-1]
    	RIGHT_TRIGGER = 5, // Gamepad back trigger right, pressure level: [1..-1]
    }
     

    Gamepad axis

    Related Procedures With Parameters

    GamepadButton ¶

    GamepadButton :: enum i32 {
    	UNKNOWN          = 0, // Unknown button, just for error checking
    	LEFT_FACE_UP,         // Gamepad left DPAD up button
    	LEFT_FACE_RIGHT,      // Gamepad left DPAD right button
    	LEFT_FACE_DOWN,       // Gamepad left DPAD down button
    	LEFT_FACE_LEFT,       // Gamepad left DPAD left button
    	RIGHT_FACE_UP,        // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
    	RIGHT_FACE_RIGHT,     // Gamepad right button right (i.e. PS3: Square, Xbox: X)
    	RIGHT_FACE_DOWN,      // Gamepad right button down (i.e. PS3: Cross, Xbox: A)
    	RIGHT_FACE_LEFT,      // Gamepad right button left (i.e. PS3: Circle, Xbox: B)
    	LEFT_TRIGGER_1,       // Gamepad top/back trigger left (first), it could be a trailing button
    	LEFT_TRIGGER_2,       // Gamepad top/back trigger left (second), it could be a trailing button
    	RIGHT_TRIGGER_1,      // Gamepad top/back trigger right (one), it could be a trailing button
    	RIGHT_TRIGGER_2,      // Gamepad top/back trigger right (second), it could be a trailing button
    	MIDDLE_LEFT,          // Gamepad center buttons, left one (i.e. PS3: Select)
    	MIDDLE,               // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
    	MIDDLE_RIGHT,         // Gamepad center buttons, right one (i.e. PS3: Start)
    	LEFT_THUMB,           // Gamepad joystick pressed button left
    	RIGHT_THUMB,          // Gamepad joystick pressed button right
    }
     

    Gamepad buttons

    Related Procedures With Parameters
    Related Procedures With Returns

    Gesture ¶

    Gesture :: enum u32 {
    	TAP         = 0, // Tap gesture
    	DOUBLETAP   = 1, // Double tap gesture
    	HOLD        = 2, // Hold gesture
    	DRAG        = 3, // Drag gesture
    	SWIPE_RIGHT = 4, // Swipe right gesture
    	SWIPE_LEFT  = 5, // Swipe left gesture
    	SWIPE_UP    = 6, // Swipe up gesture
    	SWIPE_DOWN  = 7, // Swipe down gesture
    	PINCH_IN    = 8, // Pinch in gesture
    	PINCH_OUT   = 9, // Pinch out gesture
    }
     

    Gestures NOTE: It could be used as flags to enable only some gestures

    Related Procedures With Parameters

    Gestures ¶

    Gestures :: distinct bit_set[Gesture; u32]
    Related Procedures With Parameters
    Related Procedures With Returns

    GlVersion ¶

    GlVersion :: enum i32 {
    	OPENGL_11    = 1, // OpenGL 1.1
    	OPENGL_21,        // OpenGL 2.1 (GLSL 120)
    	OPENGL_33,        // OpenGL 3.3 (GLSL 330)
    	OPENGL_43,        // OpenGL 4.3 (using GLSL 330)
    	OPENGL_ES_20,     // OpenGL ES 2.0 (GLSL 100)
    	OPENGL_ES_30,     // OpenGL ES 3.0 (GLSL 300 es)
    }
     

    OpenGL version

    Related Procedures With Returns

    GlyphInfo ¶

    GlyphInfo :: struct {
    	value:    rune,
    	// Character value (Unicode)
    	offsetX:  i32,
    	// Character offset X when drawing
    	offsetY:  i32,
    	// Character offset Y when drawing
    	advanceX: i32,
    	// Character advance position X
    	image:    Image,
    }
     

    Font character info

    Related Procedures With Returns

    GuiCheckBoxProperty ¶

    GuiCheckBoxProperty :: enum i32 {
    	CHECK_PADDING = 16, // CheckBox internal check padding
    }
     

    CheckBox

    GuiColorPickerProperty ¶

    GuiColorPickerProperty :: enum i32 {
    	COLOR_SELECTOR_SIZE      = 16, 
    	HUEBAR_WIDTH,                  // ColorPicker right hue bar width
    	HUEBAR_PADDING,                // ColorPicker right hue bar separation from panel
    	HUEBAR_SELECTOR_HEIGHT,        // ColorPicker right hue bar selector height
    	HUEBAR_SELECTOR_OVERFLOW,      // ColorPicker right hue bar selector overflow
    }
     

    ColorPicker

    GuiComboBoxProperty ¶

    GuiComboBoxProperty :: enum i32 {
    	COMBO_BUTTON_WIDTH   = 16, // ComboBox right button width
    	COMBO_BUTTON_SPACING,      // ComboBox button separation
    }
     

    ComboBox

    GuiControl ¶

    GuiControl :: enum i32 {
    	// Default -> populates to all controls when set
    	DEFAULT     = 0, 
    	// Basic controls
    	LABEL,           // Used also for: LABELBUTTON
    	BUTTON, 
    	TOGGLE,          // Used also for: TOGGLEGROUP
    	SLIDER,          // Used also for: SLIDERBAR
    	PROGRESSBAR, 
    	CHECKBOX, 
    	COMBOBOX, 
    	DROPDOWNBOX, 
    	TEXTBOX,         // Used also for: TEXTBOXMULTI
    	VALUEBOX, 
    	SPINNER,         // Uses: BUTTON, VALUEBOX
    	LISTVIEW, 
    	COLORPICKER, 
    	SCROLLBAR, 
    	STATUSBAR, 
    }
     

    Gui controls

    GuiControlProperty ¶

    GuiControlProperty :: enum i32 {
    	BORDER_COLOR_NORMAL   = 0, 
    	BASE_COLOR_NORMAL, 
    	TEXT_COLOR_NORMAL, 
    	BORDER_COLOR_FOCUSED, 
    	BASE_COLOR_FOCUSED, 
    	TEXT_COLOR_FOCUSED, 
    	BORDER_COLOR_PRESSED, 
    	BASE_COLOR_PRESSED, 
    	TEXT_COLOR_PRESSED, 
    	BORDER_COLOR_DISABLED, 
    	BASE_COLOR_DISABLED, 
    	TEXT_COLOR_DISABLED, 
    	BORDER_WIDTH, 
    	TEXT_PADDING, 
    	TEXT_ALIGNMENT, 
    	RESERVED, 
    }
     

    Gui base properties for every control NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties)

    GuiDefaultProperty ¶

    GuiDefaultProperty :: enum i32 {
    	TEXT_SIZE         = 16, // Text size (glyphs max height)
    	TEXT_SPACING,           // Text spacing between glyphs
    	LINE_COLOR,             // Line control color
    	BACKGROUND_COLOR,       // Background color
    	TEXT_LINE_SPACING,      // Text spacing between lines
    }
     

    DEFAULT extended properties NOTE: Those properties are common to all controls or global

    GuiDropdownBoxProperty ¶

    GuiDropdownBoxProperty :: enum i32 {
    	ARROW_PADDING          = 16, // DropdownBox arrow separation from border and items
    	DROPDOWN_ITEMS_SPACING,      // DropdownBox items separation
    }
     

    DropdownBox

    GuiIconName ¶

    GuiIconName :: enum i32 {
    	ICON_NONE                    = 0, 
    	ICON_FOLDER_FILE_OPEN        = 1, 
    	ICON_FILE_SAVE_CLASSIC       = 2, 
    	ICON_FOLDER_OPEN             = 3, 
    	ICON_FOLDER_SAVE             = 4, 
    	ICON_FILE_OPEN               = 5, 
    	ICON_FILE_SAVE               = 6, 
    	ICON_FILE_EXPORT             = 7, 
    	ICON_FILE_ADD                = 8, 
    	ICON_FILE_DELETE             = 9, 
    	ICON_FILETYPE_TEXT           = 10, 
    	ICON_FILETYPE_AUDIO          = 11, 
    	ICON_FILETYPE_IMAGE          = 12, 
    	ICON_FILETYPE_PLAY           = 13, 
    	ICON_FILETYPE_VIDEO          = 14, 
    	ICON_FILETYPE_INFO           = 15, 
    	ICON_FILE_COPY               = 16, 
    	ICON_FILE_CUT                = 17, 
    	ICON_FILE_PASTE              = 18, 
    	ICON_CURSOR_HAND             = 19, 
    	ICON_CURSOR_POINTER          = 20, 
    	ICON_CURSOR_CLASSIC          = 21, 
    	ICON_PENCIL                  = 22, 
    	ICON_PENCIL_BIG              = 23, 
    	ICON_BRUSH_CLASSIC           = 24, 
    	ICON_BRUSH_PAINTER           = 25, 
    	ICON_WATER_DROP              = 26, 
    	ICON_COLOR_PICKER            = 27, 
    	ICON_RUBBER                  = 28, 
    	ICON_COLOR_BUCKET            = 29, 
    	ICON_TEXT_T                  = 30, 
    	ICON_TEXT_A                  = 31, 
    	ICON_SCALE                   = 32, 
    	ICON_RESIZE                  = 33, 
    	ICON_FILTER_POINT            = 34, 
    	ICON_FILTER_BILINEAR         = 35, 
    	ICON_CROP                    = 36, 
    	ICON_CROP_ALPHA              = 37, 
    	ICON_SQUARE_TOGGLE           = 38, 
    	ICON_SYMMETRY                = 39, 
    	ICON_SYMMETRY_HORIZONTAL     = 40, 
    	ICON_SYMMETRY_VERTICAL       = 41, 
    	ICON_LENS                    = 42, 
    	ICON_LENS_BIG                = 43, 
    	ICON_EYE_ON                  = 44, 
    	ICON_EYE_OFF                 = 45, 
    	ICON_FILTER_TOP              = 46, 
    	ICON_FILTER                  = 47, 
    	ICON_TARGET_POINT            = 48, 
    	ICON_TARGET_SMALL            = 49, 
    	ICON_TARGET_BIG              = 50, 
    	ICON_TARGET_MOVE             = 51, 
    	ICON_CURSOR_MOVE             = 52, 
    	ICON_CURSOR_SCALE            = 53, 
    	ICON_CURSOR_SCALE_RIGHT      = 54, 
    	ICON_CURSOR_SCALE_LEFT       = 55, 
    	ICON_UNDO                    = 56, 
    	ICON_REDO                    = 57, 
    	ICON_REREDO                  = 58, 
    	ICON_MUTATE                  = 59, 
    	ICON_ROTATE                  = 60, 
    	ICON_REPEAT                  = 61, 
    	ICON_SHUFFLE                 = 62, 
    	ICON_EMPTYBOX                = 63, 
    	ICON_TARGET                  = 64, 
    	ICON_TARGET_SMALL_FILL       = 65, 
    	ICON_TARGET_BIG_FILL         = 66, 
    	ICON_TARGET_MOVE_FILL        = 67, 
    	ICON_CURSOR_MOVE_FILL        = 68, 
    	ICON_CURSOR_SCALE_FILL       = 69, 
    	ICON_CURSOR_SCALE_RIGHT_FILL = 70, 
    	ICON_CURSOR_SCALE_LEFT_FILL  = 71, 
    	ICON_UNDO_FILL               = 72, 
    	ICON_REDO_FILL               = 73, 
    	ICON_REREDO_FILL             = 74, 
    	ICON_MUTATE_FILL             = 75, 
    	ICON_ROTATE_FILL             = 76, 
    	ICON_REPEAT_FILL             = 77, 
    	ICON_SHUFFLE_FILL            = 78, 
    	ICON_EMPTYBOX_SMALL          = 79, 
    	ICON_BOX                     = 80, 
    	ICON_BOX_TOP                 = 81, 
    	ICON_BOX_TOP_RIGHT           = 82, 
    	ICON_BOX_RIGHT               = 83, 
    	ICON_BOX_BOTTOM_RIGHT        = 84, 
    	ICON_BOX_BOTTOM              = 85, 
    	ICON_BOX_BOTTOM_LEFT         = 86, 
    	ICON_BOX_LEFT                = 87, 
    	ICON_BOX_TOP_LEFT            = 88, 
    	ICON_BOX_CENTER              = 89, 
    	ICON_BOX_CIRCLE_MASK         = 90, 
    	ICON_POT                     = 91, 
    	ICON_ALPHA_MULTIPLY          = 92, 
    	ICON_ALPHA_CLEAR             = 93, 
    	ICON_DITHERING               = 94, 
    	ICON_MIPMAPS                 = 95, 
    	ICON_BOX_GRID                = 96, 
    	ICON_GRID                    = 97, 
    	ICON_BOX_CORNERS_SMALL       = 98, 
    	ICON_BOX_CORNERS_BIG         = 99, 
    	ICON_FOUR_BOXES              = 100, 
    	ICON_GRID_FILL               = 101, 
    	ICON_BOX_MULTISIZE           = 102, 
    	ICON_ZOOM_SMALL              = 103, 
    	ICON_ZOOM_MEDIUM             = 104, 
    	ICON_ZOOM_BIG                = 105, 
    	ICON_ZOOM_ALL                = 106, 
    	ICON_ZOOM_CENTER             = 107, 
    	ICON_BOX_DOTS_SMALL          = 108, 
    	ICON_BOX_DOTS_BIG            = 109, 
    	ICON_BOX_CONCENTRIC          = 110, 
    	ICON_BOX_GRID_BIG            = 111, 
    	ICON_OK_TICK                 = 112, 
    	ICON_CROSS                   = 113, 
    	ICON_ARROW_LEFT              = 114, 
    	ICON_ARROW_RIGHT             = 115, 
    	ICON_ARROW_DOWN              = 116, 
    	ICON_ARROW_UP                = 117, 
    	ICON_ARROW_LEFT_FILL         = 118, 
    	ICON_ARROW_RIGHT_FILL        = 119, 
    	ICON_ARROW_DOWN_FILL         = 120, 
    	ICON_ARROW_UP_FILL           = 121, 
    	ICON_AUDIO                   = 122, 
    	ICON_FX                      = 123, 
    	ICON_WAVE                    = 124, 
    	ICON_WAVE_SINUS              = 125, 
    	ICON_WAVE_SQUARE             = 126, 
    	ICON_WAVE_TRIANGULAR         = 127, 
    	ICON_CROSS_SMALL             = 128, 
    	ICON_PLAYER_PREVIOUS         = 129, 
    	ICON_PLAYER_PLAY_BACK        = 130, 
    	ICON_PLAYER_PLAY             = 131, 
    	ICON_PLAYER_PAUSE            = 132, 
    	ICON_PLAYER_STOP             = 133, 
    	ICON_PLAYER_NEXT             = 134, 
    	ICON_PLAYER_RECORD           = 135, 
    	ICON_MAGNET                  = 136, 
    	ICON_LOCK_CLOSE              = 137, 
    	ICON_LOCK_OPEN               = 138, 
    	ICON_CLOCK                   = 139, 
    	ICON_TOOLS                   = 140, 
    	ICON_GEAR                    = 141, 
    	ICON_GEAR_BIG                = 142, 
    	ICON_BIN                     = 143, 
    	ICON_HAND_POINTER            = 144, 
    	ICON_LASER                   = 145, 
    	ICON_COIN                    = 146, 
    	ICON_EXPLOSION               = 147, 
    	ICON_1UP                     = 148, 
    	ICON_PLAYER                  = 149, 
    	ICON_PLAYER_JUMP             = 150, 
    	ICON_KEY                     = 151, 
    	ICON_DEMON                   = 152, 
    	ICON_TEXT_POPUP              = 153, 
    	ICON_GEAR_EX                 = 154, 
    	ICON_CRACK                   = 155, 
    	ICON_CRACK_POINTS            = 156, 
    	ICON_STAR                    = 157, 
    	ICON_DOOR                    = 158, 
    	ICON_EXIT                    = 159, 
    	ICON_MODE_2D                 = 160, 
    	ICON_MODE_3D                 = 161, 
    	ICON_CUBE                    = 162, 
    	ICON_CUBE_FACE_TOP           = 163, 
    	ICON_CUBE_FACE_LEFT          = 164, 
    	ICON_CUBE_FACE_FRONT         = 165, 
    	ICON_CUBE_FACE_BOTTOM        = 166, 
    	ICON_CUBE_FACE_RIGHT         = 167, 
    	ICON_CUBE_FACE_BACK          = 168, 
    	ICON_CAMERA                  = 169, 
    	ICON_SPECIAL                 = 170, 
    	ICON_LINK_NET                = 171, 
    	ICON_LINK_BOXES              = 172, 
    	ICON_LINK_MULTI              = 173, 
    	ICON_LINK                    = 174, 
    	ICON_LINK_BROKE              = 175, 
    	ICON_TEXT_NOTES              = 176, 
    	ICON_NOTEBOOK                = 177, 
    	ICON_SUITCASE                = 178, 
    	ICON_SUITCASE_ZIP            = 179, 
    	ICON_MAILBOX                 = 180, 
    	ICON_MONITOR                 = 181, 
    	ICON_PRINTER                 = 182, 
    	ICON_PHOTO_CAMERA            = 183, 
    	ICON_PHOTO_CAMERA_FLASH      = 184, 
    	ICON_HOUSE                   = 185, 
    	ICON_HEART                   = 186, 
    	ICON_CORNER                  = 187, 
    	ICON_VERTICAL_BARS           = 188, 
    	ICON_VERTICAL_BARS_FILL      = 189, 
    	ICON_LIFE_BARS               = 190, 
    	ICON_INFO                    = 191, 
    	ICON_CROSSLINE               = 192, 
    	ICON_HELP                    = 193, 
    	ICON_FILETYPE_ALPHA          = 194, 
    	ICON_FILETYPE_HOME           = 195, 
    	ICON_LAYERS_VISIBLE          = 196, 
    	ICON_LAYERS                  = 197, 
    	ICON_WINDOW                  = 198, 
    	ICON_HIDPI                   = 199, 
    	ICON_FILETYPE_BINARY         = 200, 
    	ICON_HEX                     = 201, 
    	ICON_SHIELD                  = 202, 
    	ICON_FILE_NEW                = 203, 
    	ICON_FOLDER_ADD              = 204, 
    	ICON_ALARM                   = 205, 
    	ICON_CPU                     = 206, 
    	ICON_ROM                     = 207, 
    	ICON_STEP_OVER               = 208, 
    	ICON_STEP_INTO               = 209, 
    	ICON_STEP_OUT                = 210, 
    	ICON_RESTART                 = 211, 
    	ICON_BREAKPOINT_ON           = 212, 
    	ICON_BREAKPOINT_OFF          = 213, 
    	ICON_BURGER_MENU             = 214, 
    	ICON_CASE_SENSITIVE          = 215, 
    	ICON_REG_EXP                 = 216, 
    	ICON_FOLDER                  = 217, 
    	ICON_FILE                    = 218, 
    	ICON_SAND_TIMER              = 219, 
    	ICON_220                     = 220, 
    	ICON_221                     = 221, 
    	ICON_222                     = 222, 
    	ICON_223                     = 223, 
    	ICON_224                     = 224, 
    	ICON_225                     = 225, 
    	ICON_226                     = 226, 
    	ICON_227                     = 227, 
    	ICON_228                     = 228, 
    	ICON_229                     = 229, 
    	ICON_230                     = 230, 
    	ICON_231                     = 231, 
    	ICON_232                     = 232, 
    	ICON_233                     = 233, 
    	ICON_234                     = 234, 
    	ICON_235                     = 235, 
    	ICON_236                     = 236, 
    	ICON_237                     = 237, 
    	ICON_238                     = 238, 
    	ICON_239                     = 239, 
    	ICON_240                     = 240, 
    	ICON_241                     = 241, 
    	ICON_242                     = 242, 
    	ICON_243                     = 243, 
    	ICON_244                     = 244, 
    	ICON_245                     = 245, 
    	ICON_246                     = 246, 
    	ICON_247                     = 247, 
    	ICON_248                     = 248, 
    	ICON_249                     = 249, 
    	ICON_250                     = 250, 
    	ICON_251                     = 251, 
    	ICON_252                     = 252, 
    	ICON_253                     = 253, 
    	ICON_254                     = 254, 
    	ICON_255                     = 255, 
    }
     

    ---------------------------------------------------------------------------------- Icons enumeration ----------------------------------------------------------------------------------

    GuiListViewProperty ¶

    GuiListViewProperty :: enum i32 {
    	LIST_ITEMS_HEIGHT  = 16, // ListView items height
    	LIST_ITEMS_SPACING,      // ListView items separation
    	SCROLLBAR_WIDTH,         // ListView scrollbar size (usually width)
    	SCROLLBAR_SIDE,          // ListView scrollbar side (0-left, 1-right)
    }
     

    ListView

    GuiProgressBarProperty ¶

    GuiProgressBarProperty :: enum i32 {
    	PROGRESS_PADDING = 16, // ProgressBar internal padding
    }
     

    ProgressBar

    GuiScrollBarProperty ¶

    GuiScrollBarProperty :: enum i32 {
    	ARROWS_SIZE           = 16, 
    	ARROWS_VISIBLE, 
    	SCROLL_SLIDER_PADDING,      // (SLIDERBAR, SLIDER_PADDING)
    	SCROLL_SLIDER_SIZE, 
    	SCROLL_PADDING, 
    	SCROLL_SPEED, 
    }
     

    ScrollBar

    GuiSliderProperty ¶

    GuiSliderProperty :: enum i32 {
    	SLIDER_WIDTH   = 16, // Slider size of internal bar
    	SLIDER_PADDING,      // Slider/SliderBar internal bar padding
    }
     

    Slider/SliderBar

    GuiSpinnerProperty ¶

    GuiSpinnerProperty :: enum i32 {
    	SPIN_BUTTON_WIDTH   = 16, // Spinner left/right buttons width
    	SPIN_BUTTON_SPACING,      // Spinner buttons separation
    }
     

    Spinner

    GuiState ¶

    GuiState :: enum i32 {
    	STATE_NORMAL   = 0, 
    	STATE_FOCUSED, 
    	STATE_PRESSED, 
    	STATE_DISABLED, 
    }
     

    Gui control state

    GuiStyleProp ¶

    GuiStyleProp :: struct {
    	controlId:     u16,
    	propertyId:    u16,
    	propertyValue: i32,
    }
     

    Style property

    GuiTextAlignment ¶

    GuiTextAlignment :: enum i32 {
    	TEXT_ALIGN_LEFT   = 0, 
    	TEXT_ALIGN_CENTER, 
    	TEXT_ALIGN_RIGHT, 
    }
     

    Gui control text alignment

    GuiTextAlignmentVertical ¶

    GuiTextAlignmentVertical :: enum i32 {
    	TEXT_ALIGN_TOP    = 0, 
    	TEXT_ALIGN_MIDDLE, 
    	TEXT_ALIGN_BOTTOM, 
    }

    GuiTextBoxProperty ¶

    GuiTextBoxProperty :: enum i32 {
    	TEXT_INNER_PADDING      = 16, // TextBox/TextBoxMulti/ValueBox/Spinner inner text padding
    	TEXT_LINES_SPACING,           // TextBoxMulti lines separation
    	TEXT_ALIGNMENT_VERTICAL,      // TextBoxMulti vertical alignment: 0-CENTERED, 1-UP, 2-DOWN
    	TEXT_MULTILINE,               // TextBox supports multiple lines
    	TEXT_WRAP_MODE,               // TextBox wrap mode for multiline: 0-NO_WRAP, 1-CHAR_WRAP, 2-WORD_WRAP
    }
     

    TextBox/TextBoxMulti/ValueBox/Spinner

    GuiTextWrapMode ¶

    GuiTextWrapMode :: enum i32 {
    	TEXT_WRAP_NONE = 0, 
    	TEXT_WRAP_CHAR, 
    	TEXT_WRAP_WORD, 
    }

    GuiToggleProperty ¶

    GuiToggleProperty :: enum i32 {
    	GROUP_PADDING = 16, // ToggleGroup separation between toggles
    }
     

    Toggle/ToggleGroup

    Image ¶

    Image :: struct {
    	data:    rawptr,
    	// Image raw data
    	width:   i32,
    	// Image base width
    	height:  i32,
    	// Image base height
    	mipmaps: i32,
    	// Mipmap levels, 1 by default
    	format:  PixelFormat,
    }
     

    Image type, bpp always RGBA (32bit) NOTE: Data stored in CPU memory (RAM)

    Related Procedures With Parameters
    Related Procedures With Returns

    KeyboardKey ¶

    KeyboardKey :: enum i32 {
    	KEY_NULL      = 0,   // Key: NULL, used for no key pressed
    	// Alphanumeric keys
    	APOSTROPHE    = 39,  // Key: '
    	COMMA         = 44,  // Key: ,
    	MINUS         = 45,  // Key: -
    	PERIOD        = 46,  // Key: .
    	SLASH         = 47,  // Key: /
    	ZERO          = 48,  // Key: 0
    	ONE           = 49,  // Key: 1
    	TWO           = 50,  // Key: 2
    	THREE         = 51,  // Key: 3
    	FOUR          = 52,  // Key: 4
    	FIVE          = 53,  // Key: 5
    	SIX           = 54,  // Key: 6
    	SEVEN         = 55,  // Key: 7
    	EIGHT         = 56,  // Key: 8
    	NINE          = 57,  // Key: 9
    	SEMICOLON     = 59,  // Key: ;
    	EQUAL         = 61,  // Key: =
    	A             = 65,  // Key: A | a
    	B             = 66,  // Key: B | b
    	C             = 67,  // Key: C | c
    	D             = 68,  // Key: D | d
    	E             = 69,  // Key: E | e
    	F             = 70,  // Key: F | f
    	G             = 71,  // Key: G | g
    	H             = 72,  // Key: H | h
    	I             = 73,  // Key: I | i
    	J             = 74,  // Key: J | j
    	K             = 75,  // Key: K | k
    	L             = 76,  // Key: L | l
    	M             = 77,  // Key: M | m
    	N             = 78,  // Key: N | n
    	O             = 79,  // Key: O | o
    	P             = 80,  // Key: P | p
    	Q             = 81,  // Key: Q | q
    	R             = 82,  // Key: R | r
    	S             = 83,  // Key: S | s
    	T             = 84,  // Key: T | t
    	U             = 85,  // Key: U | u
    	V             = 86,  // Key: V | v
    	W             = 87,  // Key: W | w
    	X             = 88,  // Key: X | x
    	Y             = 89,  // Key: Y | y
    	Z             = 90,  // Key: Z | z
    	LEFT_BRACKET  = 91,  // Key: [
    	BACKSLASH     = 92,  // Key: '\'
    	RIGHT_BRACKET = 93,  // Key: ]
    	GRAVE         = 96,  // Key: `
    	// Function keys
    	SPACE         = 32,  // Key: Space
    	ESCAPE        = 256, // Key: Esc
    	ENTER         = 257, // Key: Enter
    	TAB           = 258, // Key: Tab
    	BACKSPACE     = 259, // Key: Backspace
    	INSERT        = 260, // Key: Ins
    	DELETE        = 261, // Key: Del
    	RIGHT         = 262, // Key: Cursor right
    	LEFT          = 263, // Key: Cursor left
    	DOWN          = 264, // Key: Cursor down
    	UP            = 265, // Key: Cursor up
    	PAGE_UP       = 266, // Key: Page up
    	PAGE_DOWN     = 267, // Key: Page down
    	HOME          = 268, // Key: Home
    	END           = 269, // Key: End
    	CAPS_LOCK     = 280, // Key: Caps lock
    	SCROLL_LOCK   = 281, // Key: Scroll down
    	NUM_LOCK      = 282, // Key: Num lock
    	PRINT_SCREEN  = 283, // Key: Print screen
    	PAUSE         = 284, // Key: Pause
    	F1            = 290, // Key: F1
    	F2            = 291, // Key: F2
    	F3            = 292, // Key: F3
    	F4            = 293, // Key: F4
    	F5            = 294, // Key: F5
    	F6            = 295, // Key: F6
    	F7            = 296, // Key: F7
    	F8            = 297, // Key: F8
    	F9            = 298, // Key: F9
    	F10           = 299, // Key: F10
    	F11           = 300, // Key: F11
    	F12           = 301, // Key: F12
    	LEFT_SHIFT    = 340, // Key: Shift left
    	LEFT_CONTROL  = 341, // Key: Control left
    	LEFT_ALT      = 342, // Key: Alt left
    	LEFT_SUPER    = 343, // Key: Super left
    	RIGHT_SHIFT   = 344, // Key: Shift right
    	RIGHT_CONTROL = 345, // Key: Control right
    	RIGHT_ALT     = 346, // Key: Alt right
    	RIGHT_SUPER   = 347, // Key: Super right
    	KB_MENU       = 348, // Key: KB menu
    	// Keypad keys
    	KP_0          = 320, // Key: Keypad 0
    	KP_1          = 321, // Key: Keypad 1
    	KP_2          = 322, // Key: Keypad 2
    	KP_3          = 323, // Key: Keypad 3
    	KP_4          = 324, // Key: Keypad 4
    	KP_5          = 325, // Key: Keypad 5
    	KP_6          = 326, // Key: Keypad 6
    	KP_7          = 327, // Key: Keypad 7
    	KP_8          = 328, // Key: Keypad 8
    	KP_9          = 329, // Key: Keypad 9
    	KP_DECIMAL    = 330, // Key: Keypad .
    	KP_DIVIDE     = 331, // Key: Keypad /
    	KP_MULTIPLY   = 332, // Key: Keypad *
    	KP_SUBTRACT   = 333, // Key: Keypad -
    	KP_ADD        = 334, // Key: Keypad +
    	KP_ENTER      = 335, // Key: Keypad Enter
    	KP_EQUAL      = 336, // Key: Keypad =
    	// Android key buttons
    	BACK          = 4,   // Key: Android back button
    	MENU          = 82,  // Key: Android menu button
    	VOLUME_UP     = 24,  // Key: Android volume up button
    	VOLUME_DOWN   = 25,  // Key: Android volume down button
    }
     

    Keyboard keys (US keyboard layout) NOTE: Use GetKeyPressed() to allow redefining required keys for alternative layouts

    Related Procedures With Parameters
    Related Procedures With Returns

    LoadFileDataCallback ¶

    LoadFileDataCallback :: proc "c" (fileName: cstring, dataSize: ^i32) -> [^]u8
     

    FileIO: Load binary data

    Related Procedures With Parameters

    LoadFileTextCallback ¶

    LoadFileTextCallback :: proc "c" (fileName: cstring) -> [^]u8
     

    FileIO: Load text data

    Related Procedures With Parameters

    Material ¶

    Material :: struct {
    	shader: Shader,
    	// Material shader
    	maps:   [^]MaterialMap,
    	// Material maps array (MAX_MATERIAL_MAPS)
    	params: [4]f32,
    }
     

    Material type (generic)

    Related Procedures With Parameters
    Related Procedures With Returns

    MaterialMap ¶

    MaterialMap :: struct {
    	texture: Texture,
    	// Material map texture
    	color:   Color,
    	// Material map color
    	value:   f32,
    }
     

    Material texture map

    MaterialMapIndex ¶

    MaterialMapIndex :: enum i32 {
    	ALBEDO     = 0, // Albedo material (same as: MATERIAL_MAP_DIFFUSE)
    	METALNESS,      // Metalness material (same as: MATERIAL_MAP_SPECULAR)
    	NORMAL,         // Normal material
    	ROUGHNESS,      // Roughness material
    	OCCLUSION,      // Ambient occlusion material
    	EMISSION,       // Emission material
    	HEIGHT,         // Heightmap material
    	CUBEMAP,        // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
    	IRRADIANCE,     // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
    	PREFILTER,      // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
    	BRDF,           // Brdf material
    }
     

    Material map index

    Related Procedures With Parameters

    Matrix ¶

    Matrix :: matrix[4, 4]f32
     

    Matrix type (right handed, stored row major)

    Mesh ¶

    Mesh :: struct {
    	vertexCount:   i32,
    	// Number of vertices stored in arrays
    	triangleCount: i32,
    	// Default vertex data
    	vertices:      [^]f32,
    	// Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
    	texcoords:     [^]f32,
    	// Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
    	texcoords2:    [^]f32,
    	// Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
    	normals:       [^]f32,
    	// Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
    	tangents:      [^]f32,
    	// Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
    	colors:        [^]u8,
    	// Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
    	indices:       [^]u16,
    	// Animation vertex data
    	animVertices:  [^]f32,
    	// Animated vertex positions (after bones transformations)
    	animNormals:   [^]f32,
    	// Animated normals (after bones transformations)
    	boneIds:       [^]u8,
    	// Vertex bone ids, up to 4 bones influence by vertex (skinning)
    	boneWeights:   [^]f32,
    	// OpenGL identifiers
    	vaoId:         u32,
    	// OpenGL Vertex Array Object id
    	vboId:         [^]u32,
    }
     

    Vertex data defining a mesh NOTE: Data stored in CPU memory (and GPU)

    Related Procedures With Parameters
    Related Procedures With Returns

    Model ¶

    Model :: struct #align (align_of(uintptr)) {
    	transform:     matrix[4, 4]f32,
    	// Local transform matrix
    	meshCount:     i32,
    	// Number of meshes
    	materialCount: i32,
    	// Number of materials
    	meshes:        [^]Mesh,
    	// Meshes array
    	materials:     [^]Material,
    	// Materials array
    	meshMaterial:  [^]i32,
    	// Animation data
    	boneCount:     i32,
    	// Number of bones
    	bones:         [^]BoneInfo,
    	// Bones information (skeleton)
    	bindPose:      [^]Transform,
    }
     

    Model type

    Related Procedures With Parameters
    Related Procedures With Returns

    ModelAnimation ¶

    ModelAnimation :: struct {
    	boneCount:  i32,
    	// Number of bones
    	frameCount: i32,
    	// Number of animation frames
    	bones:      [^]BoneInfo,
    	// Bones information (skeleton)
    	framePoses: [^][^]Transform,
    	// Poses array by frame
    	name:       [32]u8,
    }
     

    Model animation

    Related Procedures With Parameters

    MouseButton ¶

    MouseButton :: enum i32 {
    	LEFT    = 0, // Mouse button left
    	RIGHT   = 1, // Mouse button right
    	MIDDLE  = 2, // Mouse button middle (pressed wheel)
    	SIDE    = 3, // Mouse button side (advanced mouse device)
    	EXTRA   = 4, // Mouse button extra (advanced mouse device)
    	FORWARD = 5, // Mouse button fordward (advanced mouse device)
    	BACK    = 6, // Mouse button back (advanced mouse device)
    }
     

    Mouse buttons

    Related Procedures With Parameters

    MouseCursor ¶

    MouseCursor :: enum i32 {
    	DEFAULT       = 0,  // Default pointer shape
    	ARROW         = 1,  // Arrow shape
    	IBEAM         = 2,  // Text writing cursor shape
    	CROSSHAIR     = 3,  // Cross shape
    	POINTING_HAND = 4,  // Pointing hand cursor
    	RESIZE_EW     = 5,  // Horizontal resize/move arrow shape
    	RESIZE_NS     = 6,  // Vertical resize/move arrow shape
    	RESIZE_NWSE   = 7,  // Top-left to bottom-right diagonal resize/move arrow shape
    	RESIZE_NESW   = 8,  // The top-right to bottom-left diagonal resize/move arrow shape
    	RESIZE_ALL    = 9,  // The omnidirectional resize/move cursor shape
    	NOT_ALLOWED   = 10, // The operation-not-allowed shape
    }
     

    Mouse cursor

    Related Procedures With Parameters

    Music ¶

    Music :: struct {
    	using stream: AudioStream,
    	// Audio stream
    	frameCount: u32,
    	// Total number of frames (considering channels)
    	looping:    bool,
    	// Music looping enable
    	ctxType:    i32,
    	// Type of music context (audio filetype)
    	ctxData:    rawptr,
    }
     

    Music stream type (audio file streaming from memory) NOTE: Anything longer than ~10 seconds should be streamed

    Related Procedures With Parameters
    Related Procedures With Returns
    Procedures Through `using` From AudioStream

    NPatchInfo ¶

    NPatchInfo :: struct {
    	source: Rectangle,
    	// Texture source rectangle
    	left:   i32,
    	// Left border offset
    	top:    i32,
    	// Top border offset
    	right:  i32,
    	// Right border offset
    	bottom: i32,
    	// Bottom border offset
    	layout: NPatchLayout,
    }
     

    N-Patch layout info

    Related Procedures With Parameters

    NPatchLayout ¶

    NPatchLayout :: enum i32 {
    	NINE_PATCH             = 0, // Npatch layout: 3x3 tiles
    	THREE_PATCH_VERTICAL,       // Npatch layout: 1x3 tiles
    	THREE_PATCH_HORIZONTAL,     // Npatch layout: 3x1 tiles
    }
     

    N-patch layout

    PixelFormat ¶

    PixelFormat :: enum i32 {
    	UNKNOWN                   = 0, 
    	UNCOMPRESSED_GRAYSCALE    = 1, // 8 bit per pixel (no alpha)
    	UNCOMPRESSED_GRAY_ALPHA,       // 8*2 bpp (2 channels)
    	UNCOMPRESSED_R5G6B5,           // 16 bpp
    	UNCOMPRESSED_R8G8B8,           // 24 bpp
    	UNCOMPRESSED_R5G5B5A1,         // 16 bpp (1 bit alpha)
    	UNCOMPRESSED_R4G4B4A4,         // 16 bpp (4 bit alpha)
    	UNCOMPRESSED_R8G8B8A8,         // 32 bpp
    	UNCOMPRESSED_R32,              // 32 bpp (1 channel - float)
    	UNCOMPRESSED_R32G32B32,        // 32*3 bpp (3 channels - float)
    	UNCOMPRESSED_R32G32B32A32,     // 32*4 bpp (4 channels - float)
    	UNCOMPRESSED_R16,              // 16 bpp (1 channel - float)
    	UNCOMPRESSED_R16G16B16,        // 16*3 bpp (3 channels - float)
    	UNCOMPRESSED_R16G16B16A16,     // 16*4 bpp (4 channels - float)
    	COMPRESSED_DXT1_RGB,           // 4 bpp (no alpha)
    	COMPRESSED_DXT1_RGBA,          // 4 bpp (1 bit alpha)
    	COMPRESSED_DXT3_RGBA,          // 8 bpp
    	COMPRESSED_DXT5_RGBA,          // 8 bpp
    	COMPRESSED_ETC1_RGB,           // 4 bpp
    	COMPRESSED_ETC2_RGB,           // 4 bpp
    	COMPRESSED_ETC2_EAC_RGBA,      // 8 bpp
    	COMPRESSED_PVRT_RGB,           // 4 bpp
    	COMPRESSED_PVRT_RGBA,          // 4 bpp
    	COMPRESSED_ASTC_4x4_RGBA,      // 8 bpp
    	COMPRESSED_ASTC_8x8_RGBA,      // 2 bpp
    }
     

    Pixel formats NOTE: Support depends on OpenGL version and platform

    Related Procedures With Parameters

    Quaternion ¶

    Quaternion :: quaternion128
     

    Quaternion type

    Ray ¶

    Ray :: struct {
    	position:  [3]f32,
    	// Ray position (origin)
    	direction: [3]f32,
    }
     

    Ray type (useful for raycast)

    Related Procedures With Parameters
    Related Procedures With Returns

    RayCollision ¶

    RayCollision :: struct {
    	hit:      bool,
    	// Did the ray hit something?
    	distance: f32,
    	// Distance to nearest hit
    	point:    [3]f32,
    	// Point of nearest hit
    	normal:   [3]f32,
    }
     

    RayCollision, ray hit information

    Related Procedures With Returns

    RenderBatch ¶

    RenderBatch :: struct {
    	bufferCount:   i32,
    	// Number of vertex buffers (multi-buffering support)
    	currentBuffer: i32,
    	// Current buffer tracking in case of multi-buffering
    	vertexBuffer:  [^]VertexBuffer,
    	// Dynamic buffer(s) for vertex data
    	draws:         [^]DrawCall,
    	// Draw calls array, depends on textureId
    	drawCounter:   i32,
    	// Draw calls counter
    	currentDepth:  f32,
    }
     

    RenderBatch type

    Related Procedures With Parameters
    Related Procedures With Returns

    RenderTexture ¶

    RenderTexture :: struct {
    	id:      u32,
    	// OpenGL framebuffer object id
    	texture: Texture,
    	// Color buffer attachment texture
    	depth:   Texture,
    }
     

    RenderTexture type, for texture rendering

    Related Procedures With Parameters
    Related Procedures With Returns

    RenderTexture2D ¶

    RenderTexture2D :: RenderTexture
     

    RenderTexture2D type, same as RenderTexture

    SaveFileDataCallback ¶

    SaveFileDataCallback :: proc "c" (fileName: cstring, data: rawptr, dataSize: i32) -> bool
     

    FileIO: Save binary data

    Related Procedures With Parameters

    SaveFileTextCallback ¶

    SaveFileTextCallback :: proc "c" (fileName: cstring, text: cstring) -> bool
     

    FileIO: Save text data

    Related Procedures With Parameters

    Shader ¶

    Shader :: struct {
    	id:   u32,
    	// Shader program id
    	locs: [^]i32,
    }
     

    Shader type (generic)

    Related Procedures With Parameters
    Related Procedures With Returns

    ShaderAttributeDataType ¶

    ShaderAttributeDataType :: enum i32 {
    	FLOAT = 0, // Shader attribute type: float
    	VEC2,      // Shader attribute type: vec2 (2 float)
    	VEC3,      // Shader attribute type: vec3 (3 float)
    	VEC4,      // Shader attribute type: vec4 (4 float)
    }
     

    Shader attribute data types

    ShaderLocationIndex ¶

    ShaderLocationIndex :: enum i32 {
    	VERTEX_POSITION   = 0, // Shader location: vertex attribute: position
    	VERTEX_TEXCOORD01,     // Shader location: vertex attribute: texcoord01
    	VERTEX_TEXCOORD02,     // Shader location: vertex attribute: texcoord02
    	VERTEX_NORMAL,         // Shader location: vertex attribute: normal
    	VERTEX_TANGENT,        // Shader location: vertex attribute: tangent
    	VERTEX_COLOR,          // Shader location: vertex attribute: color
    	MATRIX_MVP,            // Shader location: matrix uniform: model-view-projection
    	MATRIX_VIEW,           // Shader location: matrix uniform: view (camera transform)
    	MATRIX_PROJECTION,     // Shader location: matrix uniform: projection
    	MATRIX_MODEL,          // Shader location: matrix uniform: model (transform)
    	MATRIX_NORMAL,         // Shader location: matrix uniform: normal
    	VECTOR_VIEW,           // Shader location: vector uniform: view
    	COLOR_DIFFUSE,         // Shader location: vector uniform: diffuse color
    	COLOR_SPECULAR,        // Shader location: vector uniform: specular color
    	COLOR_AMBIENT,         // Shader location: vector uniform: ambient color
    	MAP_ALBEDO,            // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
    	MAP_METALNESS,         // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
    	MAP_NORMAL,            // Shader location: sampler2d texture: normal
    	MAP_ROUGHNESS,         // Shader location: sampler2d texture: roughness
    	MAP_OCCLUSION,         // Shader location: sampler2d texture: occlusion
    	MAP_EMISSION,          // Shader location: sampler2d texture: emission
    	MAP_HEIGHT,            // Shader location: sampler2d texture: height
    	MAP_CUBEMAP,           // Shader location: samplerCube texture: cubemap
    	MAP_IRRADIANCE,        // Shader location: samplerCube texture: irradiance
    	MAP_PREFILTER,         // Shader location: samplerCube texture: prefilter
    	MAP_BRDF,              // Shader location: sampler2d texture: brdf
    }
     

    Shader location index

    Related Procedures With Parameters
    Related Procedures With Returns

    ShaderUniformDataType ¶

    ShaderUniformDataType :: enum i32 {
    	FLOAT     = 0, // Shader uniform type: float
    	VEC2,          // Shader uniform type: vec2 (2 float)
    	VEC3,          // Shader uniform type: vec3 (3 float)
    	VEC4,          // Shader uniform type: vec4 (4 float)
    	INT,           // Shader uniform type: int
    	IVEC2,         // Shader uniform type: ivec2 (2 int)
    	IVEC3,         // Shader uniform type: ivec3 (3 int)
    	IVEC4,         // Shader uniform type: ivec4 (4 int)
    	SAMPLER2D,     // Shader uniform type: sampler2d
    }
     

    Shader uniform data type

    Related Procedures With Parameters

    Texture ¶

    Texture :: struct {
    	id:      u32,
    	// OpenGL texture id
    	width:   i32,
    	// Texture base width
    	height:  i32,
    	// Texture base height
    	mipmaps: i32,
    	// Mipmap levels, 1 by default
    	format:  PixelFormat,
    }
     

    Texture type NOTE: Data stored in GPU memory

    Related Procedures With Parameters
    Related Procedures With Returns

    Texture2D ¶

    Texture2D :: Texture
     

    Texture2D type, same as Texture

    TextureCubemap ¶

    TextureCubemap :: Texture
     

    TextureCubemap type, actually, same as Texture

    TextureFilter ¶

    TextureFilter :: enum i32 {
    	POINT           = 0, // No filter, just pixel approximation
    	BILINEAR,            // Linear filtering
    	TRILINEAR,           // Trilinear filtering (linear with mipmaps)
    	ANISOTROPIC_4X,      // Anisotropic filtering 4x
    	ANISOTROPIC_8X,      // Anisotropic filtering 8x
    	ANISOTROPIC_16X,     // Anisotropic filtering 16x
    }
     

    Texture parameters: filter mode NOTE 1: Filtering considers mipmaps if available in the texture NOTE 2: Filter is accordingly set for minification and magnification

    Related Procedures With Parameters

    TextureWrap ¶

    TextureWrap :: enum i32 {
    	REPEAT        = 0, // Repeats texture in tiled mode
    	CLAMP,             // Clamps texture to edge pixel in tiled mode
    	MIRROR_REPEAT,     // Mirrors and repeats the texture in tiled mode
    	MIRROR_CLAMP,      // Mirrors and clamps to border the texture in tiled mode
    }
     

    Texture parameters: wrap mode

    Related Procedures With Parameters

    TraceLogCallback ¶

    TraceLogCallback :: proc "c" (logLevel: TraceLogLevel, text: cstring, args: c.va_list)
     

    Callbacks to hook some internal functions WARNING: This callbacks are intended for advance users

    Related Procedures With Parameters

    TraceLogLevel ¶

    TraceLogLevel :: enum i32 {
    	ALL     = 0, // Display all logs
    	TRACE,       // Trace logging, intended for internal use only
    	DEBUG,       // Debug logging, used for internal debugging, it should be disabled on release builds
    	INFO,        // Info logging, used for program execution info
    	WARNING,     // Warning logging, used on recoverable failures
    	ERROR,       // Error logging, used on unrecoverable failures
    	FATAL,       // Fatal logging, used to abort program: exit(EXIT_FAILURE)
    	NONE,        // Disable logging
    }
     

    Trace log level

    Related Procedures With Parameters

    Transform ¶

    Transform :: struct {
    	translation: [3]f32,
    	// Translation
    	rotation:    quaternion128,
    	// Rotation
    	scale:       [3]f32,
    }
     

    Transformation properties

    Vector2 ¶

    Vector2 :: [2]f32
     

    Vector2 type

    Vector3 ¶

    Vector3 :: [3]f32
     

    Vector3 type

    Vector4 ¶

    Vector4 :: [4]f32
     

    Vector4 type

    VertexBuffer ¶

    VertexBuffer :: struct {
    	elementCount: i32,
    	// Number of elements in the buffer (QUADS)
    	vertices:     [^]f32,
    	// Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
    	texcoords:    [^]f32,
    	// Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
    	colors:       [^]u8,
    	// Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
    	indices:      [^]u32,
    	// Vertex indices (in case vertex data comes indexed) (6 indices per quad)
    	vaoId:        u32,
    	// OpenGL Vertex Array Object id
    	vboId:        [4]u32,
    }
     

    Dynamic vertex buffers (position + texcoords + colors + indices arrays)

    VertexBufferIndexType ¶

    VertexBufferIndexType :: u32

    VrDeviceInfo ¶

    VrDeviceInfo :: struct {
    	hResolution:            i32,
    	// Horizontal resolution in pixels
    	vResolution:            i32,
    	// Vertical resolution in pixels
    	hScreenSize:            f32,
    	// Horizontal size in meters
    	vScreenSize:            f32,
    	// Vertical size in meters
    	eyeToScreenDistance:    f32,
    	// Distance between eye and display in meters
    	lensSeparationDistance: f32,
    	// Lens separation distance in meters
    	interpupillaryDistance: f32,
    	// IPD (distance between pupils) in meters
    	lensDistortionValues:   [4]f32,
    	// Lens distortion constant parameters
    	chromaAbCorrection:     [4]f32,
    }
     

    Head-Mounted-Display device parameters

    Related Procedures With Parameters

    VrStereoConfig ¶

    VrStereoConfig :: struct #align (4) {
    	projection:        [2]matrix[4, 4]f32,
    	// VR projection matrices (per eye)
    	viewOffset:        [2]matrix[4, 4]f32,
    	// VR view offset matrices (per eye)
    	leftLensCenter:    [2]f32,
    	// VR left lens center
    	rightLensCenter:   [2]f32,
    	// VR right lens center
    	leftScreenCenter:  [2]f32,
    	// VR left screen center
    	rightScreenCenter: [2]f32,
    	// VR right screen center
    	scale:             [2]f32,
    	// VR distortion scale
    	scaleIn:           [2]f32,
    }
     

    VR Stereo rendering configuration for simulator

    Related Procedures With Parameters
    Related Procedures With Returns

    Wave ¶

    Wave :: struct {
    	frameCount: u32,
    	// Total number of frames (considering channels)
    	sampleRate: u32,
    	// Frequency (samples per second)
    	sampleSize: u32,
    	// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
    	channels:   u32,
    	// Number of channels (1-mono, 2-stereo)
    	data:       rawptr,
    }
     

    Wave type, defines audio wave data

    Related Procedures With Parameters
    Related Procedures With Returns

    Constants

    BEIGE ¶

    BEIGE :: Color{211, 176, 131, 255}
     

    Beige

    BLACK ¶

    BLACK :: Color{0, 0, 0, 255}
     

    Black

    BLANK ¶

    BLANK :: Color{0, 0, 0, 0}
     

    Blank (Transparent)

    BLUE ¶

    BLUE :: Color{0, 121, 241, 255}
     

    Blue

    BROWN ¶

    BROWN :: Color{127, 106, 79, 255}
     

    Brown

    DARKBLUE ¶

    DARKBLUE :: Color{0, 82, 172, 255}
     

    Dark Blue

    DARKBROWN ¶

    DARKBROWN :: Color{76, 63, 47, 255}
     

    Dark Brown

    DARKGRAY ¶

    DARKGRAY :: Color{80, 80, 80, 255}
     

    Dark Gray

    DARKGREEN ¶

    DARKGREEN :: Color{0, 117, 44, 255}
     

    Dark Green

    DARKPURPLE ¶

    DARKPURPLE :: Color{112, 31, 126, 255}
     

    Dark Purple

    DEG2RAD ¶

    DEG2RAD :: PI / 180.0

    EPSILON ¶

    EPSILON :: 0.000001

    GOLD ¶

    GOLD :: Color{255, 203, 0, 255}
     

    Gold

    GRAY ¶

    GRAY :: Color{130, 130, 130, 255}
     

    Gray

    GREEN ¶

    GREEN :: Color{0, 228, 48, 255}
     

    Green

    LIGHTGRAY ¶

    LIGHTGRAY :: Color{200, 200, 200, 255}
     

    Some Basic Colors NOTE: Custom raylib color palette for amazing visuals on WHITE background

    LIME ¶

    LIME :: Color{0, 158, 47, 255}
     

    Lime

    MAGENTA ¶

    MAGENTA :: Color{255, 0, 255, 255}
     

    Magenta

    MAROON ¶

    MAROON :: Color{190, 33, 55, 255}
     

    Maroon

    MAX_TEXTFORMAT_BUFFERS ¶

    MAX_TEXTFORMAT_BUFFERS :: #config(RAYLIB_MAX_TEXTFORMAT_BUFFERS, 4)

    MAX_TEXT_BUFFER_LENGTH ¶

    MAX_TEXT_BUFFER_LENGTH :: #config(RAYLIB_MAX_TEXT_BUFFER_LENGTH, 1024)

    ORANGE ¶

    ORANGE :: Color{255, 161, 0, 255}
     

    Orange

    PI ¶

    PI :: 3.14159265358979323846

    PINK ¶

    PINK :: Color{255, 109, 194, 255}
     

    Pink

    PURPLE ¶

    PURPLE :: Color{200, 122, 255, 255}
     

    Purple

    RAD2DEG ¶

    RAD2DEG :: 180.0 / PI

    RAYGUI_SHARED ¶

    RAYGUI_SHARED :: #config(RAYGUI_SHARED, false)

    RAYGUI_VERSION ¶

    RAYGUI_VERSION :: "4.0"

    RAYLIB_SHARED ¶

    RAYLIB_SHARED :: #config(RAYLIB_SHARED, false)

    RAYWHITE ¶

    RAYWHITE :: Color{245, 245, 245, 255}
     

    My own White (raylib logo)

    RED ¶

    RED :: Color{230, 41, 55, 255}
     

    Red

    RLGL_VERSION ¶

    RLGL_VERSION :: "4.5"

    RL_BLEND_COLOR ¶

    RL_BLEND_COLOR :: 0x8005
     

    GL_BLEND_COLOR

    RL_BLEND_DST_ALPHA ¶

    RL_BLEND_DST_ALPHA :: 0x80CA
     

    GL_BLEND_DST_ALPHA

    RL_BLEND_DST_RGB ¶

    RL_BLEND_DST_RGB :: 0x80C8
     

    GL_BLEND_DST_RGB

    RL_BLEND_EQUATION ¶

    RL_BLEND_EQUATION :: 0x8009
     

    GL_BLEND_EQUATION

    RL_BLEND_EQUATION_ALPHA ¶

    RL_BLEND_EQUATION_ALPHA :: 0x883D
     

    GL_BLEND_EQUATION_ALPHA

    RL_BLEND_EQUATION_RGB ¶

    RL_BLEND_EQUATION_RGB :: 0x8009
     

    GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION)

    RL_BLEND_SRC_ALPHA ¶

    RL_BLEND_SRC_ALPHA :: 0x80CB
     

    GL_BLEND_SRC_ALPHA

    RL_BLEND_SRC_RGB ¶

    RL_BLEND_SRC_RGB :: 0x80C9
     

    GL_BLEND_SRC_RGB

    RL_COMPUTE_SHADER ¶

    RL_COMPUTE_SHADER :: 0x91B9
     

    GL_COMPUTE_SHADER

    RL_CONSTANT_ALPHA ¶

    RL_CONSTANT_ALPHA :: 0x8003
     

    GL_CONSTANT_ALPHA

    RL_CONSTANT_COLOR ¶

    RL_CONSTANT_COLOR :: 0x8001
     

    GL_CONSTANT_COLOR

    RL_CULL_DISTANCE_FAR ¶

    RL_CULL_DISTANCE_FAR :: 1000.0
     

    Default far cull distance

    RL_CULL_DISTANCE_NEAR ¶

    RL_CULL_DISTANCE_NEAR :: 0.01
     

    Projection matrix culling

    RL_DEFAULT_BATCH_BUFFERS ¶

    RL_DEFAULT_BATCH_BUFFERS :: 1
     

    Default number of batch buffers (multi-buffering)

    RL_DEFAULT_BATCH_BUFFER_ELEMENTS ¶

    RL_DEFAULT_BATCH_BUFFER_ELEMENTS :: 8192
     

    This is the maximum amount of elements (quads) per batch NOTE: Be careful with text, every letter maps to a quad

    RL_DEFAULT_BATCH_DRAWCALLS ¶

    RL_DEFAULT_BATCH_DRAWCALLS :: 256
     

    Default number of batch draw calls (by state changes: mode, texture)

    RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS ¶

    RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS :: 4
     

    Maximum number of additional textures that can be activated on batch drawing (SetShaderValueTexture())

    RL_DST_ALPHA ¶

    RL_DST_ALPHA :: 0x0304
     

    GL_DST_ALPHA

    RL_DST_COLOR ¶

    RL_DST_COLOR :: 0x0306
     

    GL_DST_COLOR

    RL_DYNAMIC_COPY ¶

    RL_DYNAMIC_COPY :: 0x88EA
     

    GL_DYNAMIC_COPY

    RL_DYNAMIC_DRAW ¶

    RL_DYNAMIC_DRAW :: 0x88E8
     

    GL_DYNAMIC_DRAW

    RL_DYNAMIC_READ ¶

    RL_DYNAMIC_READ :: 0x88E9
     

    GL_DYNAMIC_READ

    RL_FLOAT ¶

    RL_FLOAT :: 0x1406
     

    GL_FLOAT

    RL_FRAGMENT_SHADER ¶

    RL_FRAGMENT_SHADER :: 0x8B30
     

    GL Shader type

    RL_FUNC_ADD ¶

    RL_FUNC_ADD :: 0x8006
     

    GL blending functions/equations

    RL_FUNC_REVERSE_SUBTRACT ¶

    RL_FUNC_REVERSE_SUBTRACT :: 0x800B
     

    GL_FUNC_REVERSE_SUBTRACT

    RL_FUNC_SUBTRACT ¶

    RL_FUNC_SUBTRACT :: 0x800A
     

    GL_FUNC_SUBTRACT

    RL_GRAPHICS_API_OPENGL_11 ¶

    RL_GRAPHICS_API_OPENGL_11 :: false

    RL_GRAPHICS_API_OPENGL_21 ¶

    RL_GRAPHICS_API_OPENGL_21 :: true

    RL_GRAPHICS_API_OPENGL_33 ¶

    RL_GRAPHICS_API_OPENGL_33 :: RL_GRAPHICS_API_OPENGL_21
     

    default currently

    RL_GRAPHICS_API_OPENGL_43 ¶

    RL_GRAPHICS_API_OPENGL_43 :: false

    RL_GRAPHICS_API_OPENGL_ES2 ¶

    RL_GRAPHICS_API_OPENGL_ES2 :: false

    RL_GRAPHICS_API_OPENGL_ES3 ¶

    RL_GRAPHICS_API_OPENGL_ES3 :: false

    RL_LINES ¶

    RL_LINES :: 0x0001
     

    Primitive assembly draw modes

    RL_MAX ¶

    RL_MAX :: 0x8008
     

    GL_MAX

    RL_MAX_MATRIX_STACK_SIZE ¶

    RL_MAX_MATRIX_STACK_SIZE :: 32
     

    Internal Matrix stack

    RL_MAX_SHADER_LOCATIONS ¶

    RL_MAX_SHADER_LOCATIONS :: 32
     

    Shader limits

    RL_MIN ¶

    RL_MIN :: 0x8007
     

    GL_MIN

    RL_MODELVIEW ¶

    RL_MODELVIEW :: 0x1700
     

    Matrix modes (equivalent to OpenGL)

    RL_ONE ¶

    RL_ONE :: 1
     

    GL_ONE

    RL_ONE_MINUS_CONSTANT_ALPHA ¶

    RL_ONE_MINUS_CONSTANT_ALPHA :: 0x8004
     

    GL_ONE_MINUS_CONSTANT_ALPHA

    RL_ONE_MINUS_CONSTANT_COLOR ¶

    RL_ONE_MINUS_CONSTANT_COLOR :: 0x8002
     

    GL_ONE_MINUS_CONSTANT_COLOR

    RL_ONE_MINUS_DST_ALPHA ¶

    RL_ONE_MINUS_DST_ALPHA :: 0x0305
     

    GL_ONE_MINUS_DST_ALPHA

    RL_ONE_MINUS_DST_COLOR ¶

    RL_ONE_MINUS_DST_COLOR :: 0x0307
     

    GL_ONE_MINUS_DST_COLOR

    RL_ONE_MINUS_SRC_ALPHA ¶

    RL_ONE_MINUS_SRC_ALPHA :: 0x0303
     

    GL_ONE_MINUS_SRC_ALPHA

    RL_ONE_MINUS_SRC_COLOR ¶

    RL_ONE_MINUS_SRC_COLOR :: 0x0301
     

    GL_ONE_MINUS_SRC_COLOR

    RL_PROJECTION ¶

    RL_PROJECTION :: 0x1701
     

    GL_PROJECTION

    RL_QUADS ¶

    RL_QUADS :: 0x0007
     

    GL_QUADS

    RL_SRC_ALPHA ¶

    RL_SRC_ALPHA :: 0x0302
     

    GL_SRC_ALPHA

    RL_SRC_ALPHA_SATURATE ¶

    RL_SRC_ALPHA_SATURATE :: 0x0308
     

    GL_SRC_ALPHA_SATURATE

    RL_SRC_COLOR ¶

    RL_SRC_COLOR :: 0x0300
     

    GL_SRC_COLOR

    RL_STATIC_COPY ¶

    RL_STATIC_COPY :: 0x88E6
     

    GL_STATIC_COPY

    RL_STATIC_DRAW ¶

    RL_STATIC_DRAW :: 0x88E4
     

    GL_STATIC_DRAW

    RL_STATIC_READ ¶

    RL_STATIC_READ :: 0x88E5
     

    GL_STATIC_READ

    RL_STREAM_COPY ¶

    RL_STREAM_COPY :: 0x88E2
     

    GL_STREAM_COPY

    RL_STREAM_DRAW ¶

    RL_STREAM_DRAW :: 0x88E0
     

    Buffer usage hint

    RL_STREAM_READ ¶

    RL_STREAM_READ :: 0x88E1
     

    GL_STREAM_READ

    RL_TEXTURE ¶

    RL_TEXTURE :: 0x1702
     

    GL_TEXTURE

    RL_TEXTURE_FILTER_ANISOTROPIC ¶

    RL_TEXTURE_FILTER_ANISOTROPIC :: 0x3000
     

    Anisotropic filter (custom identifier)

    RL_TEXTURE_FILTER_LINEAR ¶

    RL_TEXTURE_FILTER_LINEAR :: 0x2601
     

    GL_LINEAR

    RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST ¶

    RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST :: 0x2701
     

    GL_LINEAR_MIPMAP_NEAREST

    RL_TEXTURE_FILTER_MIP_LINEAR ¶

    RL_TEXTURE_FILTER_MIP_LINEAR :: 0x2703
     

    GL_LINEAR_MIPMAP_LINEAR

    RL_TEXTURE_FILTER_MIP_NEAREST ¶

    RL_TEXTURE_FILTER_MIP_NEAREST :: 0x2700
     

    GL_NEAREST_MIPMAP_NEAREST

    RL_TEXTURE_FILTER_NEAREST ¶

    RL_TEXTURE_FILTER_NEAREST :: 0x2600
     

    GL_NEAREST

    RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR ¶

    RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR :: 0x2702
     

    GL_NEAREST_MIPMAP_LINEAR

    RL_TEXTURE_MAG_FILTER ¶

    RL_TEXTURE_MAG_FILTER :: 0x2800
     

    GL_TEXTURE_MAG_FILTER

    RL_TEXTURE_MIN_FILTER ¶

    RL_TEXTURE_MIN_FILTER :: 0x2801
     

    GL_TEXTURE_MIN_FILTER

    RL_TEXTURE_WRAP_CLAMP ¶

    RL_TEXTURE_WRAP_CLAMP :: 0x812F
     

    GL_CLAMP_TO_EDGE

    RL_TEXTURE_WRAP_MIRROR_CLAMP ¶

    RL_TEXTURE_WRAP_MIRROR_CLAMP :: 0x8742
     

    GL_MIRROR_CLAMP_EXT

    RL_TEXTURE_WRAP_MIRROR_REPEAT ¶

    RL_TEXTURE_WRAP_MIRROR_REPEAT :: 0x8370
     

    GL_MIRRORED_REPEAT

    RL_TEXTURE_WRAP_REPEAT ¶

    RL_TEXTURE_WRAP_REPEAT :: 0x2901
     

    GL_REPEAT

    RL_TEXTURE_WRAP_S ¶

    RL_TEXTURE_WRAP_S :: 0x2802
     

    Texture parameters (equivalent to OpenGL defines)

    RL_TEXTURE_WRAP_T ¶

    RL_TEXTURE_WRAP_T :: 0x2803
     

    GL_TEXTURE_WRAP_T

    RL_TRIANGLES ¶

    RL_TRIANGLES :: 0x0004
     

    GL_TRIANGLES

    RL_UNSIGNED_BYTE ¶

    RL_UNSIGNED_BYTE :: 0x1401
     

    GL equivalent data types

    RL_VERTEX_SHADER ¶

    RL_VERTEX_SHADER :: 0x8B31
     

    GL_VERTEX_SHADER

    RL_ZERO ¶

    RL_ZERO :: 0
     

    GL blending factors

    SCROLLBAR_LEFT_SIDE ¶

    SCROLLBAR_LEFT_SIDE :: 0

    SCROLLBAR_RIGHT_SIDE ¶

    SCROLLBAR_RIGHT_SIDE :: 1

    SKYBLUE ¶

    SKYBLUE :: Color{102, 191, 255, 255}
     

    Sky Blue

    VERSION ¶

    VERSION :: "5.0"

    VERSION_MAJOR ¶

    VERSION_MAJOR :: 5

    VERSION_MINOR ¶

    VERSION_MINOR :: 0

    VERSION_PATCH ¶

    VERSION_PATCH :: 0

    VIOLET ¶

    VIOLET :: Color{135, 60, 190, 255}
     

    Violet

    WHITE ¶

    WHITE :: Color{255, 255, 255, 255}
     

    White

    YELLOW ¶

    YELLOW :: Color{253, 249, 0, 255}
     

    Yellow

    Variables

    version ¶

    @(link_name="raylib_version")
    version: cstring

    Procedures

    AttachAudioMixedProcessor ¶

    AttachAudioMixedProcessor :: proc "c" (processor: AudioCallback) ---
     

    Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s

    AttachAudioStreamProcessor ¶

    AttachAudioStreamProcessor :: proc "c" (stream: AudioStream, processor: AudioCallback) ---
     

    Attach audio stream processor to stream, receives the samples as <float>s

    BeginBlendMode ¶

    BeginBlendMode :: proc "c" (mode: BlendMode) ---
     

    Begin blending mode (alpha, additive, multiplied)

    BeginDrawing ¶

    BeginDrawing :: proc "c" () ---
     

    Setup canvas (framebuffer) to start drawing

    BeginMode2D ¶

    BeginMode2D :: proc "c" (camera: Camera2D) ---
     

    Initialize 2D mode with custom camera (2D)

    BeginMode3D ¶

    BeginMode3D :: proc "c" (camera: Camera3D) ---
     

    Initializes 3D mode with custom camera (3D)

    BeginScissorMode ¶

    BeginScissorMode :: proc "c" (x, y, width, height: i32) ---
     

    Begin scissor mode (define screen area for following drawing)

    BeginShaderMode ¶

    BeginShaderMode :: proc "c" (shader: Shader) ---
     

    Begin custom shader drawing

    BeginTextureMode ¶

    BeginTextureMode :: proc "c" (target: RenderTexture) ---
     

    Initializes render texture for drawing

    BeginVrStereoMode ¶

    BeginVrStereoMode :: proc "c" (config: VrStereoConfig) ---
     

    Begin stereo rendering (requires VR simulator)

    ChangeDirectory ¶

    ChangeDirectory :: proc "c" (dir: cstring) -> bool ---
     

    Change working directory, return true on success

    CheckCollisionBoxSphere ¶

    CheckCollisionBoxSphere :: proc "c" (box: BoundingBox, center: [3]f32, radius: f32) -> bool ---
     

    Check collision between box and sphere

    CheckCollisionBoxes ¶

    CheckCollisionBoxes :: proc "c" (box1, box2: BoundingBox) -> bool ---
     

    Check collision between two bounding boxes

    CheckCollisionCircleRec ¶

    CheckCollisionCircleRec :: proc "c" (center: [2]f32, radius: f32, rec: Rectangle) -> bool ---
     

    Check collision between circle and rectangle

    CheckCollisionCircles ¶

    CheckCollisionCircles :: proc "c" (center1: [2]f32, radius1: f32, center2: [2]f32, radius2: f32) -> bool ---
     

    Check collision between two circles

    CheckCollisionLines ¶

    CheckCollisionLines :: proc "c" (startPos1, endPos1, startPos2, endPos2: [2]f32, collisionPoint: [^][2]f32) -> bool ---
     

    Check the collision between two lines defined by two points each, returns collision point by reference

    CheckCollisionPointCircle ¶

    CheckCollisionPointCircle :: proc "c" (point, center: [2]f32, radius: f32) -> bool ---
     

    Check if point is inside circle

    CheckCollisionPointLine ¶

    CheckCollisionPointLine :: proc "c" (point: [2]f32, p1, p2: [2]f32, threshold: i32) -> bool ---
     

    Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]

    CheckCollisionPointPoly ¶

    CheckCollisionPointPoly :: proc "c" (point: [2]f32, points: [^][2]f32, pointCount: i32) -> bool ---
     

    Check if point is within a polygon described by array of vertices

    CheckCollisionPointRec ¶

    CheckCollisionPointRec :: proc "c" (point: [2]f32, rec: Rectangle) -> bool ---
     

    Check if point is inside rectangle

    CheckCollisionPointTriangle ¶

    CheckCollisionPointTriangle :: proc "c" (point: [2]f32, p1, p2, p3: [2]f32) -> bool ---
     

    Check if point is inside a triangle

    CheckCollisionRecs ¶

    CheckCollisionRecs :: proc "c" (rec1, rec2: Rectangle) -> bool ---
     

    Basic shapes collision detection functions

    CheckCollisionSpheres ¶

    CheckCollisionSpheres :: proc "c" (center1: [3]f32, radius1: f32, center2: [3]f32, radius2: f32) -> bool ---
     

    Check collision between two spheres

    Clamp ¶

    Clamp :: proc "c" (value: f32, min, max: f32) -> f32 {…}
     

    Clamp float value

    ClearBackground ¶

    ClearBackground :: proc "c" (color: Color) ---
     

    Set background color (framebuffer clear color)

    ClearWindowState ¶

    ClearWindowState :: proc "c" (flags: ConfigFlags) ---
     

    Clear window configuration state flags

    CloseAudioDevice ¶

    CloseAudioDevice :: proc "c" () ---
     

    Close the audio device and context

    CloseWindow ¶

    CloseWindow :: proc "c" () ---
     

    Close window and unload OpenGL context

    CodepointToUTF8 ¶

    CodepointToUTF8 :: proc "c" (codepoint: rune, utf8Size: ^i32) -> cstring ---
     

    Encode one codepoint into UTF-8 byte array (array length returned as parameter)

    ColorAlpha ¶

    ColorAlpha :: proc "c" (color: Color, alpha: f32) -> Color ---
     

    Get color with alpha applied, alpha goes from 0.0f to 1.0f

    ColorAlphaBlend ¶

    ColorAlphaBlend :: proc "c" (dst, src, tint: Color) -> Color ---
     

    Get src alpha-blended into dst color with tint

    ColorBrightness ¶

    ColorBrightness :: proc "c" (color: Color, factor: f32) -> Color ---
     

    Get color with brightness correction, brightness factor goes from -1.0f to 1.0f

    ColorContrast ¶

    ColorContrast :: proc "c" (color: Color, contrast: f32) -> Color ---
     

    Get color with contrast correction, contrast values between -1.0f and 1.0f

    ColorFromHSV ¶

    ColorFromHSV :: proc "c" (hue, saturation, value: f32) -> Color ---
     

    Get a Color from HSV values, hue [0..360], saturation/value [0..1]

    ColorFromNormalized ¶

    ColorFromNormalized :: proc "c" (normalized: [4]f32) -> Color ---
     

    Get Color from normalized values [0..1]

    ColorNormalize ¶

    ColorNormalize :: proc "c" (color: Color) -> [4]f32 ---
     

    Get Color normalized as float [0..1]

    ColorTint ¶

    ColorTint :: proc "c" (color, tint: Color) -> Color ---
     

    Get color multiplied with another color

    ColorToHSV ¶

    ColorToHSV :: proc "c" (color: Color) -> [3]f32 ---
     

    Get HSV values for a Color, hue [0..360], saturation/value [0..1]

    ColorToInt ¶

    ColorToInt :: proc "c" (color: Color) -> u32 ---
     

    Get hexadecimal value for a Color

    CompressData ¶

    CompressData :: proc "c" (data: rawptr, dataSize: i32, compDataSize: ^i32) -> [^]u8 ---
     

    Compress data (DEFLATE algorithm), memory must be MemFree()

    DecodeDataBase64 ¶

    DecodeDataBase64 :: proc "c" (data: rawptr, outputSize: ^i32) -> [^]u8 ---
     

    Decode Base64 string data, memory must be MemFree()

    DecompressData ¶

    DecompressData :: proc "c" (compData: rawptr, compDataSize: i32, dataSize: ^i32) -> [^]u8 ---
     

    Decompress data (DEFLATE algorithm), memory must be MemFree()

    DetachAudioMixedProcessor ¶

    DetachAudioMixedProcessor :: proc "c" (processor: AudioCallback) ---
     

    Detach audio stream processor from the entire audio pipeline

    DetachAudioStreamProcessor ¶

    DetachAudioStreamProcessor :: proc "c" (stream: AudioStream, processor: AudioCallback) ---
     

    Detach audio stream processor from stream

    DirectoryExists ¶

    DirectoryExists :: proc "c" (dirPath: cstring) -> bool ---
     

    Check if a directory path exists

    DisableCursor ¶

    DisableCursor :: proc "c" () ---
     

    Disables cursor (lock cursor)

    DisableEventWaiting ¶

    DisableEventWaiting :: proc "c" () ---
     

    Disable waiting for events on EndDrawing(), automatic events polling

    DrawBillboard ¶

    DrawBillboard :: proc "c" (camera: Camera3D, texture: Texture, position: [3]f32, size: f32, tint: Color) ---
     

    Draw a billboard texture

    DrawBillboardPro ¶

    DrawBillboardPro :: proc "c" (
    	camera:   Camera3D, 
    	texture:  Texture, 
    	source:   Rectangle, 
    	position: [3]f32, 
    	up:       [3]f32, 
    	size:     [2]f32, 
    	origin:   [2]f32, 
    	rotation: f32, 
    	tint:     Color, 
    ) ---
     

    Draw a billboard texture defined by source and rotation

    DrawBillboardRec ¶

    DrawBillboardRec :: proc "c" (
    	camera:   Camera3D, 
    	texture:  Texture, 
    	source:   Rectangle, 
    	position: [3]f32, 
    	size:     [2]f32, 
    	tint:     Color, 
    ) ---
     

    Draw a billboard texture defined by source

    DrawBoundingBox ¶

    DrawBoundingBox :: proc "c" (box: BoundingBox, color: Color) ---
     

    Draw bounding box (wires)

    DrawCapsule ¶

    DrawCapsule :: proc "c" (
    	startPos, endPos: [3]f32, 
    	radius:           f32, 
    	slices, rings:    i32, 
    	color:            Color, 
    ) ---
     

    Draw a capsule with the center of its sphere caps at startPos and endPos

    DrawCapsuleWires ¶

    DrawCapsuleWires :: proc "c" (
    	startPos, endPos: [3]f32, 
    	radius:           f32, 
    	slices, rings:    i32, 
    	color:            Color, 
    ) ---
     

    Draw capsule wireframe with the center of its sphere caps at startPos and endPos

    DrawCircle ¶

    DrawCircle :: proc "c" (centerX, centerY: i32, radius: f32, color: Color) ---
     

    Draw a color-filled circle

    DrawCircle3D ¶

    DrawCircle3D :: proc "c" (center: [3]f32, radius: f32, rotationAxis: [3]f32, rotationAngle: f32, color: Color) ---
     

    Draw a circle in 3D world space

    DrawCircleGradient ¶

    DrawCircleGradient :: proc "c" (centerX, centerY: i32, radius: f32, color1, color2: Color) ---
     

    Draw a gradient-filled circle

    DrawCircleLines ¶

    DrawCircleLines :: proc "c" (centerX, centerY: i32, radius: f32, color: Color) ---
     

    Draw circle outline

    DrawCircleLinesV ¶

    DrawCircleLinesV :: proc "c" (center: [2]f32, radius: f32, color: Color) ---
     

    Draw circle outline (Vector version)

    DrawCircleSector ¶

    DrawCircleSector :: proc "c" (
    	center:               [2]f32, 
    	radius:               f32, 
    	startAngle, endAngle: f32, 
    	segments:             i32, 
    	color:                Color, 
    ) ---
     

    Draw a piece of a circle

    DrawCircleSectorLines ¶

    DrawCircleSectorLines :: proc "c" (
    	center:               [2]f32, 
    	radius:               f32, 
    	startAngle, endAngle: f32, 
    	segments:             i32, 
    	color:                Color, 
    ) ---
     

    Draw circle sector outline

    DrawCircleV ¶

    DrawCircleV :: proc "c" (center: [2]f32, radius: f32, color: Color) ---
     

    Draw a color-filled circle (Vector version)

    DrawCube ¶

    DrawCube :: proc "c" (position: [3]f32, width, height, length: f32, color: Color) ---
     

    Draw cube

    DrawCubeV ¶

    DrawCubeV :: proc "c" (position: [3]f32, size: [3]f32, color: Color) ---
     

    Draw cube (Vector version)

    DrawCubeWires ¶

    DrawCubeWires :: proc "c" (position: [3]f32, width, height, length: f32, color: Color) ---
     

    Draw cube wires

    DrawCubeWiresV ¶

    DrawCubeWiresV :: proc "c" (position: [3]f32, size: [3]f32, color: Color) ---
     

    Draw cube wires (Vector version)

    DrawCylinder ¶

    DrawCylinder :: proc "c" (
    	position:                [3]f32, 
    	radiusTop, radiusBottom: f32, 
    	height:                  f32, 
    	slices:                  i32, 
    	color:                   Color, 
    ) ---
     

    Draw a cylinder/cone

    DrawCylinderEx ¶

    DrawCylinderEx :: proc "c" (
    	startPos, endPos:       [3]f32, 
    	startRadius, endRadius: f32, 
    	sides:                  i32, 
    	color:                  Color, 
    ) ---
     

    Draw a cylinder with base at startPos and top at endPos

    DrawCylinderWires ¶

    DrawCylinderWires :: proc "c" (
    	position:                [3]f32, 
    	radiusTop, radiusBottom: f32, 
    	height:                  f32, 
    	slices:                  i32, 
    	color:                   Color, 
    ) ---
     

    Draw a cylinder/cone wires

    DrawCylinderWiresEx ¶

    DrawCylinderWiresEx :: proc "c" (
    	startPos, endPos:       [3]f32, 
    	startRadius, endRadius: f32, 
    	sides:                  i32, 
    	color:                  Color, 
    ) ---
     

    Draw a cylinder wires with base at startPos and top at endPos

    DrawEllipse ¶

    DrawEllipse :: proc "c" (centerX, centerY: i32, radiusH, radiusV: f32, color: Color) ---
     

    Draw ellipse

    DrawEllipseLines ¶

    DrawEllipseLines :: proc "c" (centerX, centerY: i32, radiusH, radiusV: f32, color: Color) ---
     

    Draw ellipse outline

    DrawFPS ¶

    DrawFPS :: proc "c" (posX, posY: i32) ---
     

    Draw current FPS

    DrawGrid ¶

    DrawGrid :: proc "c" (slices: i32, spacing: f32) ---
     

    Draw a grid (centered at (0, 0, 0))

    DrawLine ¶

    DrawLine :: proc "c" (startPosX, startPosY, endPosX, endPosY: i32, color: Color) ---
     

    Draw a line

    DrawLine3D ¶

    DrawLine3D :: proc "c" (startPos, endPos: [3]f32, color: Color) ---
     

    Draw a line in 3D world space

    DrawLineBezier ¶

    DrawLineBezier :: proc "c" (startPos, endPos: [2]f32, thick: f32, color: Color) ---
     

    Draw line segment cubic-bezier in-out interpolation

    DrawLineEx ¶

    DrawLineEx :: proc "c" (startPos, endPos: [2]f32, thick: f32, color: Color) ---
     

    Draw a line (using triangles/quads)

    DrawLineStrip ¶

    DrawLineStrip :: proc "c" (points: [^][2]f32, pointCount: i32, color: Color) ---
     

    Draw lines sequence (using gl lines)

    DrawLineV ¶

    DrawLineV :: proc "c" (startPos, endPos: [2]f32, color: Color) ---
     

    Draw a line (using gl lines)

    DrawMesh ¶

    DrawMesh :: proc "c" (mesh: Mesh, material: Material, transform: matrix[4, 4]f32) ---
     

    Draw a 3d mesh with material and transform

    DrawMeshInstanced ¶

    DrawMeshInstanced :: proc "c" (mesh: Mesh, material: Material, transforms: [^]matrix[4, 4]f32, instances: i32) ---
     

    Draw multiple mesh instances with material and different transforms

    DrawModel ¶

    DrawModel :: proc "c" (model: Model, position: [3]f32, scale: f32, tint: Color) ---
     

    Draw a model (with texture if set)

    DrawModelEx ¶

    DrawModelEx :: proc "c" (
    	model:         Model, 
    	position:      [3]f32, 
    	rotationAxis:  [3]f32, 
    	rotationAngle: f32, 
    	scale:         [3]f32, 
    	tint:          Color, 
    ) ---
     

    Draw a model with extended parameters

    DrawModelWires ¶

    DrawModelWires :: proc "c" (model: Model, position: [3]f32, scale: f32, tint: Color) ---
     

    Draw a model wires (with texture if set)

    DrawModelWiresEx ¶

    DrawModelWiresEx :: proc "c" (
    	model:         Model, 
    	position:      [3]f32, 
    	rotationAxis:  [3]f32, 
    	rotationAngle: f32, 
    	scale:         [3]f32, 
    	tint:          Color, 
    ) ---
     

    Draw a model wires (with texture if set) with extended parameters

    DrawPixel ¶

    DrawPixel :: proc "c" (posX, posY: i32, color: Color) ---
     

    Draw a pixel

    DrawPixelV ¶

    DrawPixelV :: proc "c" (position: [2]f32, color: Color) ---
     

    Draw a pixel (Vector version)

    DrawPlane ¶

    DrawPlane :: proc "c" (centerPos: [3]f32, size: [2]f32, color: Color) ---
     

    Draw a plane XZ

    DrawPoint3D ¶

    DrawPoint3D :: proc "c" (position: [3]f32, color: Color) ---
     

    Draw a point in 3D space, actually a small line

    DrawPoly ¶

    DrawPoly :: proc "c" (center: [2]f32, sides: i32, radius: f32, rotation: f32, color: Color) ---
     

    Draw a regular polygon (Vector version)

    DrawPolyLines ¶

    DrawPolyLines :: proc "c" (center: [2]f32, sides: i32, radius: f32, rotation: f32, color: Color) ---
     

    Draw a polygon outline of n sides

    DrawPolyLinesEx ¶

    DrawPolyLinesEx :: proc "c" (
    	center:    [2]f32, 
    	sides:     i32, 
    	radius:    f32, 
    	rotation:  f32, 
    	lineThick: f32, 
    	color:     Color, 
    ) ---
     

    Draw a polygon outline of n sides with extended parameters

    DrawRay ¶

    DrawRay :: proc "c" (ray: Ray, color: Color) ---
     

    Draw a ray line

    DrawRectangle ¶

    DrawRectangle :: proc "c" (posX, posY: i32, width, height: i32, color: Color) ---
     

    Draw a color-filled rectangle

    DrawRectangleGradientEx ¶

    DrawRectangleGradientEx :: proc "c" (rec: Rectangle, col1, col2, col3, col4: Color) ---
     

    Draw a gradient-filled rectangle with custom vertex colors

    DrawRectangleGradientH ¶

    DrawRectangleGradientH :: proc "c" (
    	posX, posY:    i32, 
    	width, height: i32, 
    	color1, 
    	color2:        Color, 
    ) ---
     

    Draw a horizontal-gradient-filled rectangle

    DrawRectangleGradientV ¶

    DrawRectangleGradientV :: proc "c" (
    	posX, posY:    i32, 
    	width, height: i32, 
    	color1, 
    	color2:        Color, 
    ) ---
     

    Draw a vertical-gradient-filled rectangle

    DrawRectangleLines ¶

    DrawRectangleLines :: proc "c" (posX, posY: i32, width, height: i32, color: Color) ---
     

    Draw rectangle outline

    DrawRectangleLinesEx ¶

    DrawRectangleLinesEx :: proc "c" (rec: Rectangle, lineThick: f32, color: Color) ---
     

    Draw rectangle outline with extended parameters

    DrawRectanglePro ¶

    DrawRectanglePro :: proc "c" (rec: Rectangle, origin: [2]f32, rotation: f32, color: Color) ---
     

    Draw a color-filled rectangle with pro parameters

    DrawRectangleRec ¶

    DrawRectangleRec :: proc "c" (rec: Rectangle, color: Color) ---
     

    Draw a color-filled rectangle

    DrawRectangleRounded ¶

    DrawRectangleRounded :: proc "c" (rec: Rectangle, roundness: f32, segments: i32, color: Color) ---
     

    Draw rectangle with rounded edges

    DrawRectangleRoundedLines ¶

    DrawRectangleRoundedLines :: proc "c" (rec: Rectangle, roundness: f32, segments: i32, lineThick: f32, color: Color) ---
     

    Draw rectangle with rounded edges outline

    DrawRectangleV ¶

    DrawRectangleV :: proc "c" (position: [2]f32, size: [2]f32, color: Color) ---
     

    Draw a color-filled rectangle (Vector version)

    DrawRing ¶

    DrawRing :: proc "c" (
    	center:                   [2]f32, 
    	innerRadius, outerRadius: f32, 
    	startAngle, endAngle:     f32, 
    	segments:                 i32, 
    	color:                    Color, 
    ) ---
     

    Draw ring

    DrawRingLines ¶

    DrawRingLines :: proc "c" (
    	center:                   [2]f32, 
    	innerRadius, outerRadius: f32, 
    	startAngle, endAngle:     f32, 
    	segments:                 i32, 
    	color:                    Color, 
    ) ---
     

    Draw ring outline

    DrawSphere ¶

    DrawSphere :: proc "c" (centerPos: [3]f32, radius: f32, color: Color) ---
     

    Draw sphere

    DrawSphereEx ¶

    DrawSphereEx :: proc "c" (centerPos: [3]f32, radius: f32, rings, slices: i32, color: Color) ---
     

    Draw sphere with extended parameters

    DrawSphereWires ¶

    DrawSphereWires :: proc "c" (centerPos: [3]f32, radius: f32, rings, slices: i32, color: Color) ---
     

    Draw sphere wires

    DrawSplineBasis ¶

    DrawSplineBasis :: proc "c" (points: [^][2]f32, pointCount: i32, thick: f32, color: Color) ---
     

    Draw spline: B-Spline, minimum 4 points

    DrawSplineBezierCubic ¶

    DrawSplineBezierCubic :: proc "c" (points: [^][2]f32, pointCount: i32, thick: f32, color: Color) ---
     

    Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]

    DrawSplineBezierQuadratic ¶

    DrawSplineBezierQuadratic :: proc "c" (points: [^][2]f32, pointCount: i32, thick: f32, color: Color) ---
     

    Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]

    DrawSplineCatmullRom ¶

    DrawSplineCatmullRom :: proc "c" (points: [^][2]f32, pointCount: i32, thick: f32, color: Color) ---
     

    Draw spline: Catmull-Rom, minimum 4 points

    DrawSplineLinear ¶

    DrawSplineLinear :: proc "c" (points: [^][2]f32, pointCount: i32, thick: f32, color: Color) ---
     

    Splines drawing functions

    DrawSplineSegmentBasis ¶

    DrawSplineSegmentBasis :: proc "c" (
    	p1, p2, p3, p4: [2]f32, 
    	thick:          f32, 
    	color:          Color, 
    ) ---
     

    Draw spline segment: B-Spline, 4 points

    DrawSplineSegmentBezierCubic ¶

    DrawSplineSegmentBezierCubic :: proc "c" (
    	p1, c2, c3, p4: [2]f32, 
    	thick:          f32, 
    	color:          Color, 
    ) ---
     

    Draw spline segment: Cubic Bezier, 2 points, 2 control points

    DrawSplineSegmentBezierQuadratic ¶

    DrawSplineSegmentBezierQuadratic :: proc "c" (p1, c2, p3: [2]f32, thick: f32, color: Color) ---
     

    Draw spline segment: Quadratic Bezier, 2 points, 1 control point

    DrawSplineSegmentCatmullRom ¶

    DrawSplineSegmentCatmullRom :: proc "c" (
    	p1, p2, p3, p4: [2]f32, 
    	thick:          f32, 
    	color:          Color, 
    ) ---
     

    Draw spline segment: Catmull-Rom, 4 points

    DrawSplineSegmentLinear ¶

    DrawSplineSegmentLinear :: proc "c" (p1, p2: [2]f32, thick: f32, color: Color) ---
     

    Draw spline segment: Linear, 2 points

    DrawText ¶

    DrawText :: proc "c" (text: cstring, posX, posY: i32, fontSize: i32, color: Color) ---
     

    Draw text (using default font)

    DrawTextCodepoint ¶

    DrawTextCodepoint :: proc "c" (font: Font, codepoint: rune, position: [2]f32, fontSize: f32, tint: Color) ---
     

    Draw one character (codepoint)

    DrawTextCodepoints ¶

    DrawTextCodepoints :: proc "c" (
    	font:           Font, 
    	codepoints:     [^]rune, 
    	codepointCount: i32, 
    	position:       [2]f32, 
    	fontSize:       f32, 
    	spacing:        f32, 
    	tint:           Color, 
    ) ---
     

    Draw multiple character (codepoint)

    DrawTextEx ¶

    DrawTextEx :: proc "c" (
    	font:     Font, 
    	text:     cstring, 
    	position: [2]f32, 
    	fontSize: f32, 
    	spacing:  f32, 
    	tint:     Color, 
    ) ---
     

    Draw text using font and additional parameters

    DrawTextPro ¶

    DrawTextPro :: proc "c" (
    	font:             Font, 
    	text:             cstring, 
    	position, origin: [2]f32, 
    	rotation:         f32, 
    	fontSize:         f32, 
    	spacing:          f32, 
    	tint:             Color, 
    ) ---
     

    Draw text using Font and pro parameters (rotation)

    DrawTexture ¶

    DrawTexture :: proc "c" (texture: Texture, posX, posY: i32, tint: Color) ---
     

    Texture drawing functions

    DrawTextureEx ¶

    DrawTextureEx :: proc "c" (texture: Texture, position: [2]f32, rotation: f32, scale: f32, tint: Color) ---
     

    Draw a Texture2D with extended parameters

    DrawTextureNPatch ¶

    DrawTextureNPatch :: proc "c" (
    	texture:    Texture, 
    	nPatchInfo: NPatchInfo, 
    	dest:       Rectangle, 
    	origin:     [2]f32, 
    	rotation:   f32, 
    	tint:       Color, 
    ) ---
     

    Draws a texture (or part of it) that stretches or shrinks nicely

    DrawTexturePro ¶

    DrawTexturePro :: proc "c" (
    	texture:      Texture, 
    	source, dest: Rectangle, 
    	origin:       [2]f32, 
    	rotation:     f32, 
    	tint:         Color, 
    ) ---
     

    Draw a part of a texture defined by a rectangle with 'pro' parameters

    DrawTextureRec ¶

    DrawTextureRec :: proc "c" (texture: Texture, source: Rectangle, position: [2]f32, tint: Color) ---
     

    Draw a part of a texture defined by a rectangle

    DrawTextureV ¶

    DrawTextureV :: proc "c" (texture: Texture, position: [2]f32, tint: Color) ---
     

    Draw a Texture2D with position defined as Vector2

    DrawTriangle ¶

    DrawTriangle :: proc "c" (v1, v2, v3: [2]f32, color: Color) ---
     

    Draw a color-filled triangle (vertex in counter-clockwise order!)

    DrawTriangle3D ¶

    DrawTriangle3D :: proc "c" (v1, v2, v3: [3]f32, color: Color) ---
     

    Draw a color-filled triangle (vertex in counter-clockwise order!)

    DrawTriangleFan ¶

    DrawTriangleFan :: proc "c" (points: [^][2]f32, pointCount: i32, color: Color) ---
     

    Draw a triangle fan defined by points (first vertex is the center)

    DrawTriangleLines ¶

    DrawTriangleLines :: proc "c" (v1, v2, v3: [2]f32, color: Color) ---
     

    Draw triangle outline (vertex in counter-clockwise order!)

    DrawTriangleStrip ¶

    DrawTriangleStrip :: proc "c" (points: [^][2]f32, pointCount: i32, color: Color) ---
     

    Draw a triangle strip defined by points

    DrawTriangleStrip3D ¶

    DrawTriangleStrip3D :: proc "c" (points: [^][3]f32, pointCount: i32, color: Color) ---
     

    Draw a triangle strip defined by points

    EaseBackIn ¶

    EaseBackIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Back Easing functions

    EaseBackInOut ¶

    EaseBackInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseBackOut ¶

    EaseBackOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseBounceIn ¶

    EaseBounceIn :: proc(t, b, c, d: f32) -> f32 {…}

    EaseBounceInOut ¶

    EaseBounceInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseBounceOut ¶

    EaseBounceOut :: proc(t, b, c, d: f32) -> f32 {…}
     

    Bounce Easing functions

    EaseCircIn ¶

    EaseCircIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Circular Easing functions

    EaseCircInOut ¶

    EaseCircInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseCircOut ¶

    EaseCircOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseCubicIn ¶

    EaseCubicIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Cubic Easing functions

    EaseCubicInOut ¶

    EaseCubicInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseCubicOut ¶

    EaseCubicOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseElasticIn ¶

    EaseElasticIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Elastic Easing functions

    EaseElasticInOut ¶

    EaseElasticInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseElasticOut ¶

    EaseElasticOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseExpoIn ¶

    EaseExpoIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Exponential Easing functions

    EaseExpoInOut ¶

    EaseExpoInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseExpoOut ¶

    EaseExpoOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseLinearIn ¶

    EaseLinearIn :: proc(t, b, c, d: f32) -> f32 {…}

    EaseLinearInOut ¶

    EaseLinearInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseLinearNone ¶

    EaseLinearNone :: proc(t, b, c, d: f32) -> f32 {…}

    EaseLinearOut ¶

    EaseLinearOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseQuadIn ¶

    EaseQuadIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Quadratic Easing functions

    EaseQuadInOut ¶

    EaseQuadInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseQuadOut ¶

    EaseQuadOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseSineIn ¶

    EaseSineIn :: proc(t, b, c, d: f32) -> f32 {…}
     

    Sine Easing functions

    EaseSineInOut ¶

    EaseSineInOut :: proc(t, b, c, d: f32) -> f32 {…}

    EaseSineOut ¶

    EaseSineOut :: proc(t, b, c, d: f32) -> f32 {…}

    EnableCursor ¶

    EnableCursor :: proc "c" () ---
     

    Enables cursor (unlock cursor)

    EnableEventWaiting ¶

    EnableEventWaiting :: proc "c" () ---
     

    Enable waiting for events on EndDrawing(), no automatic event polling

    EncodeDataBase64 ¶

    EncodeDataBase64 :: proc "c" (data: rawptr, dataSize: i32, outputSize: ^i32) -> [^]u8 ---
     

    Encode data to Base64 string, memory must be MemFree()

    EndBlendMode ¶

    EndBlendMode :: proc "c" () ---
     

    End blending mode (reset to default: alpha blending)

    EndDrawing ¶

    EndDrawing :: proc "c" () ---
     

    End canvas drawing and swap buffers (double buffering)

    EndMode2D ¶

    EndMode2D :: proc "c" () ---
     

    Ends 2D mode with custom camera

    EndMode3D ¶

    EndMode3D :: proc "c" () ---
     

    Ends 3D mode and returns to default 2D orthographic mode

    EndScissorMode ¶

    EndScissorMode :: proc "c" () ---
     

    End scissor mode

    EndShaderMode ¶

    EndShaderMode :: proc "c" () ---
     

    End custom shader drawing (use default shader)

    EndTextureMode ¶

    EndTextureMode :: proc "c" () ---
     

    Ends drawing to render texture

    EndVrStereoMode ¶

    EndVrStereoMode :: proc "c" () ---
     

    End stereo rendering (requires VR simulator)

    ExportAutomationEventList ¶

    ExportAutomationEventList :: proc "c" (list: AutomationEventList, fileName: cstring) -> bool ---
     

    Export automation events list as text file

    ExportDataAsCode ¶

    ExportDataAsCode :: proc "c" (data: rawptr, dataSize: i32, fileName: cstring) -> bool ---
     

    Export data to code (.h), returns true on success

    ExportFontAsCode ¶

    ExportFontAsCode :: proc "c" (font: Font, fileName: cstring) -> bool ---
     

    Export font as code file, returns true on success

    ExportImage ¶

    ExportImage :: proc "c" (image: Image, fileName: cstring) -> bool ---
     

    Export image data to file, returns true on success

    ExportImageAsCode ¶

    ExportImageAsCode :: proc "c" (image: Image, fileName: cstring) -> bool ---
     

    Export image as code file defining an array of bytes, returns true on success

    ExportImageToMemory ¶

    ExportImageToMemory :: proc "c" (image: Image, fileType: cstring, fileSize: ^i32) -> rawptr ---
     

    Export image to memory buffer

    ExportMesh ¶

    ExportMesh :: proc "c" (mesh: Mesh, fileName: cstring) -> bool ---
     

    Export mesh data to file, returns true on success

    ExportWave ¶

    ExportWave :: proc "c" (wave: Wave, fileName: cstring) -> bool ---
     

    Export wave data to file, returns true on success

    ExportWaveAsCode ¶

    ExportWaveAsCode :: proc "c" (wave: Wave, fileName: cstring) -> bool ---
     

    Export wave sample data to code (.h), returns true on success

    Fade ¶

    Fade :: proc "c" (color: Color, alpha: f32) -> Color ---
     

    Get color with alpha applied, alpha goes from 0.0f to 1.0f

    FileExists ¶

    FileExists :: proc "c" (fileName: cstring) -> bool ---
     

    Check if file exists

    FloatEquals ¶

    FloatEquals :: proc "c" (x, y: f32) -> bool {…}
     

    Check whether two given floats are almost equal

    GenImageCellular ¶

    GenImageCellular :: proc "c" (width, height: i32, tileSize: i32) -> Image ---
     

    Generate image: cellular algorithm, bigger tileSize means bigger cells

    GenImageChecked ¶

    GenImageChecked :: proc "c" (
    	width, height:    i32, 
    	checksX, checksY: i32, 
    	col1, 
    	col2:             Color, 
    ) -> Image ---
     

    Generate image: checked

    GenImageColor ¶

    GenImageColor :: proc "c" (width, height: i32, color: Color) -> Image ---
     

    Generate image: plain color

    GenImageFontAtlas ¶

    GenImageFontAtlas :: proc "c" (
    	glyphs:         [^]GlyphInfo, 
    	glyphRecs:      ^[^]Rectangle, 
    	codepointCount: i32, 
    	fontSize:       i32, 
    	padding:        i32, 
    	packMethod:     i32, 
    ) -> Image ---
     

    Generate image font atlas using chars info

    GenImageGradientLinear ¶

    GenImageGradientLinear :: proc "c" (width, height, direction: i32, start, end: Color) -> Image ---
     

    Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient

    GenImageGradientRadial ¶

    GenImageGradientRadial :: proc "c" (width, height: i32, density: f32, inner, outer: Color) -> Image ---
     

    Generate image: radial gradient

    GenImageGradientSquare ¶

    GenImageGradientSquare :: proc "c" (width, height: i32, density: f32, inner, outer: Color) -> Image ---
     

    Generate image: square gradient

    GenImagePerlinNoise ¶

    GenImagePerlinNoise :: proc "c" (width, height: i32, offsetX, offsetY: i32, scale: f32) -> Image ---
     

    Generate image: perlin noise

    GenImageText ¶

    GenImageText :: proc "c" (width, height: i32, text: cstring) -> Image ---
     

    Generate image: grayscale image from text data

    GenImageWhiteNoise ¶

    GenImageWhiteNoise :: proc "c" (width, height: i32, factor: f32) -> Image ---
     

    Generate image: white noise

    GenMeshCone ¶

    GenMeshCone :: proc "c" (radius, height: f32, slices: i32) -> Mesh ---
     

    Generate cone/pyramid mesh

    GenMeshCube ¶

    GenMeshCube :: proc "c" (width, height, length: f32) -> Mesh ---
     

    Generate cuboid mesh

    GenMeshCubicmap ¶

    GenMeshCubicmap :: proc "c" (cubicmap: Image, cubeSize: [3]f32) -> Mesh ---
     

    Generate cubes-based map mesh from image data

    GenMeshCylinder ¶

    GenMeshCylinder :: proc "c" (radius, height: f32, slices: i32) -> Mesh ---
     

    Generate cylinder mesh

    GenMeshHeightmap ¶

    GenMeshHeightmap :: proc "c" (heightmap: Image, size: [3]f32) -> Mesh ---
     

    Generate heightmap mesh from image data

    GenMeshHemiSphere ¶

    GenMeshHemiSphere :: proc "c" (radius: f32, rings, slices: i32) -> Mesh ---
     

    Generate half-sphere mesh (no bottom cap)

    GenMeshKnot ¶

    GenMeshKnot :: proc "c" (radius, size: f32, radSeg, sides: i32) -> Mesh ---
     

    Generate trefoil knot mesh

    GenMeshPlane ¶

    GenMeshPlane :: proc "c" (width, lengthL: f32, resX, resZ: i32) -> Mesh ---
     

    Generate plane mesh (with subdivisions)

    GenMeshPoly ¶

    GenMeshPoly :: proc "c" (sides: i32, radius: f32) -> Mesh ---
     

    Generate polygonal mesh

    GenMeshSphere ¶

    GenMeshSphere :: proc "c" (radius: f32, rings, slices: i32) -> Mesh ---
     

    Generate sphere mesh (standard sphere)

    GenMeshTangents ¶

    GenMeshTangents :: proc "c" (mesh: ^Mesh) ---
     

    Compute mesh tangents

    GenMeshTorus ¶

    GenMeshTorus :: proc "c" (radius, size: f32, radSeg, sides: i32) -> Mesh ---
     

    Generate torus mesh

    GenTextureMipmaps ¶

    GenTextureMipmaps :: proc "c" (texture: ^Texture) ---
     

    Generate GPU mipmaps for a texture

    GetApplicationDirectory ¶

    GetApplicationDirectory :: proc "c" () -> cstring ---
     

    Get the directory of the running application (uses static string)

    GetCameraMatrix ¶

    GetCameraMatrix :: proc "c" (camera: Camera3D) -> matrix[4, 4]f32 ---
     

    Get camera transform matrix (view matrix)

    GetCameraMatrix2D ¶

    GetCameraMatrix2D :: proc "c" (camera: Camera2D) -> matrix[4, 4]f32 ---
     

    Get camera 2d transform matrix

    GetCharPressed ¶

    GetCharPressed :: proc "c" () -> rune ---
     

    Get char pressed (unicode), call it multiple times for chars queued

    GetClipboardText ¶

    GetClipboardText :: proc "c" () -> cstring ---
     

    Get clipboard text content

    GetCodepoint ¶

    GetCodepoint :: proc "c" (text: cstring, codepointSize: ^i32) -> rune ---
     

    Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure

    GetCodepointCount ¶

    GetCodepointCount :: proc "c" (text: cstring) -> i32 ---
     

    Get total number of codepoints in a UTF-8 encoded string

    GetCodepointNext ¶

    GetCodepointNext :: proc "c" (text: cstring, codepointSize: ^i32) -> rune ---
     

    Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure

    GetCodepointPrevious ¶

    GetCodepointPrevious :: proc "c" (text: cstring, codepointSize: ^i32) -> rune ---
     

    Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure

    GetCollisionRec ¶

    GetCollisionRec :: proc "c" (rec1, rec2: Rectangle) -> Rectangle ---
     

    Get collision rectangle for two rectangles collision

    GetColor ¶

    GetColor :: proc "c" (hexValue: u32) -> Color ---
     

    Get Color structure from hexadecimal value

    GetCurrentMonitor ¶

    GetCurrentMonitor :: proc "c" () -> i32 ---
     

    Get current connected monitor

    GetDirectoryPath ¶

    GetDirectoryPath :: proc "c" (filePath: cstring) -> cstring ---
     

    Get full path for a given fileName with path (uses static string)

    GetFPS ¶

    GetFPS :: proc "c" () -> i32 ---
     

    Returns current FPS

    GetFileExtension ¶

    GetFileExtension :: proc "c" (fileName: cstring) -> cstring ---
     

    Get pointer to extension for a filename string (includes dot: '.png')

    GetFileLength ¶

    GetFileLength :: proc "c" (fileName: cstring) -> i32 ---
     

    Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)

    GetFileModTime ¶

    GetFileModTime :: proc "c" (fileName: cstring) -> i32 ---
     

    Get file modification time (last write time)

    GetFileName ¶

    GetFileName :: proc "c" (filePath: cstring) -> cstring ---
     

    Get pointer to filename for a path string

    GetFileNameWithoutExt ¶

    GetFileNameWithoutExt :: proc "c" (filePath: cstring) -> cstring ---
     

    Get filename string without extension (uses static string)

    GetFontDefault ¶

    GetFontDefault :: proc "c" () -> Font ---
     

    Get the default Font

    GetFrameTime ¶

    GetFrameTime :: proc "c" () -> f32 ---
     

    Returns time in seconds for last frame drawn (delta time)

    GetGamepadAxisCount ¶

    GetGamepadAxisCount :: proc "c" (gamepad: i32) -> i32 ---
     

    Get gamepad axis count for a gamepad

    GetGamepadAxisMovement ¶

    GetGamepadAxisMovement :: proc "c" (gamepad: i32, axis: GamepadAxis) -> f32 ---
     

    Get axis movement value for a gamepad axis

    GetGamepadButtonPressed ¶

    GetGamepadButtonPressed :: proc "c" () -> GamepadButton ---
     

    Get the last gamepad button pressed

    GetGamepadName ¶

    GetGamepadName :: proc "c" (gamepad: i32) -> cstring ---
     

    Get gamepad internal name id

    GetGestureDetected ¶

    GetGestureDetected :: proc "c" () -> Gestures ---
     

    Get latest detected gesture

    GetGestureDragAngle ¶

    GetGestureDragAngle :: proc "c" () -> f32 ---
     

    Get gesture drag angle

    GetGestureDragVector ¶

    GetGestureDragVector :: proc "c" () -> [2]f32 ---
     

    Get gesture drag vector

    GetGestureHoldDuration ¶

    GetGestureHoldDuration :: proc "c" () -> f32 ---
     

    Get gesture hold time in milliseconds

    GetGesturePinchAngle ¶

    GetGesturePinchAngle :: proc "c" () -> f32 ---
     

    Get gesture pinch angle

    GetGesturePinchVector ¶

    GetGesturePinchVector :: proc "c" () -> [2]f32 ---
     

    Get gesture pinch delta

    GetGlyphAtlasRec ¶

    GetGlyphAtlasRec :: proc "c" (font: Font, codepoint: rune) -> Rectangle ---
     

    Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found

    GetGlyphIndex ¶

    GetGlyphIndex :: proc "c" (font: Font, codepoint: rune) -> i32 ---
     

    Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found

    GetGlyphInfo ¶

    GetGlyphInfo :: proc "c" (font: Font, codepoint: rune) -> GlyphInfo ---
     

    Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found

    GetImageAlphaBorder ¶

    GetImageAlphaBorder :: proc "c" (image: Image, threshold: f32) -> Rectangle ---
     

    Get image alpha border rectangle

    GetImageColor ¶

    GetImageColor :: proc "c" (image: Image, x, y: i32) -> Color ---
     

    Get image pixel color at (x, y) position

    GetKeyPressed ¶

    GetKeyPressed :: proc "c" () -> KeyboardKey ---
     

    Get key pressed (keycode), call it multiple times for keys queued

    GetMasterVolume ¶

    GetMasterVolume :: proc "c" () -> f32 ---
     

    Get master volume (listener)

    GetMeshBoundingBox ¶

    GetMeshBoundingBox :: proc "c" (mesh: Mesh) -> BoundingBox ---
     

    Compute mesh bounding box limits

    GetModelBoundingBox ¶

    GetModelBoundingBox :: proc "c" (model: Model) -> BoundingBox ---
     

    Compute model bounding box limits (considers all meshes)

    GetMonitorCount ¶

    GetMonitorCount :: proc "c" () -> i32 ---
     

    Get number of connected monitors

    GetMonitorHeight ¶

    GetMonitorHeight :: proc "c" (monitor: i32) -> i32 ---
     

    Get specified monitor height (current video mode used by monitor)

    GetMonitorName ¶

    GetMonitorName :: proc "c" (monitor: i32) -> cstring ---
     

    Get the human-readable, UTF-8 encoded name of the specified monitor

    GetMonitorPhysicalHeight ¶

    GetMonitorPhysicalHeight :: proc "c" (monitor: i32) -> i32 ---
     

    Get specified monitor physical height in millimetres

    GetMonitorPhysicalWidth ¶

    GetMonitorPhysicalWidth :: proc "c" (monitor: i32) -> i32 ---
     

    Get specified monitor physical width in millimetres

    GetMonitorPosition ¶

    GetMonitorPosition :: proc "c" (monitor: i32) -> [2]f32 ---
     

    Get specified monitor position

    GetMonitorRefreshRate ¶

    GetMonitorRefreshRate :: proc "c" (monitor: i32) -> i32 ---
     

    Get specified monitor refresh rate

    GetMonitorWidth ¶

    GetMonitorWidth :: proc "c" (monitor: i32) -> i32 ---
     

    Get specified monitor width (current video mode used by monitor)

    GetMouseDelta ¶

    GetMouseDelta :: proc "c" () -> [2]f32 ---
     

    Returns mouse delta XY

    GetMousePosition ¶

    GetMousePosition :: proc "c" () -> [2]f32 ---
     

    Returns mouse position XY

    GetMouseRay ¶

    GetMouseRay :: proc "c" (mousePosition: [2]f32, camera: Camera3D) -> Ray ---
     

    Get a ray trace from mouse position

    GetMouseWheelMove ¶

    GetMouseWheelMove :: proc "c" () -> f32 ---
     

    Returns mouse wheel movement Y

    GetMouseWheelMoveV ¶

    GetMouseWheelMoveV :: proc "c" () -> [2]f32 ---
     

    Get mouse wheel movement for both X and Y

    GetMouseX ¶

    GetMouseX :: proc "c" () -> i32 ---
     

    Returns mouse position X

    GetMouseY ¶

    GetMouseY :: proc "c" () -> i32 ---
     

    Returns mouse position Y

    GetMusicTimeLength ¶

    GetMusicTimeLength :: proc "c" (music: Music) -> f32 ---
     

    Get music time length (in seconds)

    GetMusicTimePlayed ¶

    GetMusicTimePlayed :: proc "c" (music: Music) -> f32 ---
     

    Get current music time played (in seconds)

    GetPixelColor ¶

    GetPixelColor :: proc "c" (srcPtr: rawptr, format: PixelFormat) -> Color ---
     

    Get Color from a source pixel pointer of certain format

    GetPixelDataSize ¶

    GetPixelDataSize :: proc "c" (width, height: i32, format: PixelFormat) -> i32 ---
     

    Get pixel data size in bytes for certain format

    GetPrevDirectoryPath ¶

    GetPrevDirectoryPath :: proc "c" (dirPath: cstring) -> cstring ---
     

    Get previous directory path for a given path (uses static string)

    GetRandomValue ¶

    GetRandomValue :: proc "c" (min, max: i32) -> i32 ---
     

    Get a random value between min and max (both included)

    GetRayCollisionBox ¶

    GetRayCollisionBox :: proc "c" (ray: Ray, box: BoundingBox) -> RayCollision ---
     

    Get collision info between ray and box

    GetRayCollisionMesh ¶

    GetRayCollisionMesh :: proc "c" (ray: Ray, mesh: Mesh, transform: matrix[4, 4]f32) -> RayCollision ---
     

    Get collision info between ray and mesh

    GetRayCollisionQuad ¶

    GetRayCollisionQuad :: proc "c" (ray: Ray, p1, p2, p3, p4: [3]f32) -> RayCollision ---
     

    Get collision info between ray and quad

    GetRayCollisionSphere ¶

    GetRayCollisionSphere :: proc "c" (ray: Ray, center: [3]f32, radius: f32) -> RayCollision ---
     

    Get collision info between ray and sphere

    GetRayCollisionTriangle ¶

    GetRayCollisionTriangle :: proc "c" (ray: Ray, p1, p2, p3: [3]f32) -> RayCollision ---
     

    Get collision info between ray and triangle

    GetRenderHeight ¶

    GetRenderHeight :: proc "c" () -> i32 ---
     

    Get current render height (it considers HiDPI)

    GetRenderWidth ¶

    GetRenderWidth :: proc "c" () -> i32 ---
     

    Get current render width (it considers HiDPI)

    GetScreenHeight ¶

    GetScreenHeight :: proc "c" () -> i32 ---
     

    Get current screen height

    GetScreenToWorld2D ¶

    GetScreenToWorld2D :: proc "c" (position: [2]f32, camera: Camera2D) -> [2]f32 ---
     

    Get the world space position for a 2d camera screen space position

    GetScreenWidth ¶

    GetScreenWidth :: proc "c" () -> i32 ---
     

    Get current screen width

    GetShaderLocation ¶

    GetShaderLocation :: proc "c" (shader: Shader, uniformName: cstring) -> ShaderLocationIndex ---
     

    Get shader uniform location

    GetShaderLocationAttrib ¶

    GetShaderLocationAttrib :: proc "c" (shader: Shader, attribName: cstring) -> ShaderLocationIndex ---
     

    Get shader attribute location

    GetSplinePointBasis ¶

    GetSplinePointBasis :: proc "c" (p1, p2, p3, p4: [2]f32, t: f32) -> [2]f32 ---
     

    Get (evaluate) spline point: B-Spline

    GetSplinePointBezierCubic ¶

    GetSplinePointBezierCubic :: proc "c" (p1, c2, c3, p4: [2]f32, t: f32) -> [2]f32 ---
     

    Get (evaluate) spline point: Cubic Bezier

    GetSplinePointBezierQuad ¶

    GetSplinePointBezierQuad :: proc "c" (p1, c2, p3: [2]f32, t: f32) -> [2]f32 ---
     

    Get (evaluate) spline point: Quadratic Bezier

    GetSplinePointCatmullRom ¶

    GetSplinePointCatmullRom :: proc "c" (p1, p2, p3, p4: [2]f32, t: f32) -> [2]f32 ---
     

    Get (evaluate) spline point: Catmull-Rom

    GetSplinePointLinear ¶

    GetSplinePointLinear :: proc "c" (startPos, endPos: [2]f32, t: f32) -> [2]f32 ---
     

    Spline segment point evaluation functions, for a given t [0.0f .. 1.0f]

    GetTime ¶

    GetTime :: proc "c" () -> f64 ---
     

    Returns elapsed time in seconds since InitWindow()

    GetTouchPointCount ¶

    GetTouchPointCount :: proc "c" () -> i32 ---
     

    Get number of touch points

    GetTouchPointId ¶

    GetTouchPointId :: proc "c" (index: i32) -> i32 ---
     

    Get touch point identifier for given index

    GetTouchPosition ¶

    GetTouchPosition :: proc "c" (index: i32) -> [2]f32 ---
     

    Returns touch position XY for a touch point index (relative to screen size)

    GetTouchX ¶

    GetTouchX :: proc "c" () -> i32 ---
     

    Returns touch position X for touch point 0 (relative to screen size)

    GetTouchY ¶

    GetTouchY :: proc "c" () -> i32 ---
     

    Returns touch position Y for touch point 0 (relative to screen size)

    GetWindowHandle ¶

    GetWindowHandle :: proc "c" () -> rawptr ---
     

    Get native window handle

    GetWindowPosition ¶

    GetWindowPosition :: proc "c" () -> [2]f32 ---
     

    Get window position XY on monitor

    GetWindowScaleDPI ¶

    GetWindowScaleDPI :: proc "c" () -> [2]f32 ---
     

    Get window scale DPI factor

    GetWorkingDirectory ¶

    GetWorkingDirectory :: proc "c" () -> cstring ---
     

    Get current working directory (uses static string)

    GetWorldToScreen ¶

    GetWorldToScreen :: proc "c" (position: [3]f32, camera: Camera3D) -> [2]f32 ---
     

    Get the screen space position for a 3d world space position

    GetWorldToScreen2D ¶

    GetWorldToScreen2D :: proc "c" (position: [2]f32, camera: Camera2D) -> [2]f32 ---
     

    Get the screen space position for a 2d camera world space position

    GetWorldToScreenEx ¶

    GetWorldToScreenEx :: proc "c" (position: [3]f32, camera: Camera3D, width, height: i32) -> [2]f32 ---
     

    Get size position for a 3d world space position

    GuiButton ¶

    GuiButton :: proc "c" (bounds: Rectangle, text: cstring) -> bool ---
     

    Button control, returns true when clicked

    GuiCheckBox ¶

    GuiCheckBox :: proc "c" (bounds: Rectangle, text: cstring, checked: ^bool) -> bool ---
     

    Check Box control, returns true when active

    GuiColorBarAlpha ¶

    GuiColorBarAlpha :: proc "c" (bounds: Rectangle, text: cstring, alpha: ^f32) -> i32 ---
     

    Color Bar Alpha control

    GuiColorBarHue ¶

    GuiColorBarHue :: proc "c" (bounds: Rectangle, text: cstring, value: ^f32) -> i32 ---
     

    Color Bar Hue control

    GuiColorPanel ¶

    GuiColorPanel :: proc "c" (bounds: Rectangle, text: cstring, color: ^Color) -> i32 ---
     

    Color Panel control

    GuiColorPanelHSV ¶

    GuiColorPanelHSV :: proc "c" (bounds: Rectangle, text: cstring, colorHsv: ^[3]f32) -> i32 ---
     

    Color Panel control that returns HSV color value, used by GuiColorPickerHSV()

    GuiColorPicker ¶

    GuiColorPicker :: proc "c" (bounds: Rectangle, text: cstring, color: ^Color) -> i32 ---
     

    Color Picker control (multiple color controls)

    GuiColorPickerHSV ¶

    GuiColorPickerHSV :: proc "c" (bounds: Rectangle, text: cstring, colorHsv: ^[3]f32) -> i32 ---
     

    Color Picker control that avoids conversion to RGB on each call (multiple color controls)

    GuiComboBox ¶

    GuiComboBox :: proc "c" (bounds: Rectangle, text: cstring, active: ^i32) -> i32 ---
     

    Combo Box control, returns selected item index

    GuiDisable ¶

    GuiDisable :: proc "c" () ---
     

    Disable gui controls (global state)

    GuiDisableTooltip ¶

    GuiDisableTooltip :: proc "c" () ---
     

    Disable gui tooltips (global state)

    GuiDrawIcon ¶

    GuiDrawIcon :: proc "c" (iconId: i32, posX: i32, posY: i32, pixelSize: i32, color: Color) ---
     

    Draw icon using pixel size at specified position

    GuiDropdownBox ¶

    GuiDropdownBox :: proc "c" (bounds: Rectangle, text: cstring, active: ^i32, editMode: bool) -> bool ---
     

    Dropdown Box control, returns selected item

    GuiDummyRec ¶

    GuiDummyRec :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Dummy control for placeholders

    GuiEnable ¶

    GuiEnable :: proc "c" () ---
     

    Enable gui controls (global state)

    GuiEnableTooltip ¶

    GuiEnableTooltip :: proc "c" () ---
     

    Enable gui tooltips (global state)

    GuiGetFont ¶

    GuiGetFont :: proc "c" () -> Font ---
     

    Get gui custom font (global state)

    GuiGetIcons ¶

    GuiGetIcons :: proc "c" () -> [^]u32 ---
     

    Get raygui icons data pointer

    GuiGetState ¶

    GuiGetState :: proc "c" () -> i32 ---
     

    Get gui state (global state)

    GuiGetStyle ¶

    GuiGetStyle :: proc "c" (control: i32, property: i32) -> i32 ---
     

    Get one style property

    GuiGrid ¶

    GuiGrid :: proc "c" (bounds: Rectangle, text: cstring, spacing: f32, subdivs: i32, mouseCell: ^[2]f32) -> i32 ---
     

    Grid control, returns mouse cell position

    GuiGroupBox ¶

    GuiGroupBox :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Group Box control with text name

    GuiIconText ¶

    GuiIconText :: proc "c" (iconId: i32, text: cstring) -> cstring ---
     

    Get text with icon id prepended (if supported)

    GuiIsLocked ¶

    GuiIsLocked :: proc "c" () -> bool ---
     

    Check if gui is locked (global state)

    GuiLabel ¶

    GuiLabel :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Label control, shows text

    GuiLabelButton ¶

    GuiLabelButton :: proc "c" (bounds: Rectangle, text: cstring) -> bool ---
     

    Label button control, show true when clicked

    GuiLine ¶

    GuiLine :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Line separator control, could contain text

    GuiListView ¶

    GuiListView :: proc "c" (bounds: Rectangle, text: cstring, scrollIndex: ^i32, active: ^i32) -> i32 ---
     

    Advance controls set

    GuiListViewEx ¶

    GuiListViewEx :: proc "c" (
    	bounds:      Rectangle, 
    	text:        [^]cstring, 
    	count:       i32, 
    	scrollIndex: ^i32, 
    	active:      ^i32, 
    	focus:       ^i32, 
    ) -> i32 ---
     

    List View with extended parameters

    GuiLoadIcons ¶

    GuiLoadIcons :: proc "c" (fileName: cstring, loadIconsName: bool) -> [^]cstring ---
     

    Load raygui icons file (.rgi) into internal icons data

    GuiLoadStyle ¶

    GuiLoadStyle :: proc "c" (fileName: cstring) ---
     

    Load style file over global style variable (.rgs)

    GuiLoadStyleDefault ¶

    GuiLoadStyleDefault :: proc "c" () ---
     

    Load style default over global style

    GuiLock ¶

    GuiLock :: proc "c" () ---
     

    Lock gui controls (global state)

    GuiMessageBox ¶

    GuiMessageBox :: proc "c" (bounds: Rectangle, title: cstring, message: cstring, buttons: cstring) -> i32 ---
     

    Message Box control, displays a message

    GuiPanel ¶

    GuiPanel :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Panel control, useful to group controls

    GuiProgressBar ¶

    GuiProgressBar :: proc "c" (
    	bounds:    Rectangle, 
    	textLeft:  cstring, 
    	textRight: cstring, 
    	value:     ^f32, 
    	minValue:  f32, 
    	maxValue:  f32, 
    ) -> i32 ---
     

    Progress Bar control, shows current progress value

    GuiScrollPanel ¶

    GuiScrollPanel :: proc "c" (bounds: Rectangle, text: cstring, content: Rectangle, scroll: ^[2]f32, view: ^Rectangle) -> i32 ---
     

    Scroll Panel control

    GuiSetAlpha ¶

    GuiSetAlpha :: proc "c" (alpha: f32) ---
     

    Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f

    GuiSetFont ¶

    GuiSetFont :: proc "c" (font: Font) ---
     

    Set gui custom font (global state)

    GuiSetIconScale ¶

    GuiSetIconScale :: proc "c" (scale: i32) ---
     

    Set default icon drawing size

    GuiSetState ¶

    GuiSetState :: proc "c" (state: i32) ---
     

    Set gui state (global state)

    GuiSetStyle ¶

    GuiSetStyle :: proc "c" (control: i32, property: i32, value: i32) ---
     

    Set one style property

    GuiSetTooltip ¶

    GuiSetTooltip :: proc "c" (tooltip: cstring) ---
     

    Set tooltip string

    GuiSlider ¶

    GuiSlider :: proc "c" (
    	bounds:    Rectangle, 
    	textLeft:  cstring, 
    	textRight: cstring, 
    	value:     ^f32, 
    	minValue:  f32, 
    	maxValue:  f32, 
    ) -> i32 ---
     

    Slider control, returns selected value

    GuiSliderBar ¶

    GuiSliderBar :: proc "c" (
    	bounds:    Rectangle, 
    	textLeft:  cstring, 
    	textRight: cstring, 
    	value:     ^f32, 
    	minValue:  f32, 
    	maxValue:  f32, 
    ) -> i32 ---
     

    Slider Bar control, returns selected value

    GuiSpinner ¶

    GuiSpinner :: proc "c" (
    	bounds:             Rectangle, 
    	text:               cstring, 
    	value:              ^i32, 
    	minValue, maxValue: i32, 
    	editMode:           bool, 
    ) -> i32 ---
     

    Spinner control, returns selected value

    GuiStatusBar ¶

    GuiStatusBar :: proc "c" (bounds: Rectangle, text: cstring) -> i32 ---
     

    Status Bar control, shows info text

    GuiTabBar ¶

    GuiTabBar :: proc "c" (bounds: Rectangle, text: [^]cstring, count: i32, active: ^i32) -> i32 ---
     

    Tab Bar control, returns TAB to be closed or -1

    GuiTextBox ¶

    GuiTextBox :: proc "c" (bounds: Rectangle, text: cstring, textSize: i32, editMode: bool) -> bool ---
     

    Text Box control, updates input text

    GuiTextInputBox ¶

    GuiTextInputBox :: proc "c" (
    	bounds:           Rectangle, 
    	title:            cstring, 
    	message:          cstring, 
    	buttons:          cstring, 
    	text:             cstring, 
    	textMaxSize:      i32, 
    	secretViewActive: ^bool, 
    ) -> i32 ---
     

    Text Input Box control, ask for text, supports secret

    GuiToggle ¶

    GuiToggle :: proc "c" (bounds: Rectangle, text: cstring, active: ^bool) -> i32 ---
     

    Toggle Button control, returns true when active

    GuiToggleGroup ¶

    GuiToggleGroup :: proc "c" (bounds: Rectangle, text: cstring, active: ^i32) -> i32 ---
     

    Toggle Group control, returns active toggle index

    GuiToggleSlider ¶

    GuiToggleSlider :: proc "c" (bounds: Rectangle, text: cstring, active: ^i32) -> i32 ---

    GuiUnlock ¶

    GuiUnlock :: proc "c" () ---
     

    Unlock gui controls (global state)

    GuiValueBox ¶

    GuiValueBox :: proc "c" (
    	bounds:             Rectangle, 
    	text:               cstring, 
    	value:              ^i32, 
    	minValue, maxValue: i32, 
    	editMode:           bool, 
    ) -> i32 ---
     

    Value Box control, updates input text with numbers

    GuiWindowBox ¶

    GuiWindowBox :: proc "c" (bounds: Rectangle, title: cstring) -> i32 ---
     

    Window Box control, shows a window that can be closed

    HideCursor ¶

    HideCursor :: proc "c" () ---
     

    Hides cursor

    ImageAlphaClear ¶

    ImageAlphaClear :: proc "c" (image: ^Image, color: Color, threshold: f32) ---
     

    Clear alpha channel to desired color

    ImageAlphaCrop ¶

    ImageAlphaCrop :: proc "c" (image: ^Image, threshold: f32) ---
     

    Crop image depending on alpha value

    ImageAlphaMask ¶

    ImageAlphaMask :: proc "c" (image: ^Image, alphaMask: Image) ---
     

    Apply alpha mask to image

    ImageAlphaPremultiply ¶

    ImageAlphaPremultiply :: proc "c" (image: ^Image) ---
     

    Premultiply alpha channel

    ImageBlurGaussian ¶

    ImageBlurGaussian :: proc "c" (image: ^Image, blurSize: i32) ---
     

    Apply Gaussian blur using a box blur approximation

    ImageClearBackground ¶

    ImageClearBackground :: proc "c" (dst: ^Image, color: Color) ---
     

    Clear image background with given color

    ImageColorBrightness ¶

    ImageColorBrightness :: proc "c" (image: ^Image, brightness: i32) ---
     

    Modify image color: brightness (-255 to 255)

    ImageColorContrast ¶

    ImageColorContrast :: proc "c" (image: ^Image, contrast: f32) ---
     

    Modify image color: contrast (-100 to 100)

    ImageColorGrayscale ¶

    ImageColorGrayscale :: proc "c" (image: ^Image) ---
     

    Modify image color: grayscale

    ImageColorInvert ¶

    ImageColorInvert :: proc "c" (image: ^Image) ---
     

    Modify image color: invert

    ImageColorReplace ¶

    ImageColorReplace :: proc "c" (image: ^Image, color, replace: Color) ---
     

    Modify image color: replace color

    ImageColorTint ¶

    ImageColorTint :: proc "c" (image: ^Image, color: Color) ---
     

    Modify image color: tint

    ImageCopy ¶

    ImageCopy :: proc "c" (image: Image) -> Image ---
     

    Create an image duplicate (useful for transformations)

    ImageCrop ¶

    ImageCrop :: proc "c" (image: ^Image, crop: Rectangle) ---
     

    Crop an image to a defined rectangle

    ImageDither ¶

    ImageDither :: proc "c" (image: ^Image, rBpp, gBpp, bBpp, aBpp: i32) ---
     

    Dither image data to 16bpp or lower (Floyd-Steinberg dithering)

    ImageDraw ¶

    ImageDraw :: proc "c" (dst: ^Image, src: Image, srcRec, dstRec: Rectangle, tint: Color) ---
     

    Draw a source image within a destination image (tint applied to source)

    ImageDrawCircle ¶

    ImageDrawCircle :: proc "c" (dst: ^Image, centerX, centerY: i32, radius: i32, color: Color) ---
     

    Draw a filled circle within an image

    ImageDrawCircleLines ¶

    ImageDrawCircleLines :: proc "c" (dst: ^Image, centerX, centerY: i32, radius: i32, color: Color) ---
     

    Draw circle outline within an image

    ImageDrawCircleLinesV ¶

    ImageDrawCircleLinesV :: proc "c" (dst: ^Image, center: [2]f32, radius: i32, color: Color) ---
     

    Draw circle outline within an image (Vector version)

    ImageDrawCircleV ¶

    ImageDrawCircleV :: proc "c" (dst: ^Image, center: [2]f32, radius: i32, color: Color) ---
     

    Draw a filled circle within an image (Vector version)

    ImageDrawLine ¶

    ImageDrawLine :: proc "c" (
    	dst:                                    ^Image, 
    	startPosX, startPosY, endPosX, endPosY: i32, 
    	color:                                  Color, 
    ) ---
     

    Draw line within an image

    ImageDrawLineV ¶

    ImageDrawLineV :: proc "c" (dst: ^Image, start, end: [2]f32, color: Color) ---
     

    Draw line within an image (Vector version)

    ImageDrawPixel ¶

    ImageDrawPixel :: proc "c" (dst: ^Image, posX, posY: i32, color: Color) ---
     

    Draw pixel within an image

    ImageDrawPixelV ¶

    ImageDrawPixelV :: proc "c" (dst: ^Image, position: [2]f32, color: Color) ---
     

    Draw pixel within an image (Vector version)

    ImageDrawRectangle ¶

    ImageDrawRectangle :: proc "c" (
    	dst:           ^Image, 
    	posX, posY:    i32, 
    	width, height: i32, 
    	color:         Color, 
    ) ---
     

    Draw rectangle within an image

    ImageDrawRectangleLines ¶

    ImageDrawRectangleLines :: proc "c" (dst: ^Image, rec: Rectangle, thick: i32, color: Color) ---
     

    Draw rectangle lines within an image

    ImageDrawRectangleRec ¶

    ImageDrawRectangleRec :: proc "c" (dst: ^Image, rec: Rectangle, color: Color) ---
     

    Draw rectangle within an image

    ImageDrawRectangleV ¶

    ImageDrawRectangleV :: proc "c" (dst: ^Image, position, size: [2]f32, color: Color) ---
     

    Draw rectangle within an image (Vector version)

    ImageDrawText ¶

    ImageDrawText :: proc "c" (
    	dst:        ^Image, 
    	text:       cstring, 
    	posX, posY: i32, 
    	fontSize:   i32, 
    	color:      Color, 
    ) ---
     

    Draw text (using default font) within an image (destination)

    ImageDrawTextEx ¶

    ImageDrawTextEx :: proc "c" (
    	dst:      ^Image, 
    	font:     Font, 
    	text:     cstring, 
    	position: [2]f32, 
    	fontSize: f32, 
    	spacing:  f32, 
    	tint:     Color, 
    ) ---
     

    Draw text (custom sprite font) within an image (destination)

    ImageFlipHorizontal ¶

    ImageFlipHorizontal :: proc "c" (image: ^Image) ---
     

    Flip image horizontally

    ImageFlipVertical ¶

    ImageFlipVertical :: proc "c" (image: ^Image) ---
     

    Flip image vertically

    ImageFormat ¶

    ImageFormat :: proc "c" (image: ^Image, newFormat: PixelFormat) ---
     

    Convert image data to desired format

    ImageFromImage ¶

    ImageFromImage :: proc "c" (image: Image, rec: Rectangle) -> Image ---
     

    Create an image from another image piece

    ImageMipmaps ¶

    ImageMipmaps :: proc "c" (image: ^Image) ---
     

    Compute all mipmap levels for a provided image

    ImageResize ¶

    ImageResize :: proc "c" (image: ^Image, newWidth, newHeight: i32) ---
     

    Resize image (Bicubic scaling algorithm)

    ImageResizeCanvas ¶

    ImageResizeCanvas :: proc "c" (
    	image:               ^Image, 
    	newWidth, newHeight: i32, 
    	offsetX, offsetY:    i32, 
    	fill:                Color, 
    ) ---
     

    Resize canvas and fill with color

    ImageResizeNN ¶

    ImageResizeNN :: proc "c" (image: ^Image, newWidth, newHeight: i32) ---
     

    Resize image (Nearest-Neighbor scaling algorithm)

    ImageRotate ¶

    ImageRotate :: proc "c" (image: ^Image, degrees: i32) ---
     

    Rotate image by input angle in degrees( -359 to 359)

    ImageRotateCCW ¶

    ImageRotateCCW :: proc "c" (image: ^Image) ---
     

    Rotate image counter-clockwise 90deg

    ImageRotateCW ¶

    ImageRotateCW :: proc "c" (image: ^Image) ---
     

    Rotate image clockwise 90deg

    ImageText ¶

    ImageText :: proc "c" (text: cstring, fontSize: i32, color: Color) -> Image ---
     

    Create an image from text (default font)

    ImageTextEx ¶

    ImageTextEx :: proc "c" (font: Font, text: cstring, fontSize: f32, spacing: f32, tint: Color) -> Image ---
     

    Create an image from text (custom sprite font)

    ImageToPOT ¶

    ImageToPOT :: proc "c" (image: ^Image, fill: Color) ---
     

    Convert image to POT (power-of-two)

    InitAudioDevice ¶

    InitAudioDevice :: proc "c" () ---
     

    Initialize audio device and context

    InitWindow ¶

    InitWindow :: proc "c" (width, height: i32, title: cstring) ---
     

    Initialize window and OpenGL context

    IsAudioDeviceReady ¶

    IsAudioDeviceReady :: proc "c" () -> bool ---
     

    Check if audio device has been initialized successfully

    IsAudioStreamPlaying ¶

    IsAudioStreamPlaying :: proc "c" (stream: AudioStream) -> bool ---
     

    Check if audio stream is playing

    IsAudioStreamProcessed ¶

    IsAudioStreamProcessed :: proc "c" (stream: AudioStream) -> bool ---
     

    Check if any audio stream buffers requires refill

    IsAudioStreamReady ¶

    IsAudioStreamReady :: proc "c" (stream: AudioStream) -> bool ---
     

    Checks if an audio stream is ready

    IsCursorHidden ¶

    IsCursorHidden :: proc "c" () -> bool ---
     

    Check if cursor is not visible

    IsCursorOnScreen ¶

    IsCursorOnScreen :: proc "c" () -> bool ---
     

    Check if cursor is on the current screen.

    IsFileDropped ¶

    IsFileDropped :: proc "c" () -> bool ---
     

    Check if a file has been dropped into window

    IsFileExtension ¶

    IsFileExtension :: proc "c" (fileName, ext: cstring) -> bool ---
     

    Check file extension (including point: .png, .wav)

    IsFontReady ¶

    IsFontReady :: proc "c" (font: Font) -> bool ---
     

    Check if a font is ready

    IsGamepadAvailable ¶

    IsGamepadAvailable :: proc "c" (gamepad: i32) -> bool ---
     

    Check if a gamepad is available

    IsGamepadButtonDown ¶

    IsGamepadButtonDown :: proc "c" (gamepad: i32, button: GamepadButton) -> bool ---
     

    Check if a gamepad button is being pressed

    IsGamepadButtonPressed ¶

    IsGamepadButtonPressed :: proc "c" (gamepad: i32, button: GamepadButton) -> bool ---
     

    Check if a gamepad button has been pressed once

    IsGamepadButtonReleased ¶

    IsGamepadButtonReleased :: proc "c" (gamepad: i32, button: GamepadButton) -> bool ---
     

    Check if a gamepad button has been released once

    IsGamepadButtonUp ¶

    IsGamepadButtonUp :: proc "c" (gamepad: i32, button: GamepadButton) -> bool ---
     

    Check if a gamepad button is NOT being pressed

    IsGestureDetected ¶

    IsGestureDetected :: proc "c" (gesture: Gesture) -> bool {…}
     

    Check if a gesture have been detected

    IsImageReady ¶

    IsImageReady :: proc "c" (image: Image) -> bool ---
     

    Check if an image is ready

    IsKeyDown ¶

    IsKeyDown :: proc "c" (key: KeyboardKey) -> bool ---
     

    Detect if a key is being pressed

    IsKeyPressed ¶

    IsKeyPressed :: proc "c" (key: KeyboardKey) -> bool ---
     

    Detect if a key has been pressed once

    IsKeyPressedRepeat ¶

    IsKeyPressedRepeat :: proc "c" (key: KeyboardKey) -> bool ---
     

    Check if a key has been pressed again (Only PLATFORM_DESKTOP)

    IsKeyReleased ¶

    IsKeyReleased :: proc "c" (key: KeyboardKey) -> bool ---
     

    Detect if a key has been released once

    IsKeyUp ¶

    IsKeyUp :: proc "c" (key: KeyboardKey) -> bool ---
     

    Detect if a key is NOT being pressed

    IsMaterialReady ¶

    IsMaterialReady :: proc "c" (material: Material) -> bool ---
     

    Check if a material is ready

    IsModelAnimationValid ¶

    IsModelAnimationValid :: proc "c" (model: Model, anim: ModelAnimation) -> bool ---
     

    Check model animation skeleton match

    IsModelReady ¶

    IsModelReady :: proc "c" (model: Model) -> bool ---
     

    Check if a model is ready

    IsMouseButtonDown ¶

    IsMouseButtonDown :: proc "c" (button: MouseButton) -> bool ---
     

    Detect if a mouse button is being pressed

    IsMouseButtonPressed ¶

    IsMouseButtonPressed :: proc "c" (button: MouseButton) -> bool ---
     

    Detect if a mouse button has been pressed once

    IsMouseButtonReleased ¶

    IsMouseButtonReleased :: proc "c" (button: MouseButton) -> bool ---
     

    Detect if a mouse button has been released once

    IsMouseButtonUp ¶

    IsMouseButtonUp :: proc "c" (button: MouseButton) -> bool {…}

    IsMusicReady ¶

    IsMusicReady :: proc "c" (music: Music) -> bool ---
     

    Checks if a music stream is ready

    IsMusicStreamPlaying ¶

    IsMusicStreamPlaying :: proc "c" (music: Music) -> bool ---
     

    Check if music is playing

    IsPathFile ¶

    IsPathFile :: proc "c" (path: cstring) -> bool ---
     

    Check if a given path is a file or a directory

    IsRenderTextureReady ¶

    IsRenderTextureReady :: proc "c" (target: RenderTexture) -> bool ---
     

    Check if a render texture is ready

    IsShaderReady ¶

    IsShaderReady :: proc "c" (shader: Shader) -> bool ---
     

    Check if a shader is ready

    IsSoundPlaying ¶

    IsSoundPlaying :: proc "c" (sound: Sound) -> bool ---
     

    Check if a sound is currently playing

    IsSoundReady ¶

    IsSoundReady :: proc "c" (sound: Sound) -> bool ---
     

    Checks if a sound is ready

    IsTextureReady ¶

    IsTextureReady :: proc "c" (texture: Texture) -> bool ---
     

    Check if a texture is ready

    IsWaveReady ¶

    IsWaveReady :: proc "c" (wave: Wave) -> bool ---
     

    Checks if wave data is ready

    IsWindowFocused ¶

    IsWindowFocused :: proc "c" () -> bool ---
     

    Check if window is currently focused (only PLATFORM_DESKTOP)

    IsWindowFullscreen ¶

    IsWindowFullscreen :: proc "c" () -> bool ---
     

    Check if window is currently fullscreen

    IsWindowHidden ¶

    IsWindowHidden :: proc "c" () -> bool ---
     

    Check if window is currently hidden (only PLATFORM_DESKTOP)

    IsWindowMaximized ¶

    IsWindowMaximized :: proc "c" () -> bool ---
     

    Check if window is currently maximized (only PLATFORM_DESKTOP)

    IsWindowMinimized ¶

    IsWindowMinimized :: proc "c" () -> bool ---
     

    Check if window is currently minimized (only PLATFORM_DESKTOP)

    IsWindowReady ¶

    IsWindowReady :: proc "c" () -> bool ---
     

    Check if window has been initialized successfully

    IsWindowResized ¶

    IsWindowResized :: proc "c" () -> bool ---
     

    Check if window has been resized last frame

    IsWindowState ¶

    IsWindowState :: proc "c" (flags: ConfigFlags) -> bool ---
     

    Check if one specific window flag is enabled

    Lerp ¶

    Lerp :: proc "c" (start, end: f32, amount: f32) -> f32 {…}
     

    Calculate linear interpolation between two floats

    LoadAudioStream ¶

    LoadAudioStream :: proc "c" (sampleRate, sampleSize: u32, channels: u32) -> AudioStream ---
     

    Load audio stream (to stream raw audio pcm data)

    LoadAutomationEventList ¶

    LoadAutomationEventList :: proc "c" (fileName: cstring) -> AutomationEventList ---
     

    Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS

    LoadCodepoints ¶

    LoadCodepoints :: proc "c" (text: rawptr, count: ^i32) -> [^]rune ---
     

    Load all codepoints from a UTF-8 text string, codepoints count returned by parameter

    LoadDirectoryFiles ¶

    LoadDirectoryFiles :: proc "c" (dirPath: cstring) -> FilePathList ---
     

    Load directory filepaths

    LoadDirectoryFilesEx ¶

    LoadDirectoryFilesEx :: proc "c" (basePath: cstring, filter: cstring, scanSubdirs: bool) -> FilePathList ---
     

    Load directory filepaths with extension filtering and recursive directory scan

    LoadDroppedFiles ¶

    LoadDroppedFiles :: proc "c" () -> FilePathList ---
     

    Load dropped filepaths

    LoadFileData ¶

    LoadFileData :: proc "c" (fileName: cstring, dataSize: ^i32) -> [^]u8 ---
     

    Load file data as byte array (read)

    LoadFileText ¶

    LoadFileText :: proc "c" (fileName: cstring) -> [^]u8 ---
     

    Load text data from file (read), returns a '\0' terminated string

    LoadFont ¶

    LoadFont :: proc "c" (fileName: cstring) -> Font ---
     

    Load font from file into GPU memory (VRAM)

    LoadFontData ¶

    LoadFontData :: proc "c" (
    	fileData:       rawptr, 
    	dataSize:       i32, 
    	fontSize:       i32, 
    	codepoints:     [^]rune, 
    	codepointCount: i32, 
    	type:           FontType, 
    ) -> [^]GlyphInfo ---
     

    Load font data for further use

    LoadFontEx ¶

    LoadFontEx :: proc "c" (fileName: cstring, fontSize: i32, codepoints: [^]rune, codepointCount: i32) -> Font ---
     

    Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set

    LoadFontFromImage ¶

    LoadFontFromImage :: proc "c" (image: Image, key: Color, firstChar: rune) -> Font ---
     

    Load font from Image (XNA style)

    LoadFontFromMemory ¶

    LoadFontFromMemory :: proc "c" (
    	fileType:       cstring, 
    	fileData:       rawptr, 
    	dataSize:       i32, 
    	fontSize:       i32, 
    	codepoints:     [^]rune, 
    	codepointCount: i32, 
    ) -> Font ---
     

    Load font from memory buffer, fileType refers to extension: i.e. '.ttf'

    LoadImage ¶

    LoadImage :: proc "c" (fileName: cstring) -> Image ---
     

    Load image from file into CPU memory (RAM)

    LoadImageAnim ¶

    LoadImageAnim :: proc "c" (fileName: cstring, frames: [^]i32) -> Image ---
     

    Load image sequence from file (frames appended to image.data)

    LoadImageColors ¶

    LoadImageColors :: proc "c" (image: Image) -> [^]Color ---
     

    Load color data from image as a Color array (RGBA - 32bit)

    LoadImageFromMemory ¶

    LoadImageFromMemory :: proc "c" (fileType: cstring, fileData: rawptr, dataSize: i32) -> Image ---
     

    Load image from memory buffer, fileType refers to extension: i.e. '.png'

    LoadImageFromScreen ¶

    LoadImageFromScreen :: proc "c" () -> Image ---
     

    Load image from screen buffer and (screenshot)

    LoadImageFromTexture ¶

    LoadImageFromTexture :: proc "c" (texture: Texture) -> Image ---
     

    Load image from GPU texture data

    LoadImagePalette ¶

    LoadImagePalette :: proc "c" (image: Image, maxPaletteSize: i32, colorCount: ^i32) -> [^]Color ---
     

    Load colors palette from image as a Color array (RGBA - 32bit)

    LoadImageRaw ¶

    LoadImageRaw :: proc "c" (fileName: cstring, width, height: i32, format: PixelFormat, headerSize: i32) -> Image ---
     

    Load image from RAW file data

    LoadImageSvg ¶

    LoadImageSvg :: proc "c" (fileNameOrString: cstring, width, height: i32) -> Image ---
     

    Load image from SVG file data or string with specified size

    LoadMaterialDefault ¶

    LoadMaterialDefault :: proc "c" () -> Material ---
     

    Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)

    LoadMaterials ¶

    LoadMaterials :: proc "c" (fileName: cstring, materialCount: ^i32) -> [^]Material ---
     

    Load materials from model file

    LoadModel ¶

    LoadModel :: proc "c" (fileName: cstring) -> Model ---
     

    Load model from files (meshes and materials)

    LoadModelAnimations ¶

    LoadModelAnimations :: proc "c" (fileName: cstring, animCount: ^i32) -> [^]ModelAnimation ---
     

    Load model animations from file

    LoadModelFromMesh ¶

    LoadModelFromMesh :: proc "c" (mesh: Mesh) -> Model ---
     

    Load model from generated mesh (default material)

    LoadMusicStream ¶

    LoadMusicStream :: proc "c" (fileName: cstring) -> Music ---
     

    Load music stream from file

    LoadMusicStreamFromMemory ¶

    LoadMusicStreamFromMemory :: proc "c" (fileType: cstring, data: rawptr, dataSize: i32) -> Music ---
     

    Load music stream from data

    LoadRandomSequence ¶

    LoadRandomSequence :: proc "c" (count: u32, min, max: i32) ---
     

    Load random values sequence, no values repeated

    LoadRenderTexture ¶

    LoadRenderTexture :: proc "c" (width, height: i32) -> RenderTexture ---
     

    Load texture for rendering (framebuffer)

    LoadShader ¶

    LoadShader :: proc "c" (vsFileName, fsFileName: cstring) -> Shader ---
     

    Load shader from files and bind default locations

    LoadShaderFromMemory ¶

    LoadShaderFromMemory :: proc "c" (vsCode, fsCode: cstring) -> Shader ---
     

    Load shader from code strings and bind default locations

    LoadSound ¶

    LoadSound :: proc "c" (fileName: cstring) -> Sound ---
     

    Load sound from file

    LoadSoundAlias ¶

    LoadSoundAlias :: proc "c" (source: Sound) -> Sound ---
     

    Create a new sound that shares the same sample data as the source sound, does not own the sound data

    LoadSoundFromWave ¶

    LoadSoundFromWave :: proc "c" (wave: Wave) -> Sound ---
     

    Load sound from wave data

    LoadTexture ¶

    LoadTexture :: proc "c" (fileName: cstring) -> Texture ---
     

    Load texture from file into GPU memory (VRAM)

    LoadTextureCubemap ¶

    LoadTextureCubemap :: proc "c" (image: Image, layout: CubemapLayout) -> Texture ---
     

    Load cubemap from image, multiple image cubemap layouts supported

    LoadTextureFromImage ¶

    LoadTextureFromImage :: proc "c" (image: Image) -> Texture ---
     

    Load texture from image data

    LoadUTF8 ¶

    LoadUTF8 :: proc "c" (codepoints: [^]rune, length: i32) -> [^]u8 ---
     

    Load UTF-8 text encoded from codepoints array

    LoadVrStereoConfig ¶

    LoadVrStereoConfig :: proc "c" (device: VrDeviceInfo) -> VrStereoConfig ---
     

    Load VR stereo config for VR simulator device parameters

    LoadWave ¶

    LoadWave :: proc "c" (fileName: cstring) -> Wave ---
     

    Load wave data from file

    LoadWaveFromMemory ¶

    LoadWaveFromMemory :: proc "c" (fileType: cstring, fileData: rawptr, dataSize: i32) -> Wave ---
     

    Load wave from memory buffer, fileType refers to extension: i.e. '.wav'

    LoadWaveSamples ¶

    LoadWaveSamples :: proc "c" (wave: Wave) -> [^]f32 ---
     

    Load samples data from wave as a 32bit float data array

    MatrixAdd ¶

    MatrixAdd :: proc "c" (left, right: matrix[4, 4]f32) -> matrix[4, 4]f32 {…}
     

    Add two matrices

    MatrixDeterminant ¶

    MatrixDeterminant :: proc "c" (mat: matrix[4, 4]f32) -> f32 {…}
     

    Compute matrix determinant

    MatrixIdentity ¶

    MatrixIdentity :: proc "c" () -> matrix[4, 4]f32 {…}
     

    Get identity matrix

    MatrixInvert ¶

    MatrixInvert :: proc "c" (mat: matrix[4, 4]f32) -> matrix[4, 4]f32 {…}
     

    Invert provided matrix

    MatrixLookAt ¶

    MatrixLookAt :: proc "c" (eye, target, up: [3]f32) -> matrix[4, 4]f32 {…}
     

    Get camera look-at matrix (view matrix)

    MatrixMultiply ¶

    MatrixMultiply :: proc "c" (left, right: matrix[4, 4]f32) -> matrix[4, 4]f32 {…}
     

    Get two matrix multiplication NOTE: When multiplying matrices... the order matters!

    MatrixOrtho ¶

    MatrixOrtho :: proc "c" (
    	left, right, bottom, top, near, 
    	far:                            f32, 
    ) -> matrix[4, 4]f32 {…}
     

    Get orthographic projection matrix

    MatrixPerspective ¶

    MatrixPerspective :: proc "c" (fovY, aspect, nearPlane, farPlane: f32) -> matrix[4, 4]f32 {…}
     

    Get perspective projection matrix NOTE: Fovy angle must be provided in radians

    MatrixRotate ¶

    MatrixRotate :: proc "c" (axis: [3]f32, angle: f32) -> matrix[4, 4]f32 {…}
     

    Create rotation matrix from axis and angle NOTE: Angle should be provided in radians

    MatrixRotateX ¶

    MatrixRotateX :: proc "c" (angle: f32) -> matrix[4, 4]f32 {…}
     

    Get x-rotation matrix NOTE: Angle must be provided in radians

    MatrixRotateXYZ ¶

    MatrixRotateXYZ :: proc "c" (angle: [3]f32) -> matrix[4, 4]f32 {…}
     

    Get xyz-rotation matrix NOTE: Angle must be provided in radians

    MatrixRotateY ¶

    MatrixRotateY :: proc "c" (angle: f32) -> matrix[4, 4]f32 {…}
     

    Get y-rotation matrix NOTE: Angle must be provided in radians

    MatrixRotateZ ¶

    MatrixRotateZ :: proc "c" (angle: f32) -> matrix[4, 4]f32 {…}
     

    Get z-rotation matrix NOTE: Angle must be provided in radians

    MatrixRotateZYX ¶

    MatrixRotateZYX :: proc "c" (angle: [3]f32) -> matrix[4, 4]f32 {…}
     

    Get zyx-rotation matrix NOTE: Angle must be provided in radians

    MatrixScale ¶

    MatrixScale :: proc "c" (x, y, z: f32) -> matrix[4, 4]f32 {…}
     

    Get scaling matrix

    MatrixSubtract ¶

    MatrixSubtract :: proc "c" (left, right: matrix[4, 4]f32) -> matrix[4, 4]f32 {…}
     

    Subtract two matrices (left - right)

    MatrixToFloatV ¶

    MatrixToFloatV :: proc "c" (mat: matrix[4, 4]f32) -> [16]f32 {…}
     

    Get float array of matrix data

    MatrixTrace ¶

    MatrixTrace :: proc "c" (mat: matrix[4, 4]f32) -> f32 {…}
     

    Get the trace of the matrix (sum of the values along the diagonal)

    MatrixTranslate ¶

    MatrixTranslate :: proc "c" (x, y, z: f32) -> matrix[4, 4]f32 {…}
     

    Get translation matrix

    MatrixTranspose ¶

    MatrixTranspose :: proc "c" (mat: matrix[4, 4]f32) -> matrix[4, 4]f32 {…}
     

    Transposes provided matrix

    MaximizeWindow ¶

    MaximizeWindow :: proc "c" () ---
     

    Set window state: maximized, if resizable (only PLATFORM_DESKTOP)

    MeasureText ¶

    MeasureText :: proc "c" (text: cstring, fontSize: i32) -> i32 ---
     

    Measure string width for default font

    MeasureTextEx ¶

    MeasureTextEx :: proc "c" (font: Font, text: cstring, fontSize: f32, spacing: f32) -> [2]f32 ---
     

    Measure string size for Font

    MemAlloc ¶

    MemAlloc :: proc "c" (size: u32) -> rawptr ---
     

    Internal memory allocator

    MemAllocator ¶

    MemAllocator :: proc "contextless" () -> runtime.Allocator {…}

    MemAllocatorProc ¶

    MemAllocatorProc :: proc(
    	allocator_data:  rawptr, 
    	mode:            runtime.Allocator_Mode, 
    	size, alignment: int, 
    	old_memory:      rawptr, 
    	old_size:        int, 
    	location := #caller_location, 
    ) -> (data: []u8, err: runtime.Allocator_Error) {…}

    MemFree ¶

    MemFree :: proc "c" (ptr: rawptr) ---
     

    Internal memory free

    MemRealloc ¶

    MemRealloc :: proc "c" (ptr: rawptr, size: u32) -> rawptr ---
     

    Internal memory reallocator

    MinimizeWindow ¶

    MinimizeWindow :: proc "c" () ---
     

    Set window state: minimized, if resizable (only PLATFORM_DESKTOP)

    Normalize ¶

    Normalize :: proc "c" (value: f32, start, end: f32) -> f32 {…}
     

    Normalize input value within input range

    OpenURL ¶

    OpenURL :: proc "c" (url: cstring) ---
     

    Open URL with default system browser (if available)

    PauseAudioStream ¶

    PauseAudioStream :: proc "c" (stream: AudioStream) ---
     

    Pause audio stream

    PauseMusicStream ¶

    PauseMusicStream :: proc "c" (music: Music) ---
     

    Pause music playing

    PauseSound ¶

    PauseSound :: proc "c" (sound: Sound) ---
     

    Pause a sound

    PlayAudioStream ¶

    PlayAudioStream :: proc "c" (stream: AudioStream) ---
     

    Play audio stream

    PlayAutomationEvent ¶

    PlayAutomationEvent :: proc "c" (event: AutomationEvent) ---
     

    Play a recorded automation event

    PlayMusicStream ¶

    PlayMusicStream :: proc "c" (music: Music) ---
     

    Start music playing

    PlaySound ¶

    PlaySound :: proc "c" (sound: Sound) ---
     

    Play a sound

    PollInputEvents ¶

    PollInputEvents :: proc "c" () ---
     

    Register all input events

    QuaternionAdd ¶

    QuaternionAdd :: proc "c" (q1, q2: quaternion128) -> quaternion128 {…}
     

    Add two quaternions

    QuaternionAddValue ¶

    QuaternionAddValue :: proc "c" (q: quaternion128, add: f32) -> quaternion128 {…}
     

    Add quaternion and float value

    QuaternionDivide ¶

    QuaternionDivide :: proc "c" (q1, q2: quaternion128) -> quaternion128 {…}
     

    Divide two quaternions

    QuaternionEquals ¶

    QuaternionEquals :: proc "c" (p, q: quaternion128) -> bool {…}
     

    Check whether two given quaternions are almost equal

    QuaternionFromAxisAngle ¶

    QuaternionFromAxisAngle :: proc "c" (axis: [3]f32, angle: f32) -> quaternion128 {…}
     

    Get rotation quaternion for an angle and axis NOTE: Angle must be provided in radians

    QuaternionFromEuler ¶

    QuaternionFromEuler :: proc "c" (pitch, yaw, roll: f32) -> quaternion128 {…}
     

    Get the quaternion equivalent to Euler angles NOTE: Rotation order is ZYX

    QuaternionFromMatrix ¶

    QuaternionFromMatrix :: proc "c" (mat: matrix[4, 4]f32) -> quaternion128 {…}
     

    Get a quaternion for a given rotation matrix

    QuaternionFromVector3ToVector3 ¶

    QuaternionFromVector3ToVector3 :: proc "c" (from, to: [3]f32) -> quaternion128 {…}
     

    Calculate quaternion based on the rotation from one vector to another

    QuaternionIdentity ¶

    QuaternionIdentity :: proc "c" () -> quaternion128 {…}
     

    Get identity quaternion

    QuaternionInvert ¶

    QuaternionInvert :: proc "c" (q: quaternion128) -> quaternion128 {…}
     

    Invert provided quaternion

    QuaternionLength ¶

    QuaternionLength :: proc "c" (q: quaternion128) -> f32 {…}
     

    Computes the length of a quaternion

    QuaternionLerp ¶

    QuaternionLerp :: proc "c" (q1, q2: quaternion128, amount: f32) -> (q3: quaternion128) {…}
     

    Calculate linear interpolation between two quaternions

    QuaternionMultiply ¶

    QuaternionMultiply :: proc "c" (q1, q2: quaternion128) -> quaternion128 {…}
     

    Calculate two quaternion multiplication

    QuaternionNlerp ¶

    QuaternionNlerp :: proc "c" (q1, q2: quaternion128, amount: f32) -> quaternion128 {…}
     

    Calculate slerp-optimized interpolation between two quaternions

    QuaternionNormalize ¶

    QuaternionNormalize :: proc "c" (q: quaternion128) -> quaternion128 {…}
     

    Normalize provided quaternion

    QuaternionScale ¶

    QuaternionScale :: proc "c" (q: quaternion128, mul: f32) -> quaternion128 {…}
     

    Scale quaternion by float value

    QuaternionSlerp ¶

    QuaternionSlerp :: proc "c" (q1, q2: quaternion128, amount: f32) -> quaternion128 {…}
     

    Calculates spherical linear interpolation between two quaternions

    QuaternionSubtract ¶

    QuaternionSubtract :: proc "c" (q1, q2: quaternion128) -> quaternion128 {…}
     

    Subtract two quaternions

    QuaternionSubtractValue ¶

    QuaternionSubtractValue :: proc "c" (q: quaternion128, sub: f32) -> quaternion128 {…}
     

    Subtract quaternion and float value

    QuaternionToAxisAngle ¶

    QuaternionToAxisAngle :: proc "c" (q: quaternion128) -> (outAxis: [3]f32, outAngle: f32) {…}
     

    Get the rotation angle and axis for a given quaternion

    QuaternionToEuler ¶

    QuaternionToEuler :: proc "c" (q: quaternion128) -> [3]f32 {…}
     

    Get the Euler angles equivalent to quaternion (roll, pitch, yaw) NOTE: Angles are returned in a Vector3 struct in radians

    QuaternionToMatrix ¶

    QuaternionToMatrix :: proc "c" (q: quaternion128) -> matrix[4, 4]f32 {…}
     

    Get a matrix for a given quaternion

    QuaternionTransform ¶

    QuaternionTransform :: proc "c" (q: quaternion128, mat: matrix[4, 4]f32) -> quaternion128 {…}
     

    Transform a quaternion given a transformation matrix

    Remap ¶

    Remap :: proc "c" (value: f32, inputStart, inputEnd: f32, outputStart, outputEnd: f32) -> f32 {…}
     

    Remap input value within input range to output range

    RestoreWindow ¶

    RestoreWindow :: proc "c" () ---
     

    Set window state: not minimized/maximized (only PLATFORM_DESKTOP)

    ResumeAudioStream ¶

    ResumeAudioStream :: proc "c" (stream: AudioStream) ---
     

    Resume audio stream

    ResumeMusicStream ¶

    ResumeMusicStream :: proc "c" (music: Music) ---
     

    Resume playing paused music

    ResumeSound ¶

    ResumeSound :: proc "c" (sound: Sound) ---
     

    Resume a paused sound

    SaveFileData ¶

    SaveFileData :: proc "c" (fileName: cstring, data: rawptr, dataSize: i32) -> bool ---
     

    Save data to file from byte array (write), returns true on success

    SaveFileText ¶

    SaveFileText :: proc "c" (fileName: cstring, text: [^]u8) -> bool ---
     

    Save text data to file (write), string must be '\0' terminated, returns true on success

    SeekMusicStream ¶

    SeekMusicStream :: proc "c" (music: Music, position: f32) ---
     

    Seek music to a position (in seconds)

    SetAudioStreamBufferSizeDefault ¶

    SetAudioStreamBufferSizeDefault :: proc "c" (size: i32) ---
     

    Default size for new audio streams

    SetAudioStreamCallback ¶

    SetAudioStreamCallback :: proc "c" (stream: AudioStream, callback: AudioCallback) ---
     

    Audio thread callback to request new data

    SetAudioStreamPan ¶

    SetAudioStreamPan :: proc "c" (stream: AudioStream, pan: f32) ---
     

    Set pan for audio stream (0.5 is centered)

    SetAudioStreamPitch ¶

    SetAudioStreamPitch :: proc "c" (stream: AudioStream, pitch: f32) ---
     

    Set pitch for audio stream (1.0 is base level)

    SetAudioStreamVolume ¶

    SetAudioStreamVolume :: proc "c" (stream: AudioStream, volume: f32) ---
     

    Set volume for audio stream (1.0 is max level)

    SetAutomationEventBaseFrame ¶

    SetAutomationEventBaseFrame :: proc "c" (frame: i32) ---
     

    Set automation event internal base frame to start recording

    SetAutomationEventList ¶

    SetAutomationEventList :: proc "c" (list: ^AutomationEventList) ---
     

    Set automation event list to record to

    SetClipboardText ¶

    SetClipboardText :: proc "c" (text: cstring) ---
     

    Set clipboard text content

    SetConfigFlags ¶

    SetConfigFlags :: proc "c" (flags: ConfigFlags) ---
     

    Setup init configuration flags (view FLAGS). NOTE: This function is expected to be called before window creation

    SetExitKey ¶

    SetExitKey :: proc "c" (key: KeyboardKey) ---
     

    Set a custom key to exit program (default is ESC)

    SetGamepadMappings ¶

    SetGamepadMappings :: proc "c" (mappings: cstring) -> i32 ---
     

    Set internal gamepad mappings (SDL_GameControllerDB)

    SetGesturesEnabled ¶

    SetGesturesEnabled :: proc "c" (flags: Gestures) ---
     

    Enable a set of gestures using flags

    SetLoadFileDataCallback ¶

    SetLoadFileDataCallback :: proc "c" (callback: LoadFileDataCallback) ---
     

    Set custom file binary data loader

    SetLoadFileTextCallback ¶

    SetLoadFileTextCallback :: proc "c" (callback: LoadFileTextCallback) ---
     

    Set custom file text data loader

    SetMasterVolume ¶

    SetMasterVolume :: proc "c" (volume: f32) ---
     

    Set master volume (listener)

    SetMaterialTexture ¶

    SetMaterialTexture :: proc "c" (material: ^Material, mapType: MaterialMapIndex, texture: Texture) ---
     

    Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)

    SetModelMeshMaterial ¶

    SetModelMeshMaterial :: proc "c" (model: ^Model, meshId: i32, materialId: i32) ---
     

    Set material for a mesh

    SetMouseCursor ¶

    SetMouseCursor :: proc "c" (cursor: MouseCursor) ---
     

    Set mouse cursor

    SetMouseOffset ¶

    SetMouseOffset :: proc "c" (offsetX, offsetY: i32) ---
     

    Set mouse offset

    SetMousePosition ¶

    SetMousePosition :: proc "c" (x, y: i32) ---
     

    Set mouse position XY

    SetMouseScale ¶

    SetMouseScale :: proc "c" (scaleX, scaleY: f32) ---
     

    Set mouse scaling

    SetMusicPan ¶

    SetMusicPan :: proc "c" (music: Music, pan: f32) ---
     

    Set pan for a music (0.5 is center)

    SetMusicPitch ¶

    SetMusicPitch :: proc "c" (music: Music, pitch: f32) ---
     

    Set pitch for a music (1.0 is base level)

    SetMusicVolume ¶

    SetMusicVolume :: proc "c" (music: Music, volume: f32) ---
     

    Set volume for music (1.0 is max level)

    SetPixelColor ¶

    SetPixelColor :: proc "c" (dstPtr: rawptr, color: Color, format: PixelFormat) ---
     

    Set color formatted into destination pixel pointer

    SetRandomSeed ¶

    SetRandomSeed :: proc "c" (seed: u32) ---
     

    Set the seed for the random number generator

    SetSaveFileDataCallback ¶

    SetSaveFileDataCallback :: proc "c" (callback: SaveFileDataCallback) ---
     

    Set custom file binary data saver

    SetSaveFileTextCallback ¶

    SetSaveFileTextCallback :: proc "c" (callback: SaveFileTextCallback) ---
     

    Set custom file text data saver

    SetShaderValue ¶

    SetShaderValue :: proc "c" (shader: Shader, locIndex: ShaderLocationIndex, value: rawptr, uniformType: ShaderUniformDataType) ---
     

    Set shader uniform value

    SetShaderValueMatrix ¶

    SetShaderValueMatrix :: proc "c" (shader: Shader, locIndex: ShaderLocationIndex, mat: matrix[4, 4]f32) ---
     

    Set shader uniform value (matrix 4x4)

    SetShaderValueTexture ¶

    SetShaderValueTexture :: proc "c" (shader: Shader, locIndex: ShaderLocationIndex, texture: Texture) ---
     

    Set shader uniform value for texture (sampler2d)

    SetShaderValueV ¶

    SetShaderValueV :: proc "c" (shader: Shader, locIndex: ShaderLocationIndex, value: rawptr, uniformType: ShaderUniformDataType, count: i32) ---
     

    Set shader uniform value vector

    SetShapesTexture ¶

    SetShapesTexture :: proc "c" (texture: Texture, source: Rectangle) ---

    SetSoundPan ¶

    SetSoundPan :: proc "c" (sound: Sound, pan: f32) ---
     

    Set pan for a sound (0.5 is center)

    SetSoundPitch ¶

    SetSoundPitch :: proc "c" (sound: Sound, pitch: f32) ---
     

    Set pitch for a sound (1.0 is base level)

    SetSoundVolume ¶

    SetSoundVolume :: proc "c" (sound: Sound, volume: f32) ---
     

    Set volume for a sound (1.0 is max level)

    SetTargetFPS ¶

    SetTargetFPS :: proc "c" (fps: i32) ---
     

    Set target FPS (maximum)

    SetTextLineSpacing ¶

    SetTextLineSpacing :: proc "c" (spacing: i32) ---
     

    Set vertical line spacing when drawing with line-breaks

    SetTextureFilter ¶

    SetTextureFilter :: proc "c" (texture: Texture, filter: TextureFilter) ---
     

    Set texture scaling filter mode

    SetTextureWrap ¶

    SetTextureWrap :: proc "c" (texture: Texture, wrap: TextureWrap) ---
     

    Set texture wrapping mode

    SetTraceLogCallback ¶

    SetTraceLogCallback :: proc "c" (callback: TraceLogCallback) ---
     

    Set custom trace log

    SetTraceLogLevel ¶

    SetTraceLogLevel :: proc "c" (logLevel: TraceLogLevel) ---
     

    Set the current threshold (minimum) log level

    SetWindowFocused ¶

    SetWindowFocused :: proc "c" () ---
     

    Set window focused (only PLATFORM_DESKTOP)

    SetWindowIcon ¶

    SetWindowIcon :: proc "c" (image: Image) ---
     

    Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)

    SetWindowIcons ¶

    SetWindowIcons :: proc "c" (images: [^]Image, count: i32) ---
     

    Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)

    SetWindowMaxSize ¶

    SetWindowMaxSize :: proc "c" (width, height: i32) ---
     

    Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE)

    SetWindowMinSize ¶

    SetWindowMinSize :: proc "c" (width, height: i32) ---
     

    Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)

    SetWindowMonitor ¶

    SetWindowMonitor :: proc "c" (monitor: i32) ---
     

    Set monitor for the current window

    SetWindowOpacity ¶

    SetWindowOpacity :: proc "c" (opacity: f32) ---
     

    Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)

    SetWindowPosition ¶

    SetWindowPosition :: proc "c" (x, y: i32) ---
     

    Set window position on screen (only PLATFORM_DESKTOP)

    SetWindowSize ¶

    SetWindowSize :: proc "c" (width, height: i32) ---
     

    Set window dimensions

    SetWindowState ¶

    SetWindowState :: proc "c" (flags: ConfigFlags) ---
     

    Set window configuration state using flags (only PLATFORM_DESKTOP)

    SetWindowTitle ¶

    SetWindowTitle :: proc "c" (title: cstring) ---
     

    Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)

    ShowCursor ¶

    ShowCursor :: proc "c" () ---
     

    Shows cursor

    StartAutomationEventRecording ¶

    StartAutomationEventRecording :: proc "c" () ---
     

    Start recording automation events (AutomationEventList must be set)

    StopAudioStream ¶

    StopAudioStream :: proc "c" (stream: AudioStream) ---
     

    Stop audio stream

    StopAutomationEventRecording ¶

    StopAutomationEventRecording :: proc "c" () ---
     

    Stop recording automation events

    StopMusicStream ¶

    StopMusicStream :: proc "c" (music: Music) ---
     

    Stop music playing

    StopSound ¶

    StopSound :: proc "c" (sound: Sound) ---
     

    Stop playing a sound

    SwapScreenBuffer ¶

    SwapScreenBuffer :: proc "c" () ---
     

    Swap back buffer with front buffer (screen drawing)

    TakeScreenshot ¶

    TakeScreenshot :: proc "c" (fileName: cstring) ---
     

    Misc. functions

    TextAppend ¶

    TextAppend :: proc "c" (text: [^]u8, append: cstring, position: ^i32) ---
     

    Append text at specific position and move cursor!

    TextCopy ¶

    TextCopy :: proc "c" (dst: [^]u8, src: cstring) -> i32 ---
     

    Copy one string to another, returns bytes copied

    TextFindIndex ¶

    TextFindIndex :: proc "c" (text, find: cstring) -> i32 ---
     

    Find first text occurrence within a string

    TextFormat ¶

    TextFormat :: proc(text: cstring, .. args: ..any) -> cstring {…}
     

    Text formatting with variables (sprintf style)

    TextFormatAlloc ¶

    TextFormatAlloc :: proc(text: cstring, .. args: ..any) -> cstring {…}
     

    Text formatting with variables (sprintf style) and allocates (must be freed with 'MemFree')

    TextInsert ¶

    TextInsert :: proc "c" (text, insert: cstring, position: i32) -> [^]u8 ---
     

    Insert text in a position (WARNING: memory must be freed!)

    TextIsEqual ¶

    TextIsEqual :: proc "c" (text1, text2: cstring) -> bool ---
     

    Check if two text string are equal

    TextJoin ¶

    TextJoin :: proc "c" (textList: [^]cstring, count: i32, delimiter: cstring) -> cstring ---
     

    Join text strings with delimiter

    TextLength ¶

    TextLength :: proc "c" (text: cstring) -> u32 ---
     

    Get text length, checks for '\0' ending

    TextReplace ¶

    TextReplace :: proc "c" (text: [^]u8, replace, by: cstring) -> [^]u8 ---
     

    Replace text string (WARNING: memory must be freed!)

    TextSplit ¶

    TextSplit :: proc "c" (text: cstring, delimiter: u8, count: ^i32) -> [^]cstring ---
     

    Split text into multiple strings

    TextSubtext ¶

    TextSubtext :: proc "c" (text: cstring, position: i32, length: i32) -> cstring ---
     

    Get a piece of a text string

    TextToInteger ¶

    TextToInteger :: proc "c" (text: cstring) -> i32 ---
     

    Get integer value from text (negative values not supported)

    TextToLower ¶

    TextToLower :: proc "c" (text: cstring) -> cstring ---
     

    Get lower case version of provided string

    TextToPascal ¶

    TextToPascal :: proc "c" (text: cstring) -> cstring ---
     

    Get Pascal case notation version of provided string

    TextToUpper ¶

    TextToUpper :: proc "c" (text: cstring) -> cstring ---
     

    Get upper case version of provided string

    ToggleBorderlessWindowed ¶

    ToggleBorderlessWindowed :: proc "c" () ---
     

    Toggle window state: borderless windowed (only PLATFORM_DESKTOP)

    ToggleFullscreen ¶

    ToggleFullscreen :: proc "c" () ---
     

    Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)

    TraceLog ¶

    TraceLog :: proc "c" (logLevel: TraceLogLevel, text: cstring, .. args: ..any) ---
     

    NOTE: Following functions implemented in module [utils] ------------------------------------------------------------------

    UnloadAudioStream ¶

    UnloadAudioStream :: proc "c" (stream: AudioStream) ---
     

    Unload audio stream and free memory

    UnloadAutomationEventList ¶

    UnloadAutomationEventList :: proc "c" (list: ^AutomationEventList) ---
     

    Unload automation events list from file

    UnloadCodepoints ¶

    UnloadCodepoints :: proc "c" (codepoints: [^]rune) ---
     

    Unload codepoints data from memory

    UnloadDirectoryFiles ¶

    UnloadDirectoryFiles :: proc "c" (files: FilePathList) ---
     

    Unload filepaths

    UnloadDroppedFiles ¶

    UnloadDroppedFiles :: proc "c" (files: FilePathList) ---
     

    Unload dropped filepaths

    UnloadFileData ¶

    UnloadFileData :: proc "c" (data: [^]u8) ---
     

    Unload file data allocated by LoadFileData()

    UnloadFileText ¶

    UnloadFileText :: proc "c" (text: [^]u8) ---
     

    Unload file text data allocated by LoadFileText()

    UnloadFont ¶

    UnloadFont :: proc "c" (font: Font) ---
     

    Unload font from GPU memory (VRAM)

    UnloadFontData ¶

    UnloadFontData :: proc "c" (glyphs: [^]GlyphInfo, glyphCount: i32) ---
     

    Unload font chars info data (RAM)

    UnloadImage ¶

    UnloadImage :: proc "c" (image: Image) ---
     

    Unload image from CPU memory (RAM)

    UnloadImageColors ¶

    UnloadImageColors :: proc "c" (colors: [^]Color) ---
     

    Unload color data loaded with LoadImageColors()

    UnloadImagePalette ¶

    UnloadImagePalette :: proc "c" (colors: [^]Color) ---
     

    Unload colors palette loaded with LoadImagePalette()

    UnloadMaterial ¶

    UnloadMaterial :: proc "c" (material: Material) ---
     

    Unload material from GPU memory (VRAM)

    UnloadMesh ¶

    UnloadMesh :: proc "c" (mesh: Mesh) ---
     

    Unload mesh data from CPU and GPU

    UnloadModel ¶

    UnloadModel :: proc "c" (model: Model) ---
     

    Unload model (including meshes) from memory (RAM and/or VRAM)

    UnloadModelAnimation ¶

    UnloadModelAnimation :: proc "c" (anim: ModelAnimation) ---
     

    Unload animation data

    UnloadModelAnimations ¶

    UnloadModelAnimations :: proc "c" (animations: [^]ModelAnimation, animCount: i32) ---
     

    Unload animation array data

    UnloadMusicStream ¶

    UnloadMusicStream :: proc "c" (music: Music) ---
     

    Unload music stream

    UnloadRandomSequence ¶

    UnloadRandomSequence :: proc "c" (sequence: ^i32) ---
     

    Unload random values sequence

    UnloadRenderTexture ¶

    UnloadRenderTexture :: proc "c" (target: RenderTexture) ---
     

    Unload render texture from GPU memory (VRAM)

    UnloadShader ¶

    UnloadShader :: proc "c" (shader: Shader) ---
     

    Unload shader from GPU memory (VRAM)

    UnloadSound ¶

    UnloadSound :: proc "c" (sound: Sound) ---
     

    Unload sound

    UnloadSoundAlias ¶

    UnloadSoundAlias :: proc "c" (alias: Sound) ---
     

    Unload a sound alias (does not deallocate sample data)

    UnloadTexture ¶

    UnloadTexture :: proc "c" (texture: Texture) ---
     

    Unload texture from GPU memory (VRAM)

    UnloadUTF8 ¶

    UnloadUTF8 :: proc "c" (text: [^]u8) ---
     

    Unload UTF-8 text encoded from codepoints array

    UnloadVrStereoConfig ¶

    UnloadVrStereoConfig :: proc "c" (config: VrStereoConfig) ---
     

    Unload VR stereo config

    UnloadWave ¶

    UnloadWave :: proc "c" (wave: Wave) ---
     

    Unload wave data

    UnloadWaveSamples ¶

    UnloadWaveSamples :: proc "c" (samples: [^]f32) ---
     

    Unload samples data loaded with LoadWaveSamples()

    UpdateAudioStream ¶

    UpdateAudioStream :: proc "c" (stream: AudioStream, data: rawptr, frameCount: i32) ---
     

    Update audio stream buffers with data

    UpdateCamera ¶

    UpdateCamera :: proc "c" (camera: ^Camera3D, mode: CameraMode) ---
     

    Set camera mode (multiple camera modes available)

    UpdateCameraPro ¶

    UpdateCameraPro :: proc "c" (camera: ^Camera3D, movement: [3]f32, rotation: [3]f32, zoom: f32) ---
     

    Update camera movement/rotation

    UpdateMeshBuffer ¶

    UpdateMeshBuffer :: proc "c" (mesh: Mesh, index: i32, data: rawptr, dataSize: i32, offset: i32) ---
     

    Update mesh vertex data in GPU for a specific buffer index

    UpdateModelAnimation ¶

    UpdateModelAnimation :: proc "c" (model: Model, anim: ModelAnimation, frame: i32) ---
     

    Update model animation pose

    UpdateMusicStream ¶

    UpdateMusicStream :: proc "c" (music: Music) ---
     

    Updates buffers for music streaming

    UpdateSound ¶

    UpdateSound :: proc "c" (sound: Sound, data: rawptr, frameCount: i32) ---
     

    Update sound buffer with new data

    UpdateTexture ¶

    UpdateTexture :: proc "c" (texture: Texture, pixels: rawptr) ---
     

    Update GPU texture with new data

    UpdateTextureRec ¶

    UpdateTextureRec :: proc "c" (texture: Texture, rec: Rectangle, pixels: rawptr) ---
     

    Update GPU texture rectangle with new data

    UploadMesh ¶

    UploadMesh :: proc "c" (mesh: ^Mesh, is_dynamic: bool) ---
     

    Upload mesh vertex data in GPU and provide VAO/VBO ids

    Vector2Add ¶

    Vector2Add :: proc "c" (v1, v2: [2]f32) -> [2]f32 {…}
     

    Add two vectors (v1 + v2)

    Vector2AddValue ¶

    Vector2AddValue :: proc "c" (v: [2]f32, value: f32) -> [2]f32 {…}
     

    Add vector and float value

    Vector2Angle ¶

    Vector2Angle :: proc "c" (v1, v2: [2]f32) -> f32 {…}
     

    Calculate angle between two vectors NOTE: Angle is calculated from origin point (0, 0)

    Vector2Clamp ¶

    Vector2Clamp :: proc "c" (v: [2]f32, min, max: [2]f32) -> [2]f32 {…}
     

    Clamp the components of the vector between min and max values specified by the given vectors

    Vector2ClampValue ¶

    Vector2ClampValue :: proc "c" (v: [2]f32, min, max: f32) -> [2]f32 {…}
     

    Clamp the magnitude of the vector between two min and max values

    Vector2Distance ¶

    Vector2Distance :: proc "c" (v1, v2: [2]f32) -> f32 {…}
     

    Calculate distance between two vectors

    Vector2DistanceSqrt ¶

    Vector2DistanceSqrt :: proc "c" (v1, v2: [2]f32) -> f32 {…}
     

    Calculate square distance between two vectors

    Vector2Divide ¶

    Vector2Divide :: proc "c" (v1, v2: [2]f32) -> [2]f32 {…}
     

    Divide vector by vector

    Vector2DotProduct ¶

    Vector2DotProduct :: proc "c" (v1, v2: [2]f32) -> f32 {…}
     

    Calculate two vectors dot product

    Vector2Equals ¶

    Vector2Equals :: proc "c" (p, q: [2]f32) -> bool {…}

    Vector2Invert ¶

    Vector2Invert :: proc "c" (v: [2]f32) -> [2]f32 {…}
     

    Invert the given vector

    Vector2Length ¶

    Vector2Length :: proc "c" (v: [2]f32) -> f32 {…}
     

    Calculate vector length

    Vector2LengthSqr ¶

    Vector2LengthSqr :: proc "c" (v: [2]f32) -> f32 {…}
     

    Calculate vector square length

    Vector2Lerp ¶

    Vector2Lerp :: proc "c" (v1, v2: [2]f32, amount: f32) -> [2]f32 {…}
     

    Calculate linear interpolation between two vectors

    Vector2LineAngle ¶

    Vector2LineAngle :: proc "c" (start, end: [2]f32) -> f32 {…}
     

    Calculate angle defined by a two vectors line NOTE: Parameters need to be normalized Current implementation should be aligned with glm::angle

    Vector2MoveTowards ¶

    Vector2MoveTowards :: proc "c" (v, target: [2]f32, maxDistance: f32) -> [2]f32 {…}
     

    Move Vector towards target

    Vector2Multiply ¶

    Vector2Multiply :: proc "c" (v1, v2: [2]f32) -> [2]f32 {…}
     

    Multiply vector by vector

    Vector2Negate ¶

    Vector2Negate :: proc "c" (v: [2]f32) -> [2]f32 {…}
     

    Negate vector

    Vector2Normalize ¶

    Vector2Normalize :: proc "c" (v: [2]f32) -> [2]f32 {…}
     

    Normalize provided vector

    Vector2One ¶

    Vector2One :: proc "c" () -> [2]f32 {…}
     

    Vector with components value 1.0

    Vector2Reflect ¶

    Vector2Reflect :: proc "c" (v, normal: [2]f32) -> [2]f32 {…}
     

    Calculate reflected vector to normal

    Vector2Rotate ¶

    Vector2Rotate :: proc "c" (v: [2]f32, angle: f32) -> [2]f32 {…}
     

    Rotate vector by angle

    Vector2Scale ¶

    Vector2Scale :: proc "c" (v: [2]f32, scale: f32) -> [2]f32 {…}
     

    Scale vector (multiply by value)

    Vector2Subtract ¶

    Vector2Subtract :: proc "c" (a, b: [2]f32) -> [2]f32 {…}
     

    Subtract two vectors (v1 - v2)

    Vector2SubtractValue ¶

    Vector2SubtractValue :: proc "c" (v: [2]f32, value: f32) -> [2]f32 {…}
     

    Subtract vector by float value

    Vector2Transform ¶

    Vector2Transform :: proc "c" (v: [2]f32, m: matrix[4, 4]f32) -> [2]f32 {…}
     

    Transforms a Vector2 by a given Matrix

    Vector2Zero ¶

    Vector2Zero :: proc "c" () -> [2]f32 {…}
     

    Vector with components value 0.0

    Vector3Add ¶

    Vector3Add :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Add two vectors (v1 + v2)

    Vector3AddValue ¶

    Vector3AddValue :: proc "c" (v: [3]f32, value: f32) -> [3]f32 {…}
     

    Add vector and float value

    Vector3Angle ¶

    Vector3Angle :: proc "c" (v1, v2: [3]f32) -> f32 {…}
     

    Calculate angle between two vectors NOTE: Angle is calculated from origin point (0, 0)

    Vector3Barycenter ¶

    Vector3Barycenter :: proc "c" (p: [3]f32, a, b, c: [3]f32) -> (result: [3]f32) {…}
     

    Compute barycenter coordinates (u, v, w) for point p with respect to triangle (a, b, c) NOTE: Assumes P is on the plane of the triangle

    Vector3Clamp ¶

    Vector3Clamp :: proc "c" (v: [3]f32, min, max: [3]f32) -> [3]f32 {…}
     

    Clamp the components of the vector between min and max values specified by the given vectors

    Vector3ClampValue ¶

    Vector3ClampValue :: proc "c" (v: [3]f32, min, max: f32) -> [3]f32 {…}
     

    Clamp the magnitude of the vector between two min and max values

    Vector3CrossProduct ¶

    Vector3CrossProduct :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Calculate two vectors dot product

    Vector3Distance ¶

    Vector3Distance :: proc "c" (v1, v2: [3]f32) -> f32 {…}
     

    Calculate distance between two vectors

    Vector3DistanceSqrt ¶

    Vector3DistanceSqrt :: proc "c" (v1, v2: [3]f32) -> f32 {…}
     

    Calculate square distance between two vectors

    Vector3Divide ¶

    Vector3Divide :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Divide vector by vector

    Vector3DotProduct ¶

    Vector3DotProduct :: proc "c" (v1, v2: [3]f32) -> f32 {…}
     

    Calculate two vectors dot product

    Vector3Equals ¶

    Vector3Equals :: proc "c" (p, q: [3]f32) -> bool {…}

    Vector3Invert ¶

    Vector3Invert :: proc "c" (v: [3]f32) -> [3]f32 {…}
     

    Invert the given vector

    Vector3Length ¶

    Vector3Length :: proc "c" (v: [3]f32) -> f32 {…}
     

    Calculate vector length

    Vector3LengthSqr ¶

    Vector3LengthSqr :: proc "c" (v: [3]f32) -> f32 {…}
     

    Calculate vector square length

    Vector3Lerp ¶

    Vector3Lerp :: proc "c" (v1, v2: [3]f32, amount: f32) -> [3]f32 {…}
     

    Calculate linear interpolation between two vectors

    Vector3LineAngle ¶

    Vector3LineAngle :: proc "c" (start, end: [3]f32) -> f32 {…}
     

    Calculate angle defined by a two vectors line NOTE: Parameters need to be normalized Current implementation should be aligned with glm::angle

    Vector3Max ¶

    Vector3Max :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}

    Vector3Min ¶

    Vector3Min :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}

    Vector3MoveTowards ¶

    Vector3MoveTowards :: proc "c" (v, target: [3]f32, maxDistance: f32) -> [3]f32 {…}
     

    Move Vector towards target

    Vector3Multiply ¶

    Vector3Multiply :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Multiply vector by vector

    Vector3Negate ¶

    Vector3Negate :: proc "c" (v: [3]f32) -> [3]f32 {…}
     

    Negate vector

    Vector3Normalize ¶

    Vector3Normalize :: proc "c" (v: [3]f32) -> [3]f32 {…}
     

    Normalize provided vector

    Vector3One ¶

    Vector3One :: proc "c" () -> [3]f32 {…}
     

    Vector with components value 1.0

    Vector3OrthoNormalize ¶

    Vector3OrthoNormalize :: proc "c" (v1, v2: ^[3]f32) {…}
     

    Orthonormalize provided vectors Makes vectors normalized and orthogonal to each other Gram-Schmidt function implementation

    Vector3Project ¶

    Vector3Project :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Calculate the projection of the vector v1 on to v2

    Vector3Reflect ¶

    Vector3Reflect :: proc "c" (v, normal: [3]f32) -> [3]f32 {…}
     

    Calculate reflected vector to normal

    Vector3Refract ¶

    Vector3Refract :: proc "c" (v, n: [3]f32, r: f32) -> [3]f32 {…}
     

    Compute the direction of a refracted ray v: normalized direction of the incoming ray n: normalized normal vector of the interface of two optical media r: ratio of the refractive index of the medium from where the ray comes to the refractive index of the medium on the other side of the surface

    Vector3Reject ¶

    Vector3Reject :: proc "c" (v1, v2: [3]f32) -> [3]f32 {…}
     

    Calculate the rejection of the vector v1 on to v2

    Vector3RotateByAxisAngle ¶

    Vector3RotateByAxisAngle :: proc "c" (v: [3]f32, axis: [3]f32, angle: f32) -> [3]f32 {…}
     

    Rotates a vector around an axis

    Vector3RotateByQuaternion ¶

    Vector3RotateByQuaternion :: proc "c" (v: [3]f32, q: quaternion128) -> [3]f32 {…}
     

    Transform a vector by quaternion rotation

    Vector3Scale ¶

    Vector3Scale :: proc "c" (v: [3]f32, scale: f32) -> [3]f32 {…}
     

    Scale vector (multiply by value)

    Vector3Subtract ¶

    Vector3Subtract :: proc "c" (a, b: [3]f32) -> [3]f32 {…}
     

    Subtract two vectors (v1 - v2)

    Vector3SubtractValue ¶

    Vector3SubtractValue :: proc "c" (v: [3]f32, value: f32) -> [3]f32 {…}
     

    Subtract vector by float value

    Vector3Transform ¶

    Vector3Transform :: proc "c" (v: [3]f32, m: matrix[4, 4]f32) -> [3]f32 {…}
     

    Transforms a Vector3 by a given Matrix

    Vector3Unproject ¶

    Vector3Unproject :: proc "c" (source: [3]f32, projection: matrix[4, 4]f32, view: matrix[4, 4]f32) -> [3]f32 {…}
     

    Projects a Vector3 from screen space into object space

    Vector3Zero ¶

    Vector3Zero :: proc "c" () -> [3]f32 {…}
     

    Vector with components value 0.0

    WaitTime ¶

    WaitTime :: proc "c" (seconds: f64) ---
     

    Wait for some time (halt program execution)

    WaveCopy ¶

    WaveCopy :: proc "c" (wave: Wave) -> Wave ---
     

    Copy a wave to a new wave

    WaveCrop ¶

    WaveCrop :: proc "c" (wave: ^Wave, initSample, finalSample: i32) ---
     

    Crop a wave to defined samples range

    WaveFormat ¶

    WaveFormat :: proc "c" (wave: ^Wave, sampleRate, sampleSize: i32, channels: i32) ---
     

    Convert wave data to desired format

    WindowShouldClose ¶

    WindowShouldClose :: proc "c" () -> bool ---
     

    Check if application should close (KEY_ESCAPE pressed or windows close icon clicked)

    Wrap ¶

    Wrap :: proc "c" (value: f32, min, max: f32) -> f32 {…}
     

    Wrap input value from min to max

    rlActiveDrawBuffers ¶

    rlActiveDrawBuffers :: proc "c" (count: i32) ---
     

    Activate multiple draw color buffers

    rlActiveTextureSlot ¶

    rlActiveTextureSlot :: proc "c" (slot: i32) ---
     

    Textures state

    rlBegin ¶

    rlBegin :: proc "c" (mode: i32) ---
     

    ------------------------------------------------------------------------------------ Functions Declaration - Vertex level operations ------------------------------------------------------------------------------------

    rlBindImageTexture ¶

    rlBindImageTexture :: proc "c" (id: u32, index: u32, format: i32, readonly: bool) ---
     

    Buffer management

    rlBindShaderBuffer ¶

    rlBindShaderBuffer :: proc "c" (id: u32, index: u32) ---
     

    Bind SSBO buffer

    rlBlitFramebuffer ¶

    rlBlitFramebuffer :: proc "c" (
    	srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, 
    	bufferMask:                                                       i32, 
    ) ---
     

    Blit active framebuffer to main framebuffer

    rlCheckErrors ¶

    rlCheckErrors :: proc "c" () ---
     

    Check and log OpenGL error codes

    rlCheckRenderBatchLimit ¶

    rlCheckRenderBatchLimit :: proc "c" (vCount: i32) -> i32 ---
     

    Check internal buffer overflow for a given number of vertex

    rlClearColor ¶

    rlClearColor :: proc "c" (r, g, b, a: u8) ---
     

    Clear color buffer with color

    rlClearScreenBuffers ¶

    rlClearScreenBuffers :: proc "c" () ---
     

    Clear used screen buffers (color and depth)

    rlColor3f ¶

    rlColor3f :: proc "c" (x, y, z: f32) ---
     

    Define one vertex (color) - 3 f32

    rlColor4f ¶

    rlColor4f :: proc "c" (x, y, z, w: f32) ---
     

    Define one vertex (color) - 4 f32

    rlColor4ub ¶

    rlColor4ub :: proc "c" (r, g, b, a: u8) ---
     

    Define one vertex (color) - 4 byte

    rlCompileShader ¶

    rlCompileShader :: proc "c" (shaderCode: cstring, type: i32) -> u32 ---
     

    Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)

    rlComputeShaderDispatch ¶

    rlComputeShaderDispatch :: proc "c" (groupX, groupY, groupZ: u32) ---
     

    Dispatch compute shader (equivalent to draw for graphics pipeline)

    rlCopyShaderBuffer ¶

    rlCopyShaderBuffer :: proc "c" (destId, srcId: u32, destOffset, srcOffset: u32, count: u32) ---
     

    Copy SSBO data between buffers

    rlCubemapParameters ¶

    rlCubemapParameters :: proc "c" (id: i32, param: i32, value: i32) ---
     

    Set cubemap parameters (filter, wrap)

    rlDisableBackfaceCulling ¶

    rlDisableBackfaceCulling :: proc "c" () ---
     

    Disable backface culling

    rlDisableColorBlend ¶

    rlDisableColorBlend :: proc "c" () ---
     

    General render state

    rlDisableDepthMask ¶

    rlDisableDepthMask :: proc "c" () ---
     

    Disable depth write

    rlDisableDepthTest ¶

    rlDisableDepthTest :: proc "c" () ---
     

    Disable depth test

    rlDisableFramebuffer ¶

    rlDisableFramebuffer :: proc "c" () ---
     

    Disable render texture (fbo), return to default framebuffer

    rlDisableScissorTest ¶

    rlDisableScissorTest :: proc "c" () ---
     

    Disable scissor test

    rlDisableShader ¶

    rlDisableShader :: proc "c" () ---
     

    Disable shader program

    rlDisableSmoothLines ¶

    rlDisableSmoothLines :: proc "c" () ---
     

    Disable line aliasing

    rlDisableStereoRender ¶

    rlDisableStereoRender :: proc "c" () ---
     

    Disable stereo rendering

    rlDisableTexture ¶

    rlDisableTexture :: proc "c" () ---
     

    Disable texture

    rlDisableTextureCubemap ¶

    rlDisableTextureCubemap :: proc "c" () ---
     

    Disable texture cubemap

    rlDisableVertexArray ¶

    rlDisableVertexArray :: proc "c" () ---
     

    Disable vertex array (VAO, if supported)

    rlDisableVertexAttribute ¶

    rlDisableVertexAttribute :: proc "c" (index: u32) ---
     

    Disable vertex attribute index

    rlDisableVertexBuffer ¶

    rlDisableVertexBuffer :: proc "c" () ---
     

    Disable vertex buffer (VBO)

    rlDisableVertexBufferElement ¶

    rlDisableVertexBufferElement :: proc "c" () ---
     

    Disable vertex buffer element (VBO element)

    rlDisableWireMode ¶

    rlDisableWireMode :: proc "c" () ---
     

    Disable wire and point modes

    rlDrawRenderBatch ¶

    rlDrawRenderBatch :: proc "c" (batch: ^RenderBatch) ---
     

    Draw render batch data (Update->Draw->Reset)

    rlDrawRenderBatchActive ¶

    rlDrawRenderBatchActive :: proc "c" () ---
     

    Update and draw internal render batch

    rlDrawVertexArray ¶

    rlDrawVertexArray :: proc "c" (offset: i32, count: i32) ---

    rlDrawVertexArrayElements ¶

    rlDrawVertexArrayElements :: proc "c" (offset: i32, count: i32, buffer: rawptr) ---

    rlDrawVertexArrayElementsInstanced ¶

    rlDrawVertexArrayElementsInstanced :: proc "c" (offset: i32, count: i32, buffer: rawptr, instances: i32) ---

    rlDrawVertexArrayInstanced ¶

    rlDrawVertexArrayInstanced :: proc "c" (offset: i32, count: i32, instances: i32) ---

    rlEnableBackfaceCulling ¶

    rlEnableBackfaceCulling :: proc "c" () ---
     

    Enable backface culling

    rlEnableDepthMask ¶

    rlEnableDepthMask :: proc "c" () ---
     

    Enable depth write

    rlEnableDepthTest ¶

    rlEnableDepthTest :: proc "c" () ---
     

    Enable depth test

    rlEnableFramebuffer ¶

    rlEnableFramebuffer :: proc "c" (id: u32) ---
     

    Framebuffer state

    rlEnablePointMode ¶

    rlEnablePointMode :: proc "c" () ---
     

    Enable point mode

    rlEnableScissorTest ¶

    rlEnableScissorTest :: proc "c" () ---
     

    Enable scissor test

    rlEnableShader ¶

    rlEnableShader :: proc "c" (id: u32) ---
     

    Shader state

    rlEnableSmoothLines ¶

    rlEnableSmoothLines :: proc "c" () ---
     

    Enable line aliasing

    rlEnableStereoRender ¶

    rlEnableStereoRender :: proc "c" () ---
     

    Enable stereo rendering

    rlEnableTexture ¶

    rlEnableTexture :: proc "c" (id: u32) ---
     

    Enable texture

    rlEnableTextureCubemap ¶

    rlEnableTextureCubemap :: proc "c" (id: u32) ---
     

    Enable texture cubemap

    rlEnableVertexArray ¶

    rlEnableVertexArray :: proc "c" (vaoId: u32) -> bool ---
     

    Vertex buffers state

    rlEnableVertexAttribute ¶

    rlEnableVertexAttribute :: proc "c" (index: u32) ---
     

    Enable vertex attribute index

    rlEnableVertexBuffer ¶

    rlEnableVertexBuffer :: proc "c" (id: u32) ---
     

    Enable vertex buffer (VBO)

    rlEnableVertexBufferElement ¶

    rlEnableVertexBufferElement :: proc "c" (id: u32) ---
     

    Enable vertex buffer element (VBO element)

    rlEnableWireMode ¶

    rlEnableWireMode :: proc "c" () ---
     

    Enable wire mode

    rlEnd ¶

    rlEnd :: proc "c" () ---
     

    Finish vertex providing

    rlFramebufferAttach ¶

    rlFramebufferAttach :: proc "c" (fboId, texId: u32, attachType: i32, texType: i32, mipLevel: i32) ---
     

    Attach texture/renderbuffer to a framebuffer

    rlFramebufferComplete ¶

    rlFramebufferComplete :: proc "c" (id: u32) -> bool ---
     

    Verify framebuffer is complete

    rlFrustum ¶

    rlFrustum :: proc "c" (
    	left, right, bottom, top, znear, 
    	zfar:                            f64, 
    ) ---

    rlGenTextureMipmaps ¶

    rlGenTextureMipmaps :: proc "c" (id: u32, width, height: i32, format: i32, mipmaps: ^i32) ---
     

    Generate mipmap data for selected texture

    rlGetFramebufferHeight ¶

    rlGetFramebufferHeight :: proc "c" () -> i32 ---
     

    Get default framebuffer height

    rlGetFramebufferWidth ¶

    rlGetFramebufferWidth :: proc "c" () -> i32 ---
     

    Get default framebuffer width

    rlGetGlTextureFormats ¶

    rlGetGlTextureFormats :: proc "c" (format: i32, glInternalFormat, glFormat, glType: ^u32) ---
     

    Get OpenGL internal formats

    rlGetLineWidth ¶

    rlGetLineWidth :: proc "c" () -> f32 ---
     

    Get the line drawing width

    rlGetLocationAttrib ¶

    rlGetLocationAttrib :: proc "c" (shaderId: u32, attribName: cstring) -> i32 ---
     

    Get shader location attribute

    rlGetLocationUniform ¶

    rlGetLocationUniform :: proc "c" (shaderId: u32, uniformName: cstring) -> i32 ---
     

    Get shader location uniform

    rlGetMatrixModelview ¶

    rlGetMatrixModelview :: proc "c" () -> matrix[4, 4]f32 ---
     

    Matrix state management

    rlGetMatrixProjection ¶

    rlGetMatrixProjection :: proc "c" () -> matrix[4, 4]f32 ---
     

    Get internal projection matrix

    rlGetMatrixProjectionStereo ¶

    rlGetMatrixProjectionStereo :: proc "c" (eye: i32) -> matrix[4, 4]f32 ---
     

    Get internal projection matrix for stereo render (selected eye)

    rlGetMatrixTransform ¶

    rlGetMatrixTransform :: proc "c" () -> matrix[4, 4]f32 ---
     

    Get internal accumulated transform matrix

    rlGetMatrixViewOffsetStereo ¶

    rlGetMatrixViewOffsetStereo :: proc "c" (eye: i32) -> matrix[4, 4]f32 ---
     

    Get internal view offset matrix for stereo render (selected eye)

    rlGetPixelFormatName ¶

    rlGetPixelFormatName :: proc "c" (format: u32) -> cstring ---
     

    Get name string for pixel format

    rlGetShaderBufferSize ¶

    rlGetShaderBufferSize :: proc "c" (id: u32) -> u32 ---
     

    Get SSBO buffer size

    rlGetShaderIdDefault ¶

    rlGetShaderIdDefault :: proc "c" () -> u32 ---
     

    Get default shader id

    rlGetShaderLocsDefault ¶

    rlGetShaderLocsDefault :: proc "c" () -> [^]i32 ---
     

    Get default shader locations

    rlGetTextureIdDefault ¶

    rlGetTextureIdDefault :: proc "c" () -> u32 ---
     

    Get default texture id

    rlGetVersion ¶

    rlGetVersion :: proc "c" () -> GlVersion ---
     

    Get current OpenGL version

    rlIsStereoRenderEnabled ¶

    rlIsStereoRenderEnabled :: proc "c" () -> bool ---
     

    Check if stereo render is enabled

    rlLoadComputeShaderProgram ¶

    rlLoadComputeShaderProgram :: proc "c" (shaderId: u32) -> u32 ---
     

    Compute shader management

    rlLoadDrawCube ¶

    rlLoadDrawCube :: proc "c" () ---
     

    Quick and dirty cube/quad buffers load->draw->unload

    rlLoadDrawQuad ¶

    rlLoadDrawQuad :: proc "c" () ---
     

    Load and draw a quad

    rlLoadExtensions ¶

    rlLoadExtensions :: proc "c" (loader: rawptr) ---
     

    Load OpenGL extensions (loader function required)

    rlLoadFramebuffer ¶

    rlLoadFramebuffer :: proc "c" (width, height: i32) -> u32 ---
     

    Framebuffer management (fbo)

    rlLoadIdentity ¶

    rlLoadIdentity :: proc "c" () ---
     

    Reset current matrix to identity matrix

    rlLoadRenderBatch ¶

    rlLoadRenderBatch :: proc "c" (numBuffers, bufferElements: i32) -> RenderBatch ---
     

    Render batch management NOTE: rlgl provides a default render batch to behave like OpenGL 1.1 immediate mode but this render batch API is exposed in case of custom batches are required

    rlLoadShaderBuffer ¶

    rlLoadShaderBuffer :: proc "c" (size: u32, data: rawptr, usageHint: i32) -> u32 ---
     

    Shader buffer storage object management (ssbo)

    rlLoadShaderCode ¶

    rlLoadShaderCode :: proc "c" (vsCode, fsCode: cstring) -> u32 ---
     

    Shaders management

    rlLoadShaderProgram ¶

    rlLoadShaderProgram :: proc "c" (vShaderId, fShaderId: u32) -> u32 ---
     

    Load custom shader program

    rlLoadTexture ¶

    rlLoadTexture :: proc "c" (data: rawptr, width, height: i32, format: i32, mipmapCount: i32) -> u32 ---
     

    Textures management

    rlLoadTextureCubemap ¶

    rlLoadTextureCubemap :: proc "c" (data: rawptr, size: i32, format: i32) -> u32 ---
     

    Load texture cubemap

    rlLoadTextureDepth ¶

    rlLoadTextureDepth :: proc "c" (width, height: i32, useRenderBuffer: bool) -> u32 ---
     

    Load depth texture/renderbuffer (to be attached to fbo)

    rlLoadVertexArray ¶

    rlLoadVertexArray :: proc "c" () -> u32 ---
     

    Vertex buffers management

    rlLoadVertexBuffer ¶

    rlLoadVertexBuffer :: proc "c" (buffer: rawptr, size: i32, is_dynamic: bool) -> u32 ---
     

    Load a vertex buffer attribute

    rlLoadVertexBufferElement ¶

    rlLoadVertexBufferElement :: proc "c" (buffer: rawptr, size: i32, is_dynamic: bool) -> u32 ---
     

    Load a new attributes element buffer

    rlMatrixMode ¶

    rlMatrixMode :: proc "c" (mode: i32) ---
     

    ------------------------------------------------------------------------------------ Functions Declaration - Matrix operations ------------------------------------------------------------------------------------

    rlMultMatrixf ¶

    rlMultMatrixf :: proc "c" (matf: [^]f32) ---
     

    Multiply the current matrix by another matrix

    rlNormal3f ¶

    rlNormal3f :: proc "c" (x, y, z: f32) ---
     

    Define one vertex (normal) - 3 f32

    rlOrtho ¶

    rlOrtho :: proc "c" (
    	left, right, bottom, top, znear, 
    	zfar:                            f64, 
    ) ---

    rlPopMatrix ¶

    rlPopMatrix :: proc "c" () ---
     

    Pop lattest inserted matrix from stack

    rlPushMatrix ¶

    rlPushMatrix :: proc "c" () ---
     

    Push the current matrix to stack

    rlReadScreenPixels ¶

    rlReadScreenPixels :: proc "c" (width, height: i32) -> [^]u8 ---
     

    Read screen pixel data (color buffer)

    rlReadShaderBuffer ¶

    rlReadShaderBuffer :: proc "c" (id: u32, dest: rawptr, count: u32, offset: u32) ---
     

    Read SSBO buffer data (GPU->CPU)

    rlReadTexturePixels ¶

    rlReadTexturePixels :: proc "c" (id: u32, width, height: i32, format: i32) -> rawptr ---
     

    Read texture pixel data

    rlRotatef ¶

    rlRotatef :: proc "c" (angleDeg: f32, x, y, z: f32) ---
     

    Multiply the current matrix by a rotation matrix

    rlScalef ¶

    rlScalef :: proc "c" (x, y, z: f32) ---
     

    Multiply the current matrix by a scaling matrix

    rlScissor ¶

    rlScissor :: proc "c" (x, y, width, height: i32) ---
     

    Scissor test

    rlSetBlendFactors ¶

    rlSetBlendFactors :: proc "c" (glSrcFactor, glDstFactor, glEquation: i32) ---
     

    Set blending mode factor and equation (using OpenGL factors)

    rlSetBlendFactorsSeparate ¶

    rlSetBlendFactorsSeparate :: proc "c" (
    	glSrcRGB, glDstRGB, glSrcAlpha, glDstAlpha, glEqRGB, 
    	glEqAlpha:                                           i32, 
    ) ---
     

    Set blending mode factors and equations separately (using OpenGL factors)

    rlSetBlendMode ¶

    rlSetBlendMode :: proc "c" (mode: i32) ---
     

    Set blending mode

    rlSetCullFace ¶

    rlSetCullFace :: proc "c" (mode: CullMode) ---
     

    Set face culling mode

    rlSetFramebufferHeight ¶

    rlSetFramebufferHeight :: proc "c" (height: i32) ---
     

    Set current framebuffer height

    rlSetFramebufferWidth ¶

    rlSetFramebufferWidth :: proc "c" (width: i32) ---
     

    Set current framebuffer width

    rlSetLineWidth ¶

    rlSetLineWidth :: proc "c" (width: f32) ---
     

    Set the line drawing width

    rlSetMatrixModelview ¶

    rlSetMatrixModelview :: proc "c" (view: matrix[4, 4]f32) ---
     

    Set a custom modelview matrix (replaces internal modelview matrix)

    rlSetMatrixProjection ¶

    rlSetMatrixProjection :: proc "c" (proj: matrix[4, 4]f32) ---
     

    Set a custom projection matrix (replaces internal projection matrix)

    rlSetMatrixProjectionStereo ¶

    rlSetMatrixProjectionStereo :: proc "c" (right, left: matrix[4, 4]f32) ---
     

    Set eyes projection matrices for stereo rendering

    rlSetMatrixViewOffsetStereo ¶

    rlSetMatrixViewOffsetStereo :: proc "c" (right, left: matrix[4, 4]f32) ---
     

    Set eyes view offsets matrices for stereo rendering

    rlSetRenderBatchActive ¶

    rlSetRenderBatchActive :: proc "c" (batch: ^RenderBatch) ---
     

    Set the active render batch for rlgl (NULL for default internal)

    rlSetShader ¶

    rlSetShader :: proc "c" (id: u32, locs: [^]i32) ---
     

    Set shader currently active (id and locations)

    rlSetTexture ¶

    rlSetTexture :: proc "c" (id: u32) ---
     

    Set current texture for render batch and check buffers limits

    rlSetUniform ¶

    rlSetUniform :: proc "c" (locIndex: i32, value: rawptr, uniformType: i32, count: i32) ---
     

    Set shader value uniform

    rlSetUniformMatrix ¶

    rlSetUniformMatrix :: proc "c" (locIndex: i32, mat: matrix[4, 4]f32) ---
     

    Set shader value matrix

    rlSetUniformSampler ¶

    rlSetUniformSampler :: proc "c" (locIndex: i32, textureId: u32) ---
     

    Set shader value sampler

    rlSetVertexAttribute ¶

    rlSetVertexAttribute :: proc "c" (
    	index:      u32, 
    	compSize:   i32, 
    	type:       i32, 
    	normalized: bool, 
    	stride:     i32, 
    	pointer:    rawptr, 
    ) ---

    rlSetVertexAttributeDefault ¶

    rlSetVertexAttributeDefault :: proc "c" (locIndex: i32, value: rawptr, attribType: i32, count: i32) ---
     

    Set vertex attribute default value

    rlSetVertexAttributeDivisor ¶

    rlSetVertexAttributeDivisor :: proc "c" (index: u32, divisor: i32) ---

    rlTexCoord2f ¶

    rlTexCoord2f :: proc "c" (x, y: f32) ---
     

    Define one vertex (texture coordinate) - 2 f32

    rlTextureParameters ¶

    rlTextureParameters :: proc "c" (id: u32, param: i32, value: i32) ---
     

    Set texture parameters (filter, wrap)

    rlTranslatef ¶

    rlTranslatef :: proc "c" (x, y, z: f32) ---
     

    Multiply the current matrix by a translation matrix

    rlUnloadFramebuffer ¶

    rlUnloadFramebuffer :: proc "c" (id: u32) ---
     

    Delete framebuffer from GPU

    rlUnloadRenderBatch ¶

    rlUnloadRenderBatch :: proc "c" (batch: RenderBatch) ---
     

    Unload render batch system

    rlUnloadShaderBuffer ¶

    rlUnloadShaderBuffer :: proc "c" (ssboId: u32) ---
     

    Unload shader storage buffer object (SSBO)

    rlUnloadShaderProgram ¶

    rlUnloadShaderProgram :: proc "c" (id: u32) ---
     

    Unload shader program

    rlUnloadTexture ¶

    rlUnloadTexture :: proc "c" (id: u32) ---
     

    Unload texture from GPU memory

    rlUnloadVertexArray ¶

    rlUnloadVertexArray :: proc "c" (vaoId: u32) ---

    rlUnloadVertexBuffer ¶

    rlUnloadVertexBuffer :: proc "c" (vboId: u32) ---

    rlUpdateShaderBuffer ¶

    rlUpdateShaderBuffer :: proc "c" (id: u32, data: rawptr, dataSize: u32, offset: u32) ---
     

    Update SSBO buffer data

    rlUpdateTexture ¶

    rlUpdateTexture :: proc "c" (
    	id:               u32, 
    	offsetX, offsetY: i32, 
    	width, height:    i32, 
    	format:           i32, 
    	data:             rawptr, 
    ) ---
     

    Update GPU texture with new data

    rlUpdateVertexBuffer ¶

    rlUpdateVertexBuffer :: proc "c" (bufferId: u32, data: rawptr, dataSize: i32, offset: i32) ---
     

    Update GPU buffer with new data

    rlUpdateVertexBufferElements ¶

    rlUpdateVertexBufferElements :: proc "c" (id: u32, data: rawptr, dataSize: i32, offset: i32) ---
     

    Update vertex buffer elements with new data

    rlVertex2f ¶

    rlVertex2f :: proc "c" (x, y: f32) ---
     

    Define one vertex (position) - 2 f32

    rlVertex2i ¶

    rlVertex2i :: proc "c" (x, y: i32) ---
     

    Define one vertex (position) - 2 int

    rlVertex3f ¶

    rlVertex3f :: proc "c" (x, y, z: f32) ---
     

    Define one vertex (position) - 3 f32

    rlViewport ¶

    rlViewport :: proc "c" (x, y, width, height: i32) ---
     

    Set the viewport area

    rlglClose ¶

    rlglClose :: proc "c" () ---
     

    De-initialize rlgl (buffers, shaders, textures)

    rlglInit ¶

    rlglInit :: proc "c" (width, height: i32) ---
     

    ------------------------------------------------------------------------------------ Functions Declaration - rlgl functionality ------------------------------------------------------------------------------------ rlgl initialization functions

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2024-04 (vendor "odin") Windows_amd64 @ 2024-04-19 21:09:20.119365300 +0000 UTC