mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 23:58:50 +00:00
Updated bindings and libs for Raylib 5.0
This commit is contained in:
Vendored
+1
-1
@@ -39,7 +39,7 @@ features
|
|||||||
- **NO external dependencies**, all required libraries are [bundled into raylib](https://github.com/raysan5/raylib/tree/master/src/external)
|
- **NO external dependencies**, all required libraries are [bundled into raylib](https://github.com/raysan5/raylib/tree/master/src/external)
|
||||||
- Multiple platforms supported: **Windows, Linux, MacOS, RPI, Android, HTML5... and more!**
|
- Multiple platforms supported: **Windows, Linux, MacOS, RPI, Android, HTML5... and more!**
|
||||||
- Written in plain C code (C99) using PascalCase/camelCase notation
|
- Written in plain C code (C99) using PascalCase/camelCase notation
|
||||||
- Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3 or ES 2.0**)
|
- Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3, ES 2.0 or ES 3.0**)
|
||||||
- **Unique OpenGL abstraction layer** (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h)
|
- **Unique OpenGL abstraction layer** (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h)
|
||||||
- Multiple **Fonts** formats supported (TTF, Image fonts, AngelCode fonts)
|
- Multiple **Fonts** formats supported (TTF, Image fonts, AngelCode fonts)
|
||||||
- Multiple texture formats supported, including **compressed formats** (DXT, ETC, ASTC)
|
- Multiple texture formats supported, including **compressed formats** (DXT, ETC, ASTC)
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.so.500
|
||||||
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.so.5.0.0
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.5.0.0.dylib
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.5.0.0.dylib
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.5.0.0.dylib
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
|||||||
|
libraylib.5.0.0.dylib
|
||||||
Vendored
+131
-66
@@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
Package vendor:raylib implements bindings for version 4.5 of the raylib library (https://www.raylib.com/)
|
Package vendor:raylib implements bindings for version 5.0 of the raylib library (https://www.raylib.com/)
|
||||||
|
|
||||||
*********************************************************************************************
|
*********************************************************************************************
|
||||||
*
|
*
|
||||||
* raylib v4.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
|
* raylib v5.0 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
|
||||||
*
|
*
|
||||||
* FEATURES:
|
* FEATURES:
|
||||||
* - NO external dependencies, all required libraries included with raylib
|
* - NO external dependencies, all required libraries included with raylib
|
||||||
@@ -124,7 +124,7 @@ when ODIN_OS == .Windows {
|
|||||||
// multiple copies of raylib.so, but since these bindings are for
|
// multiple copies of raylib.so, but since these bindings are for
|
||||||
// particular version of the library, I better specify it. Ideally,
|
// particular version of the library, I better specify it. Ideally,
|
||||||
// though, it's best specified in terms of major (.so.4)
|
// though, it's best specified in terms of major (.so.4)
|
||||||
"linux/libraylib.so.450",
|
"linux/libraylib.so.500",
|
||||||
"system:dl",
|
"system:dl",
|
||||||
"system:pthread",
|
"system:pthread",
|
||||||
}
|
}
|
||||||
@@ -139,7 +139,7 @@ when ODIN_OS == .Windows {
|
|||||||
when ODIN_ARCH == .arm64 {
|
when ODIN_ARCH == .arm64 {
|
||||||
when RAYLIB_SHARED {
|
when RAYLIB_SHARED {
|
||||||
foreign import lib {
|
foreign import lib {
|
||||||
"macos-arm64/libraylib.450.dylib",
|
"macos-arm64/libraylib.500.dylib",
|
||||||
"system:Cocoa.framework",
|
"system:Cocoa.framework",
|
||||||
"system:OpenGL.framework",
|
"system:OpenGL.framework",
|
||||||
"system:IOKit.framework",
|
"system:IOKit.framework",
|
||||||
@@ -155,7 +155,7 @@ when ODIN_OS == .Windows {
|
|||||||
} else {
|
} else {
|
||||||
when RAYLIB_SHARED {
|
when RAYLIB_SHARED {
|
||||||
foreign import lib {
|
foreign import lib {
|
||||||
"macos/libraylib.450.dylib",
|
"macos/libraylib.500.dylib",
|
||||||
"system:Cocoa.framework",
|
"system:Cocoa.framework",
|
||||||
"system:OpenGL.framework",
|
"system:OpenGL.framework",
|
||||||
"system:IOKit.framework",
|
"system:IOKit.framework",
|
||||||
@@ -173,7 +173,7 @@ when ODIN_OS == .Windows {
|
|||||||
foreign import lib "system:raylib"
|
foreign import lib "system:raylib"
|
||||||
}
|
}
|
||||||
|
|
||||||
VERSION :: "4.5"
|
VERSION :: "5.0"
|
||||||
|
|
||||||
PI :: 3.14159265358979323846
|
PI :: 3.14159265358979323846
|
||||||
DEG2RAD :: PI/180.0
|
DEG2RAD :: PI/180.0
|
||||||
@@ -514,6 +514,19 @@ FilePathList :: struct {
|
|||||||
paths: [^]cstring, // Filepaths entries
|
paths: [^]cstring, // Filepaths entries
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Automation event
|
||||||
|
AutomationEvent :: struct {
|
||||||
|
frame: c.uint, // Event frame
|
||||||
|
type: c.uint, // Event type (AutomationEventType)
|
||||||
|
params: [4]c.int, // Event parameters (if required) ---
|
||||||
|
}
|
||||||
|
|
||||||
|
// Automation event list
|
||||||
|
AutomationEventList :: struct {
|
||||||
|
capacity: c.uint, // Events max entries (MAX_AUTOMATION_EVENTS)
|
||||||
|
count: c.uint, // Events entries count
|
||||||
|
events: [^]AutomationEvent, // Events entries
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Enumerators Definition
|
// Enumerators Definition
|
||||||
@@ -535,6 +548,7 @@ ConfigFlag :: enum c.int {
|
|||||||
WINDOW_TRANSPARENT = 4, // Set to allow transparent framebuffer
|
WINDOW_TRANSPARENT = 4, // Set to allow transparent framebuffer
|
||||||
WINDOW_HIGHDPI = 13, // Set to support HighDPI
|
WINDOW_HIGHDPI = 13, // Set to support HighDPI
|
||||||
WINDOW_MOUSE_PASSTHROUGH = 14, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED
|
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
|
MSAA_4X_HINT = 5, // Set to try enabling MSAA 4X
|
||||||
INTERLACED_HINT = 16, // Set to try enabling interlaced video format (for V3D)
|
INTERLACED_HINT = 16, // Set to try enabling interlaced video format (for V3D)
|
||||||
}
|
}
|
||||||
@@ -805,6 +819,9 @@ PixelFormat :: enum c.int {
|
|||||||
UNCOMPRESSED_R32, // 32 bpp (1 channel - float)
|
UNCOMPRESSED_R32, // 32 bpp (1 channel - float)
|
||||||
UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float)
|
UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float)
|
||||||
UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 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_RGB, // 4 bpp (no alpha)
|
||||||
COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha)
|
COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha)
|
||||||
COMPRESSED_DXT3_RGBA, // 8 bpp
|
COMPRESSED_DXT3_RGBA, // 8 bpp
|
||||||
@@ -869,7 +886,7 @@ BlendMode :: enum c.int {
|
|||||||
|
|
||||||
// Gestures
|
// Gestures
|
||||||
// NOTE: It could be used as flags to enable only some gestures
|
// NOTE: It could be used as flags to enable only some gestures
|
||||||
Gesture :: enum c.int {
|
Gesture :: enum c.uint {
|
||||||
TAP = 0, // Tap gesture
|
TAP = 0, // Tap gesture
|
||||||
DOUBLETAP = 1, // Double tap gesture
|
DOUBLETAP = 1, // Double tap gesture
|
||||||
HOLD = 2, // Hold gesture
|
HOLD = 2, // Hold gesture
|
||||||
@@ -881,7 +898,7 @@ Gesture :: enum c.int {
|
|||||||
PINCH_IN = 8, // Pinch in gesture
|
PINCH_IN = 8, // Pinch in gesture
|
||||||
PINCH_OUT = 9, // Pinch out gesture
|
PINCH_OUT = 9, // Pinch out gesture
|
||||||
}
|
}
|
||||||
Gestures :: distinct bit_set[Gesture; c.int]
|
Gestures :: distinct bit_set[Gesture; c.uint]
|
||||||
|
|
||||||
// Camera system modes
|
// Camera system modes
|
||||||
CameraMode :: enum c.int {
|
CameraMode :: enum c.int {
|
||||||
@@ -910,8 +927,8 @@ NPatchLayout :: enum c.int {
|
|||||||
// Callbacks to hook some internal functions
|
// Callbacks to hook some internal functions
|
||||||
// WARNING: This callbacks are intended for advance users
|
// WARNING: This callbacks are intended for advance users
|
||||||
TraceLogCallback :: #type proc "c" (logLevel: TraceLogLevel, text: cstring, args: c.va_list) // Logging: Redirect trace log messages
|
TraceLogCallback :: #type proc "c" (logLevel: TraceLogLevel, text: cstring, args: c.va_list) // Logging: Redirect trace log messages
|
||||||
LoadFileDataCallback :: #type proc "c"(fileName: cstring, bytesRead: ^c.uint) -> [^]u8 // FileIO: Load binary data
|
LoadFileDataCallback :: #type proc "c"(fileName: cstring, dataSize: ^c.int) -> [^]u8 // FileIO: Load binary data
|
||||||
SaveFileDataCallback :: #type proc "c" (fileName: cstring, data: rawptr, bytesToWrite: c.uint) -> bool // FileIO: Save binary data
|
SaveFileDataCallback :: #type proc "c" (fileName: cstring, data: rawptr, dataSize: c.int) -> bool // FileIO: Save binary data
|
||||||
LoadFileTextCallback :: #type proc "c" (fileName: cstring) -> [^]u8 // FileIO: Load text data
|
LoadFileTextCallback :: #type proc "c" (fileName: cstring) -> [^]u8 // FileIO: Load text data
|
||||||
SaveFileTextCallback :: #type proc "c" (fileName: cstring, text: cstring) -> bool // FileIO: Save text data
|
SaveFileTextCallback :: #type proc "c" (fileName: cstring, text: cstring) -> bool // FileIO: Save text data
|
||||||
|
|
||||||
@@ -932,7 +949,7 @@ foreign lib {
|
|||||||
// Window-related functions
|
// Window-related functions
|
||||||
|
|
||||||
InitWindow :: proc(width, height: c.int, title: cstring) --- // Initialize window and OpenGL context
|
InitWindow :: proc(width, height: c.int, title: cstring) --- // Initialize window and OpenGL context
|
||||||
WindowShouldClose :: proc() -> bool --- // Check if KEY_ESCAPE pressed or Close icon pressed
|
WindowShouldClose :: proc() -> bool --- // Check if application should close (KEY_ESCAPE pressed or windows close icon clicked)
|
||||||
CloseWindow :: proc() --- // Close window and unload OpenGL context
|
CloseWindow :: proc() --- // Close window and unload OpenGL context
|
||||||
IsWindowReady :: proc() -> bool --- // Check if window has been initialized successfully
|
IsWindowReady :: proc() -> bool --- // Check if window has been initialized successfully
|
||||||
IsWindowFullscreen :: proc() -> bool --- // Check if window is currently fullscreen
|
IsWindowFullscreen :: proc() -> bool --- // Check if window is currently fullscreen
|
||||||
@@ -945,17 +962,20 @@ foreign lib {
|
|||||||
SetWindowState :: proc(flags: ConfigFlags) --- // Set window configuration state using flags (only PLATFORM_DESKTOP)
|
SetWindowState :: proc(flags: ConfigFlags) --- // Set window configuration state using flags (only PLATFORM_DESKTOP)
|
||||||
ClearWindowState :: proc(flags: ConfigFlags) --- // Clear window configuration state flags
|
ClearWindowState :: proc(flags: ConfigFlags) --- // Clear window configuration state flags
|
||||||
ToggleFullscreen :: proc() --- // Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)
|
ToggleFullscreen :: proc() --- // Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)
|
||||||
|
ToggleBorderlessWindowed :: proc() --- // Toggle window state: borderless windowed (only PLATFORM_DESKTOP)
|
||||||
MaximizeWindow :: proc() --- // Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
|
MaximizeWindow :: proc() --- // Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
|
||||||
MinimizeWindow :: proc() --- // Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
|
MinimizeWindow :: proc() --- // Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
|
||||||
RestoreWindow :: proc() --- // Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
|
RestoreWindow :: proc() --- // Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
|
||||||
SetWindowIcon :: proc(image: Image) --- // Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)
|
SetWindowIcon :: proc(image: Image) --- // Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)
|
||||||
SetWindowIcons :: proc(images: [^]Image, count: c.int) --- // Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)
|
SetWindowIcons :: proc(images: [^]Image, count: c.int) --- // Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)
|
||||||
SetWindowTitle :: proc(title: cstring) --- // Set title for window (only PLATFORM_DESKTOP)
|
SetWindowTitle :: proc(title: cstring) --- // Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)
|
||||||
SetWindowPosition :: proc(x, y: c.int) --- // Set window position on screen (only PLATFORM_DESKTOP)
|
SetWindowPosition :: proc(x, y: c.int) --- // Set window position on screen (only PLATFORM_DESKTOP)
|
||||||
SetWindowMonitor :: proc(monitor: c.int) --- // Set monitor for the current window (fullscreen mode)
|
SetWindowMonitor :: proc(monitor: c.int) --- // Set monitor for the current window
|
||||||
SetWindowMinSize :: proc(width, height: c.int) --- // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)
|
SetWindowMinSize :: proc(width, height: c.int) --- // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)
|
||||||
|
SetWindowMaxSize :: proc(width, height: c.int) --- // Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE)
|
||||||
SetWindowSize :: proc(width, height: c.int) --- // Set window dimensions
|
SetWindowSize :: proc(width, height: c.int) --- // Set window dimensions
|
||||||
SetWindowOpacity :: proc(opacity: f32) --- // Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)
|
SetWindowOpacity :: proc(opacity: f32) --- // Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)
|
||||||
|
SetWindowFocused :: proc() --- // Set window focused (only PLATFORM_DESKTOP)
|
||||||
GetWindowHandle :: proc() -> rawptr --- // Get native window handle
|
GetWindowHandle :: proc() -> rawptr --- // Get native window handle
|
||||||
GetScreenWidth :: proc() -> c.int --- // Get current screen width
|
GetScreenWidth :: proc() -> c.int --- // Get current screen width
|
||||||
GetScreenHeight :: proc() -> c.int --- // Get current screen height
|
GetScreenHeight :: proc() -> c.int --- // Get current screen height
|
||||||
@@ -971,7 +991,7 @@ foreign lib {
|
|||||||
GetMonitorRefreshRate :: proc(monitor: c.int) -> c.int --- // Get specified monitor refresh rate
|
GetMonitorRefreshRate :: proc(monitor: c.int) -> c.int --- // Get specified monitor refresh rate
|
||||||
GetWindowPosition :: proc() -> Vector2 --- // Get window position XY on monitor
|
GetWindowPosition :: proc() -> Vector2 --- // Get window position XY on monitor
|
||||||
GetWindowScaleDPI :: proc() -> Vector2 --- // Get window scale DPI factor
|
GetWindowScaleDPI :: proc() -> Vector2 --- // Get window scale DPI factor
|
||||||
GetMonitorName :: proc(monitor: c.int) -> cstring --- // Get the human-readable, UTF-8 encoded name of the primary monitor
|
GetMonitorName :: proc(monitor: c.int) -> cstring --- // Get the human-readable, UTF-8 encoded name of the specified monitor
|
||||||
SetClipboardText :: proc(text: cstring) --- // Set clipboard text content
|
SetClipboardText :: proc(text: cstring) --- // Set clipboard text content
|
||||||
GetClipboardText :: proc() -> cstring --- // Get clipboard text content
|
GetClipboardText :: proc() -> cstring --- // Get clipboard text content
|
||||||
EnableEventWaiting :: proc() --- // Enable waiting for events on EndDrawing(), no automatic event polling
|
EnableEventWaiting :: proc() --- // Enable waiting for events on EndDrawing(), no automatic event polling
|
||||||
@@ -980,7 +1000,7 @@ foreign lib {
|
|||||||
|
|
||||||
// Custom frame control functions
|
// Custom frame control functions
|
||||||
// NOTE: Those functions are intended for advance users that want full control over the frame processing
|
// NOTE: Those functions are intended for advance users that want full control over the frame processing
|
||||||
// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timming + PollInputEvents()
|
// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents()
|
||||||
// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL
|
// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL
|
||||||
|
|
||||||
SwapScreenBuffer :: proc() --- // Swap back buffer with front buffer (screen drawing)
|
SwapScreenBuffer :: proc() --- // Swap back buffer with front buffer (screen drawing)
|
||||||
@@ -1053,21 +1073,26 @@ foreign lib {
|
|||||||
GetFrameTime :: proc() -> f32 --- // Returns time in seconds for last frame drawn (delta time)
|
GetFrameTime :: proc() -> f32 --- // Returns time in seconds for last frame drawn (delta time)
|
||||||
GetTime :: proc() -> f64 --- // Returns elapsed time in seconds since InitWindow()
|
GetTime :: proc() -> f64 --- // Returns elapsed time in seconds since InitWindow()
|
||||||
|
|
||||||
// Misc. functions
|
// Random value generation functions
|
||||||
|
|
||||||
GetRandomValue :: proc(min, max: c.int) -> c.int --- // Returns a random value between min and max (both included)
|
SetRandomSeed :: proc(seed: c.uint) --- // Set the seed for the random number generator
|
||||||
SetRandomSeed :: proc(seed: c.uint) --- // Set the seed for the random number generator
|
GetRandomValue :: proc(min, max: c.int) -> c.int --- // Get a random value between min and max (both included)
|
||||||
|
LoadRandomSequence :: proc(count : c.uint, min, max: c.int) --- // Load random values sequence, no values repeated
|
||||||
|
UnloadRandomSequence :: proc(sequence : ^c.int) --- // Unload random values sequence
|
||||||
|
|
||||||
|
// Misc. functions
|
||||||
TakeScreenshot :: proc(fileName: cstring) --- // Takes a screenshot of current screen (filename extension defines format)
|
TakeScreenshot :: proc(fileName: cstring) --- // Takes a screenshot of current screen (filename extension defines format)
|
||||||
SetConfigFlags :: proc(flags: ConfigFlags) --- // Setup init configuration flags (view FLAGS)
|
SetConfigFlags :: proc(flags: ConfigFlags) --- // Setup init configuration flags (view FLAGS)
|
||||||
|
OpenURL :: proc(url: cstring) --- // Open URL with default system browser (if available)
|
||||||
|
|
||||||
|
// NOTE: Following functions implemented in module [utils]
|
||||||
|
//------------------------------------------------------------------
|
||||||
TraceLog :: proc(logLevel: TraceLogLevel, text: cstring, #c_vararg args: ..any) --- // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR)
|
TraceLog :: proc(logLevel: TraceLogLevel, text: cstring, #c_vararg args: ..any) --- // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR)
|
||||||
SetTraceLogLevel :: proc(logLevel: TraceLogLevel) --- // Set the current threshold (minimum) log level
|
SetTraceLogLevel :: proc(logLevel: TraceLogLevel) --- // Set the current threshold (minimum) log level
|
||||||
MemAlloc :: proc(size: c.uint) -> rawptr --- // Internal memory allocator
|
MemAlloc :: proc(size: c.uint) -> rawptr --- // Internal memory allocator
|
||||||
MemRealloc :: proc(ptr: rawptr, size: c.uint) -> rawptr --- // Internal memory reallocator
|
MemRealloc :: proc(ptr: rawptr, size: c.uint) -> rawptr --- // Internal memory reallocator
|
||||||
MemFree :: proc(ptr: rawptr) --- // Internal memory free
|
MemFree :: proc(ptr: rawptr) --- // Internal memory free
|
||||||
|
|
||||||
OpenURL :: proc(url: cstring) --- // Open URL with default system browser (if available)
|
|
||||||
|
|
||||||
// Set custom callbacks
|
// Set custom callbacks
|
||||||
// WARNING: Callbacks setup is intended for advance users
|
// WARNING: Callbacks setup is intended for advance users
|
||||||
|
|
||||||
@@ -1079,13 +1104,16 @@ foreign lib {
|
|||||||
|
|
||||||
// Files management functions
|
// Files management functions
|
||||||
|
|
||||||
LoadFileData :: proc(fileName: cstring, bytesRead: ^c.uint) -> [^]byte --- // Load file data as byte array (read)
|
LoadFileData :: proc(fileName: cstring, dataSize: ^c.int) -> [^]byte --- // Load file data as byte array (read)
|
||||||
UnloadFileData :: proc(data: [^]byte) --- // Unload file data allocated by LoadFileData()
|
UnloadFileData :: proc(data: [^]byte) --- // Unload file data allocated by LoadFileData()
|
||||||
SaveFileData :: proc(fileName: cstring, data: rawptr, bytesToWrite: c.uint) -> bool --- // Save data to file from byte array (write), returns true on success
|
SaveFileData :: proc(fileName: cstring, data: rawptr, dataSize: c.int) -> bool --- // Save data to file from byte array (write), returns true on success
|
||||||
ExportDataAsCode :: proc(data: rawptr, size: c.uint, fileName: cstring) -> bool --- // Export data to code (.h), returns true on success
|
ExportDataAsCode :: proc(data: rawptr, dataSize: c.int, fileName: cstring) -> bool --- // Export data to code (.h), returns true on success
|
||||||
LoadFileText :: proc(fileName: cstring) -> [^]byte --- // Load text data from file (read), returns a '\0' terminated string
|
LoadFileText :: proc(fileName: cstring) -> [^]byte --- // Load text data from file (read), returns a '\0' terminated string
|
||||||
UnloadFileText :: proc(text: [^]byte) --- // Unload file text data allocated by LoadFileText()
|
UnloadFileText :: proc(text: [^]byte) --- // Unload file text data allocated by LoadFileText()
|
||||||
SaveFileText :: proc(fileName: cstring, text: [^]byte) -> bool --- // Save text data to file (write), string must be '\0' terminated, returns true on success
|
SaveFileText :: proc(fileName: cstring, text: [^]byte) -> bool --- // Save text data to file (write), string must be '\0' terminated, returns true on success
|
||||||
|
|
||||||
|
// File system functions
|
||||||
|
|
||||||
FileExists :: proc(fileName: cstring) -> bool --- // Check if file exists
|
FileExists :: proc(fileName: cstring) -> bool --- // Check if file exists
|
||||||
DirectoryExists :: proc(dirPath: cstring) -> bool --- // Check if a directory path exists
|
DirectoryExists :: proc(dirPath: cstring) -> bool --- // Check if a directory path exists
|
||||||
IsFileExtension :: proc(fileName, ext: cstring) -> bool --- // Check file extension (including point: .png, .wav)
|
IsFileExtension :: proc(fileName, ext: cstring) -> bool --- // Check file extension (including point: .png, .wav)
|
||||||
@@ -1096,7 +1124,7 @@ foreign lib {
|
|||||||
GetDirectoryPath :: proc(filePath: cstring) -> cstring --- // Get full path for a given fileName with path (uses static string)
|
GetDirectoryPath :: proc(filePath: cstring) -> cstring --- // Get full path for a given fileName with path (uses static string)
|
||||||
GetPrevDirectoryPath :: proc(dirPath: cstring) -> cstring --- // Get previous directory path for a given path (uses static string)
|
GetPrevDirectoryPath :: proc(dirPath: cstring) -> cstring --- // Get previous directory path for a given path (uses static string)
|
||||||
GetWorkingDirectory :: proc() -> cstring --- // Get current working directory (uses static string)
|
GetWorkingDirectory :: proc() -> cstring --- // Get current working directory (uses static string)
|
||||||
GetApplicationDirectory :: proc() -> cstring --- // Get the directory if the running application (uses static string)
|
GetApplicationDirectory :: proc() -> cstring --- // Get the directory of the running application (uses static string)
|
||||||
ChangeDirectory :: proc(dir: cstring) -> bool --- // Change working directory, return true on success
|
ChangeDirectory :: proc(dir: cstring) -> bool --- // Change working directory, return true on success
|
||||||
IsPathFile :: proc(path: cstring) -> bool --- // Check if a given path is a file or a directory
|
IsPathFile :: proc(path: cstring) -> bool --- // Check if a given path is a file or a directory
|
||||||
LoadDirectoryFiles :: proc(dirPath: cstring) -> FilePathList --- // Load directory filepaths
|
LoadDirectoryFiles :: proc(dirPath: cstring) -> FilePathList --- // Load directory filepaths
|
||||||
@@ -1114,19 +1142,31 @@ foreign lib {
|
|||||||
EncodeDataBase64 :: proc(data: rawptr, dataSize: c.int, outputSize: ^c.int) -> [^]byte --- // Encode data to Base64 string, memory must be MemFree()
|
EncodeDataBase64 :: proc(data: rawptr, dataSize: c.int, outputSize: ^c.int) -> [^]byte --- // Encode data to Base64 string, memory must be MemFree()
|
||||||
DecodeDataBase64 :: proc(data: rawptr, outputSize: ^c.int) -> [^]byte --- // Decode Base64 string data, memory must be MemFree()
|
DecodeDataBase64 :: proc(data: rawptr, outputSize: ^c.int) -> [^]byte --- // Decode Base64 string data, memory must be MemFree()
|
||||||
|
|
||||||
|
// Automation events functionality
|
||||||
|
|
||||||
|
LoadAutomationEventList :: proc(fileName: cstring) -> AutomationEventList --- // Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS
|
||||||
|
UnloadAutomationEventList :: proc(list: ^AutomationEventList) --- // Unload automation events list from file
|
||||||
|
ExportAutomationEventList :: proc(list: AutomationEventList, fileName: cstring) -> bool --- // Export automation events list as text file
|
||||||
|
SetAutomationEventList :: proc(list: ^AutomationEventList) --- // Set automation event list to record to
|
||||||
|
SetAutomationEventBaseFrame :: proc(frame: c.int) --- // Set automation event internal base frame to start recording
|
||||||
|
StartAutomationEventRecording :: proc() --- // Start recording automation events (AutomationEventList must be set)
|
||||||
|
StopAutomationEventRecording :: proc() --- // Stop recording automation events
|
||||||
|
PlayAutomationEvent :: proc(event: AutomationEvent) --- // Play a recorded automation event
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
// Input Handling Functions (Module: core)
|
// Input Handling Functions (Module: core)
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Input-related functions: keyboard
|
// Input-related functions: keyboard
|
||||||
|
|
||||||
IsKeyPressed :: proc(key: KeyboardKey) -> bool --- // Detect if a key has been pressed once
|
IsKeyPressed :: proc(key: KeyboardKey) -> bool --- // Detect if a key has been pressed once
|
||||||
IsKeyDown :: proc(key: KeyboardKey) -> bool --- // Detect if a key is being pressed
|
IsKeyPressedRepeat :: proc(key: KeyboardKey) -> bool --- // Check if a key has been pressed again (Only PLATFORM_DESKTOP)
|
||||||
IsKeyReleased :: proc(key: KeyboardKey) -> bool --- // Detect if a key has been released once
|
IsKeyDown :: proc(key: KeyboardKey) -> bool --- // Detect if a key is being pressed
|
||||||
IsKeyUp :: proc(key: KeyboardKey) -> bool --- // Detect if a key is NOT being pressed
|
IsKeyReleased :: proc(key: KeyboardKey) -> bool --- // Detect if a key has been released once
|
||||||
SetExitKey :: proc(key: KeyboardKey) --- // Set a custom key to exit program (default is ESC)
|
IsKeyUp :: proc(key: KeyboardKey) -> bool --- // Detect if a key is NOT being pressed
|
||||||
GetKeyPressed :: proc() -> KeyboardKey --- // Get key pressed (keycode), call it multiple times for keys queued
|
GetKeyPressed :: proc() -> KeyboardKey --- // Get key pressed (keycode), call it multiple times for keys queued
|
||||||
GetCharPressed :: proc() -> rune --- // Get char pressed (unicode), call it multiple times for chars queued
|
GetCharPressed :: proc() -> rune --- // Get char pressed (unicode), call it multiple times for chars queued
|
||||||
|
SetExitKey :: proc(key: KeyboardKey) --- // Set a custom key to exit program (default is ESC)
|
||||||
|
|
||||||
// Input-related functions: gamepads
|
// Input-related functions: gamepads
|
||||||
|
|
||||||
@@ -1200,18 +1240,17 @@ foreign lib {
|
|||||||
DrawPixel :: proc(posX, posY: c.int, color: Color) --- // Draw a pixel
|
DrawPixel :: proc(posX, posY: c.int, color: Color) --- // Draw a pixel
|
||||||
DrawPixelV :: proc(position: Vector2, color: Color) --- // Draw a pixel (Vector version)
|
DrawPixelV :: proc(position: Vector2, color: Color) --- // Draw a pixel (Vector version)
|
||||||
DrawLine :: proc(startPosX, startPosY, endPosX, endPosY: c.int, color: Color) --- // Draw a line
|
DrawLine :: proc(startPosX, startPosY, endPosX, endPosY: c.int, color: Color) --- // Draw a line
|
||||||
DrawLineV :: proc(startPos, endPos: Vector2, color: Color) --- // Draw a line (Vector version)
|
DrawLineV :: proc(startPos, endPos: Vector2, color: Color) --- // Draw a line (using gl lines)
|
||||||
DrawLineEx :: proc(startPos, endPos: Vector2, thick: f32, color: Color) --- // Draw a line defining thickness
|
DrawLineEx :: proc(startPos, endPos: Vector2, thick: f32, color: Color) --- // Draw a line (using triangles/quads)
|
||||||
DrawLineBezier :: proc(startPos, endPos: Vector2, thick: f32, color: Color) --- // Draw a line using cubic-bezier curves in-out
|
DrawLineStrip :: proc(points: [^]Vector2, pointCount: c.int, color: Color) --- // Draw lines sequence (using gl lines)
|
||||||
DrawLineBezierQuad :: proc(startPos, endPos: Vector2, controlPos: Vector2, thick: f32, color: Color) --- // Draw line using quadratic bezier curves with a control point
|
DrawLineBezier :: proc(startPos, endPos: Vector2, thick: f32, color: Color) --- // Draw line segment cubic-bezier in-out interpolation
|
||||||
DrawLineBezierCubic :: proc(startPos, endPos: Vector2, startControlPos, endControlPos: Vector2, thick: f32, color: Color) --- // Draw line using cubic bezier curves with 2 control points
|
|
||||||
DrawLineStrip :: proc(points: [^]Vector2, pointCount: c.int, color: Color) --- // Draw lines sequence
|
|
||||||
DrawCircle :: proc(centerX, centerY: c.int, radius: f32, color: Color) --- // Draw a color-filled circle
|
DrawCircle :: proc(centerX, centerY: c.int, radius: f32, color: Color) --- // Draw a color-filled circle
|
||||||
DrawCircleSector :: proc(center: Vector2, radius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw a piece of a circle
|
DrawCircleSector :: proc(center: Vector2, radius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw a piece of a circle
|
||||||
DrawCircleSectorLines :: proc(center: Vector2, radius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw circle sector outline
|
DrawCircleSectorLines :: proc(center: Vector2, radius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw circle sector outline
|
||||||
DrawCircleGradient :: proc(centerX, centerY: c.int, radius: f32, color1, color2: Color) --- // Draw a gradient-filled circle
|
DrawCircleGradient :: proc(centerX, centerY: c.int, radius: f32, color1, color2: Color) --- // Draw a gradient-filled circle
|
||||||
DrawCircleV :: proc(center: Vector2, radius: f32, color: Color) --- // Draw a color-filled circle (Vector version)
|
DrawCircleV :: proc(center: Vector2, radius: f32, color: Color) --- // Draw a color-filled circle (Vector version)
|
||||||
DrawCircleLines :: proc(centerX, centerY: c.int, radius: f32, color: Color) --- // Draw circle outline
|
DrawCircleLines :: proc(centerX, centerY: c.int, radius: f32, color: Color) --- // Draw circle outline
|
||||||
|
DrawCircleLinesV :: proc(center: Vector2, radius: f32, color: Color) --- // Draw circle outline (Vector version)
|
||||||
DrawEllipse :: proc(centerX, centerY: c.int, radiusH, radiusV: f32, color: Color) --- // Draw ellipse
|
DrawEllipse :: proc(centerX, centerY: c.int, radiusH, radiusV: f32, color: Color) --- // Draw ellipse
|
||||||
DrawEllipseLines :: proc(centerX, centerY: c.int, radiusH, radiusV: f32, color: Color) --- // Draw ellipse outline
|
DrawEllipseLines :: proc(centerX, centerY: c.int, radiusH, radiusV: f32, color: Color) --- // Draw ellipse outline
|
||||||
DrawRing :: proc(center: Vector2, innerRadius, outerRadius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw ring
|
DrawRing :: proc(center: Vector2, innerRadius, outerRadius: f32, startAngle, endAngle: f32, segments: c.int, color: Color) --- // Draw ring
|
||||||
@@ -1235,6 +1274,24 @@ foreign lib {
|
|||||||
DrawPolyLines :: proc(center: Vector2, sides: c.int, radius: f32, rotation: f32, color: Color) --- // Draw a polygon outline of n sides
|
DrawPolyLines :: proc(center: Vector2, sides: c.int, radius: f32, rotation: f32, color: Color) --- // Draw a polygon outline of n sides
|
||||||
DrawPolyLinesEx :: proc(center: Vector2, sides: c.int, radius: f32, rotation: f32, lineThick: f32, color: Color) --- // Draw a polygon outline of n sides with extended parameters
|
DrawPolyLinesEx :: proc(center: Vector2, sides: c.int, radius: f32, rotation: f32, lineThick: f32, color: Color) --- // Draw a polygon outline of n sides with extended parameters
|
||||||
|
|
||||||
|
// Splines drawing functions
|
||||||
|
DrawSplineLinear :: proc(points: [^]Vector2, pointCount: c.int, thick: f32, color: Color) --- // Draw spline: Linear, minimum 2 points
|
||||||
|
DrawSplineBasis :: proc(points: [^]Vector2, pointCount: c.int, thick: f32, color: Color) --- // Draw spline: B-Spline, minimum 4 points
|
||||||
|
DrawSplineCatmullRom :: proc(points: [^]Vector2, pointCount: c.int, thick: f32, color: Color) --- // Draw spline: Catmull-Rom, minimum 4 points
|
||||||
|
DrawSplineBezierQuadratic :: proc(points: [^]Vector2, pointCount: c.int, thick: f32, color: Color) --- // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]
|
||||||
|
DrawSplineBezierCubic :: proc(points: [^]Vector2, pointCount: c.int, thick: f32, color: Color) --- // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]
|
||||||
|
DrawSplineSegmentLinear :: proc(p1, p2: Vector2, thick: f32, color: Color) --- // Draw spline segment: Linear, 2 points
|
||||||
|
DrawSplineSegmentBasis :: proc(p1, p2, p3, p4: Vector2, thick: f32, color: Color) --- // Draw spline segment: B-Spline, 4 points
|
||||||
|
DrawSplineSegmentCatmullRom :: proc(p1, p2, p3, p4: Vector2, thick: f32, color: Color) --- // Draw spline segment: Catmull-Rom, 4 points
|
||||||
|
DrawSplineSegmentBezierQuadratic :: proc(p1, c2, p3: Vector2, thick: f32, color: Color) --- // Draw spline segment: Quadratic Bezier, 2 points, 1 control point
|
||||||
|
DrawSplineSegmentBezierCubic :: proc(p1, c2, c3, p4: Vector2, thick: f32, color: Color) --- // Draw spline segment: Cubic Bezier, 2 points, 2 control points
|
||||||
|
|
||||||
|
// Spline segment point evaluation functions, for a given t [0.0f .. 1.0f]
|
||||||
|
GetSplinePointLinear :: proc(startPos, endPos: Vector2, t: f32) -> Vector2 --- // Get (evaluate) spline point: Linear
|
||||||
|
GetSplinePointBasis :: proc(p1, p2, p3, p4: Vector2, t: f32) -> Vector2 --- // Get (evaluate) spline point: B-Spline
|
||||||
|
GetSplinePointCatmullRom :: proc(p1, p2, p3, p4: Vector2, t: f32) -> Vector2 --- // Get (evaluate) spline point: Catmull-Rom
|
||||||
|
GetSplinePointBezierQuad :: proc(p1, c2, p3: Vector2, t: f32) -> Vector2 --- // Get (evaluate) spline point: Quadratic Bezier
|
||||||
|
GetSplinePointBezierCubic :: proc(p1, c2, c3, p4: Vector2, t: f32) -> Vector2 --- // Get (evaluate) spline point: Cubic Bezier
|
||||||
// Basic shapes collision detection functions
|
// Basic shapes collision detection functions
|
||||||
CheckCollisionRecs :: proc(rec1, rec2: Rectangle) -> bool --- // Check collision between two rectangles
|
CheckCollisionRecs :: proc(rec1, rec2: Rectangle) -> bool --- // Check collision between two rectangles
|
||||||
CheckCollisionCircles :: proc(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) -> bool --- // Check collision between two circles
|
CheckCollisionCircles :: proc(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) -> bool --- // Check collision between two circles
|
||||||
@@ -1254,6 +1311,7 @@ foreign lib {
|
|||||||
|
|
||||||
LoadImage :: proc(fileName: cstring) -> Image --- // Load image from file into CPU memory (RAM)
|
LoadImage :: proc(fileName: cstring) -> Image --- // Load image from file into CPU memory (RAM)
|
||||||
LoadImageRaw :: proc(fileName: cstring, width, height: c.int, format: PixelFormat, headerSize: c.int) -> Image --- // Load image from RAW file data
|
LoadImageRaw :: proc(fileName: cstring, width, height: c.int, format: PixelFormat, headerSize: c.int) -> Image --- // Load image from RAW file data
|
||||||
|
LoadImageSvg :: proc(fileNameOrString: cstring, width, height: c.int) -> Image --- // Load image from SVG file data or string with specified size
|
||||||
LoadImageAnim :: proc(fileName: cstring, frames: [^]c.int) -> Image --- // Load image sequence from file (frames appended to image.data)
|
LoadImageAnim :: proc(fileName: cstring, frames: [^]c.int) -> Image --- // Load image sequence from file (frames appended to image.data)
|
||||||
LoadImageFromMemory :: proc(fileType: cstring, fileData: rawptr, dataSize: c.int) -> Image --- // Load image from memory buffer, fileType refers to extension: i.e. '.png'
|
LoadImageFromMemory :: proc(fileType: cstring, fileData: rawptr, dataSize: c.int) -> Image --- // Load image from memory buffer, fileType refers to extension: i.e. '.png'
|
||||||
LoadImageFromTexture :: proc(texture: Texture2D) -> Image --- // Load image from GPU texture data
|
LoadImageFromTexture :: proc(texture: Texture2D) -> Image --- // Load image from GPU texture data
|
||||||
@@ -1261,14 +1319,15 @@ foreign lib {
|
|||||||
IsImageReady :: proc(image: Image) -> bool --- // Check if an image is ready
|
IsImageReady :: proc(image: Image) -> bool --- // Check if an image is ready
|
||||||
UnloadImage :: proc(image: Image) --- // Unload image from CPU memory (RAM)
|
UnloadImage :: proc(image: Image) --- // Unload image from CPU memory (RAM)
|
||||||
ExportImage :: proc(image: Image, fileName: cstring) -> bool --- // Export image data to file, returns true on success
|
ExportImage :: proc(image: Image, fileName: cstring) -> bool --- // Export image data to file, returns true on success
|
||||||
|
ExportImageToMemory :: proc(image: Image, fileType: cstring, fileSize: ^c.int) -> rawptr --- // Export image to memory buffer
|
||||||
ExportImageAsCode :: proc(image: Image, fileName: cstring) -> bool --- // Export image as code file defining an array of bytes, returns true on success
|
ExportImageAsCode :: proc(image: Image, fileName: cstring) -> bool --- // Export image as code file defining an array of bytes, returns true on success
|
||||||
|
|
||||||
// Image generation functions
|
// Image generation functions
|
||||||
|
|
||||||
GenImageColor :: proc(width, height: c.int, color: Color) -> Image --- // Generate image: plain color
|
GenImageColor :: proc(width, height: c.int, color: Color) -> Image --- // Generate image: plain color
|
||||||
GenImageGradientV :: proc(width, height: c.int, top, bottom: Color) -> Image --- // Generate image: vertical gradient
|
GenImageGradientLinear :: proc(width, height, direction: c.int, start, end: Color) -> Image --- // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
|
||||||
GenImageGradientH :: proc(width, height: c.int, left, right: Color) -> Image --- // Generate image: horizontal gradient
|
|
||||||
GenImageGradientRadial :: proc(width, height: c.int, density: f32, inner, outer: Color) -> Image --- // Generate image: radial gradient
|
GenImageGradientRadial :: proc(width, height: c.int, density: f32, inner, outer: Color) -> Image --- // Generate image: radial gradient
|
||||||
|
GenImageGradientSquare :: proc(width, height: c.int, density: f32, inner, outer: Color) -> Image --- // Generate image: square gradient
|
||||||
GenImageChecked :: proc(width, height: c.int, checksX, checksY: c.int, col1, col2: Color) -> Image --- // Generate image: checked
|
GenImageChecked :: proc(width, height: c.int, checksX, checksY: c.int, col1, col2: Color) -> Image --- // Generate image: checked
|
||||||
GenImageWhiteNoise :: proc(width, height: c.int, factor: f32) -> Image --- // Generate image: white noise
|
GenImageWhiteNoise :: proc(width, height: c.int, factor: f32) -> Image --- // Generate image: white noise
|
||||||
GenImagePerlinNoise :: proc(width, height: c.int, offsetX, offsetY: c.int, scale: f32) -> Image --- // Generate image: perlin noise
|
GenImagePerlinNoise :: proc(width, height: c.int, offsetX, offsetY: c.int, scale: f32) -> Image --- // Generate image: perlin noise
|
||||||
@@ -1296,6 +1355,7 @@ foreign lib {
|
|||||||
ImageDither :: proc(image: ^Image, rBpp, gBpp, bBpp, aBpp: c.int) --- // Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
|
ImageDither :: proc(image: ^Image, rBpp, gBpp, bBpp, aBpp: c.int) --- // Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
|
||||||
ImageFlipVertical :: proc(image: ^Image) --- // Flip image vertically
|
ImageFlipVertical :: proc(image: ^Image) --- // Flip image vertically
|
||||||
ImageFlipHorizontal :: proc(image: ^Image) --- // Flip image horizontally
|
ImageFlipHorizontal :: proc(image: ^Image) --- // Flip image horizontally
|
||||||
|
ImageRotate :: proc(image: ^Image, degrees: c.int) --- // Rotate image by input angle in degrees( -359 to 359)
|
||||||
ImageRotateCW :: proc(image: ^Image) --- // Rotate image clockwise 90deg
|
ImageRotateCW :: proc(image: ^Image) --- // Rotate image clockwise 90deg
|
||||||
ImageRotateCCW :: proc(image: ^Image) --- // Rotate image counter-clockwise 90deg
|
ImageRotateCCW :: proc(image: ^Image) --- // Rotate image counter-clockwise 90deg
|
||||||
ImageColorTint :: proc(image: ^Image, color: Color) --- // Modify image color: tint
|
ImageColorTint :: proc(image: ^Image, color: Color) --- // Modify image color: tint
|
||||||
@@ -1386,34 +1446,35 @@ foreign lib {
|
|||||||
|
|
||||||
// Font loading/unloading functions
|
// Font loading/unloading functions
|
||||||
|
|
||||||
GetFontDefault :: proc() -> Font --- // Get the default Font
|
GetFontDefault :: proc() -> Font --- // Get the default Font
|
||||||
LoadFont :: proc(fileName: cstring) -> Font --- // Load font from file into GPU memory (VRAM)
|
LoadFont :: proc(fileName: cstring) -> Font --- // Load font from file into GPU memory (VRAM)
|
||||||
LoadFontEx :: proc(fileName: cstring, fontSize: c.int, fontChars: [^]rune, glyphCount: c.int) -> Font --- // Load font from file with extended parameters, use NULL for fontChars and 0 for glyphCount to load the default character set
|
LoadFontEx :: proc(fileName: cstring, fontSize: c.int, codepoints: [^]rune, codepointCount: c.int) -> Font --- // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set
|
||||||
LoadFontFromImage :: proc(image: Image, key: Color, firstChar: rune) -> Font --- // Load font from Image (XNA style)
|
LoadFontFromImage :: proc(image: Image, key: Color, firstChar: rune) -> Font --- // Load font from Image (XNA style)
|
||||||
LoadFontFromMemory :: proc(fileType: cstring, fileData: rawptr, dataSize: c.int, fontSize: c.int, fontChars: [^]rune, glyphCount: c.int) -> Font --- // Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
|
LoadFontFromMemory :: proc(fileType: cstring, fileData: rawptr, dataSize: c.int, fontSize: c.int, codepoints: [^]rune, codepointCount: c.int) -> Font --- // Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
|
||||||
IsFontReady :: proc(font: Font) -> bool --- // Check if a font is ready
|
IsFontReady :: proc(font: Font) -> bool --- // Check if a font is ready
|
||||||
LoadFontData :: proc(fileData: rawptr, dataSize: c.int, fontSize: c.int, fontChars: [^]rune, glyphCount: c.int, type: FontType) -> [^]GlyphInfo --- // Load font data for further use
|
LoadFontData :: proc(fileData: rawptr, dataSize: c.int, fontSize: c.int, codepoints: [^]rune, codepointCount: c.int, type: FontType) -> [^]GlyphInfo --- // Load font data for further use
|
||||||
GenImageFontAtlas :: proc(chars: [^]GlyphInfo, recs: ^[^]Rectangle, glyphCount: c.int, fontSize: c.int, padding: c.int, packMethod: c.int) -> Image --- // Generate image font atlas using chars info
|
GenImageFontAtlas :: proc(glyphs: [^]GlyphInfo, glyphRecs: ^[^]Rectangle, codepointCount: c.int, fontSize: c.int, padding: c.int, packMethod: c.int) -> Image --- // Generate image font atlas using chars info
|
||||||
UnloadFontData :: proc(chars: [^]GlyphInfo, glyphCount: c.int) --- // Unload font chars info data (RAM)
|
UnloadFontData :: proc(glyphs: [^]GlyphInfo, glyphCount: c.int) --- // Unload font chars info data (RAM)
|
||||||
UnloadFont :: proc(font: Font) --- // Unload font from GPU memory (VRAM)
|
UnloadFont :: proc(font: Font) --- // Unload font from GPU memory (VRAM)
|
||||||
ExportFontAsCode :: proc(font: Font, fileName: cstring) -> bool --- // Export font as code file, returns true on success
|
ExportFontAsCode :: proc(font: Font, fileName: cstring) -> bool --- // Export font as code file, returns true on success
|
||||||
|
|
||||||
// Text drawing functions
|
// Text drawing functions
|
||||||
|
|
||||||
DrawFPS :: proc(posX, posY: c.int) --- // Draw current FPS
|
DrawFPS :: proc(posX, posY: c.int) --- // Draw current FPS
|
||||||
DrawText :: proc(text: cstring, posX, posY: c.int, fontSize: c.int, color: Color) --- // Draw text (using default font)
|
DrawText :: proc(text: cstring, posX, posY: c.int, fontSize: c.int, color: Color) --- // Draw text (using default font)
|
||||||
DrawTextEx :: proc(font: Font, text: cstring, position: Vector2, fontSize: f32, spacing: f32, tint: Color) --- // Draw text using font and additional parameters
|
DrawTextEx :: proc(font: Font, text: cstring, position: Vector2, fontSize: f32, spacing: f32, tint: Color) --- // Draw text using font and additional parameters
|
||||||
DrawTextPro :: proc(font: Font, text: cstring, position, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) --- // Draw text using Font and pro parameters (rotation)
|
DrawTextPro :: proc(font: Font, text: cstring, position, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) --- // Draw text using Font and pro parameters (rotation)
|
||||||
DrawTextCodepoint :: proc(font: Font, codepoint: rune, position: Vector2, fontSize: f32, tint: Color) --- // Draw one character (codepoint)
|
DrawTextCodepoint :: proc(font: Font, codepoint: rune, position: Vector2, fontSize: f32, tint: Color) --- // Draw one character (codepoint)
|
||||||
DrawTextCodepoints :: proc(font: Font, codepoints: [^]rune, count: c.int, position: Vector2, fontSize: f32, spacing: f32, tint: Color) --- // Draw multiple character (codepoint)
|
DrawTextCodepoints :: proc(font: Font, codepoints: [^]rune, codepointCount: c.int, position: Vector2, fontSize: f32, spacing: f32, tint: Color) --- // Draw multiple character (codepoint)
|
||||||
|
|
||||||
// Text font info functions
|
// Text font info functions
|
||||||
|
|
||||||
MeasureText :: proc(text: cstring, fontSize: c.int) -> c.int --- // Measure string width for default font
|
SetTextLineSpacing :: proc(spacing: c.int) --- // Set vertical line spacing when drawing with line-breaks
|
||||||
MeasureTextEx :: proc(font: Font, text: cstring, fontSize: f32, spacing: f32) -> Vector2 --- // Measure string size for Font
|
MeasureText :: proc(text: cstring, fontSize: c.int) -> c.int --- // Measure string width for default font
|
||||||
GetGlyphIndex :: proc(font: Font, codepoint: rune) -> c.int --- // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found
|
MeasureTextEx :: proc(font: Font, text: cstring, fontSize: f32, spacing: f32) -> Vector2 --- // Measure string size for Font
|
||||||
GetGlyphInfo :: proc(font: Font, codepoint: rune) -> GlyphInfo --- // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found
|
GetGlyphIndex :: proc(font: Font, codepoint: rune) -> c.int --- // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found
|
||||||
GetGlyphAtlasRec :: proc(font: Font, codepoint: rune) -> Rectangle --- // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found
|
GetGlyphInfo :: proc(font: Font, codepoint: rune) -> GlyphInfo --- // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found
|
||||||
|
GetGlyphAtlasRec :: proc(font: Font, codepoint: rune) -> Rectangle --- // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found
|
||||||
|
|
||||||
// Text codepoints management functions (unicode characters)
|
// Text codepoints management functions (unicode characters)
|
||||||
|
|
||||||
@@ -1536,10 +1597,10 @@ foreign lib {
|
|||||||
|
|
||||||
// Model animations loading/unloading functions
|
// Model animations loading/unloading functions
|
||||||
|
|
||||||
LoadModelAnimations :: proc(fileName: cstring, animCount: ^c.uint) -> [^]ModelAnimation --- // Load model animations from file
|
LoadModelAnimations :: proc(fileName: cstring, animCount: ^c.int) -> [^]ModelAnimation --- // Load model animations from file
|
||||||
UpdateModelAnimation :: proc(model: Model, anim: ModelAnimation, frame: c.int) --- // Update model animation pose
|
UpdateModelAnimation :: proc(model: Model, anim: ModelAnimation, frame: c.int) --- // Update model animation pose
|
||||||
UnloadModelAnimation :: proc(anim: ModelAnimation) --- // Unload animation data
|
UnloadModelAnimation :: proc(anim: ModelAnimation) --- // Unload animation data
|
||||||
UnloadModelAnimations :: proc(animations: [^]ModelAnimation, count: c.uint) --- // Unload animation array data
|
UnloadModelAnimations :: proc(animations: [^]ModelAnimation, animCount: c.int) --- // Unload animation array data
|
||||||
IsModelAnimationValid :: proc(model: Model, anim: ModelAnimation) -> bool --- // Check model animation skeleton match
|
IsModelAnimationValid :: proc(model: Model, anim: ModelAnimation) -> bool --- // Check model animation skeleton match
|
||||||
|
|
||||||
// Collision detection functions
|
// Collision detection functions
|
||||||
@@ -1563,6 +1624,7 @@ foreign lib {
|
|||||||
CloseAudioDevice :: proc() --- // Close the audio device and context
|
CloseAudioDevice :: proc() --- // Close the audio device and context
|
||||||
IsAudioDeviceReady :: proc() -> bool --- // Check if audio device has been initialized successfully
|
IsAudioDeviceReady :: proc() -> bool --- // Check if audio device has been initialized successfully
|
||||||
SetMasterVolume :: proc(volume: f32) --- // Set master volume (listener)
|
SetMasterVolume :: proc(volume: f32) --- // Set master volume (listener)
|
||||||
|
GetMasterVolume :: proc() -> f32 --- // Get master volume (listener)
|
||||||
|
|
||||||
// Wave/Sound loading/unloading functions
|
// Wave/Sound loading/unloading functions
|
||||||
|
|
||||||
@@ -1571,10 +1633,12 @@ foreign lib {
|
|||||||
IsWaveReady :: proc(wave: Wave) -> bool --- // Checks if wave data is ready
|
IsWaveReady :: proc(wave: Wave) -> bool --- // Checks if wave data is ready
|
||||||
LoadSound :: proc(fileName: cstring) -> Sound --- // Load sound from file
|
LoadSound :: proc(fileName: cstring) -> Sound --- // Load sound from file
|
||||||
LoadSoundFromWave :: proc(wave: Wave) -> Sound --- // Load sound from wave data
|
LoadSoundFromWave :: proc(wave: Wave) -> Sound --- // Load sound from wave data
|
||||||
|
LoadSoundAlias :: proc(source: Sound) -> Sound --- // Create a new sound that shares the same sample data as the source sound, does not own the sound data
|
||||||
IsSoundReady :: proc(sound: Sound) -> bool --- // Checks if a sound is ready
|
IsSoundReady :: proc(sound: Sound) -> bool --- // Checks if a sound is ready
|
||||||
UpdateSound :: proc(sound: Sound, data: rawptr, sampleCount: c.int) --- // Update sound buffer with new data
|
UpdateSound :: proc(sound: Sound, data: rawptr, frameCount: c.int) --- // Update sound buffer with new data
|
||||||
UnloadWave :: proc(wave: Wave) --- // Unload wave data
|
UnloadWave :: proc(wave: Wave) --- // Unload wave data
|
||||||
UnloadSound :: proc(sound: Sound) --- // Unload sound
|
UnloadSound :: proc(sound: Sound) --- // Unload sound
|
||||||
|
UnloadSoundAlias :: proc(alias: Sound) --- // Unload a sound alias (does not deallocate sample data)
|
||||||
ExportWave :: proc(wave: Wave, fileName: cstring) -> bool --- // Export wave data to file, returns true on success
|
ExportWave :: proc(wave: Wave, fileName: cstring) -> bool --- // Export wave data to file, returns true on success
|
||||||
ExportWaveAsCode :: proc(wave: Wave, fileName: cstring) -> bool --- // Export wave sample data to code (.h), returns true on success
|
ExportWaveAsCode :: proc(wave: Wave, fileName: cstring) -> bool --- // Export wave sample data to code (.h), returns true on success
|
||||||
|
|
||||||
@@ -1594,6 +1658,7 @@ foreign lib {
|
|||||||
LoadWaveSamples :: proc(wave: Wave) -> [^]f32 --- // Load samples data from wave as a 32bit float data array
|
LoadWaveSamples :: proc(wave: Wave) -> [^]f32 --- // Load samples data from wave as a 32bit float data array
|
||||||
UnloadWaveSamples :: proc(samples: [^]f32) --- // Unload samples data loaded with LoadWaveSamples()
|
UnloadWaveSamples :: proc(samples: [^]f32) --- // Unload samples data loaded with LoadWaveSamples()
|
||||||
|
|
||||||
|
|
||||||
// Music management functions
|
// Music management functions
|
||||||
|
|
||||||
LoadMusicStream :: proc(fileName: cstring) -> Music --- // Load music stream from file
|
LoadMusicStream :: proc(fileName: cstring) -> Music --- // Load music stream from file
|
||||||
@@ -1631,10 +1696,10 @@ foreign lib {
|
|||||||
SetAudioStreamBufferSizeDefault :: proc(size: c.int) --- // Default size for new audio streams
|
SetAudioStreamBufferSizeDefault :: proc(size: c.int) --- // Default size for new audio streams
|
||||||
SetAudioStreamCallback :: proc(stream: AudioStream, callback: AudioCallback) --- // Audio thread callback to request new data
|
SetAudioStreamCallback :: proc(stream: AudioStream, callback: AudioCallback) --- // Audio thread callback to request new data
|
||||||
|
|
||||||
AttachAudioStreamProcessor :: proc(stream: AudioStream, processor: AudioCallback) --- // Attach audio stream processor to stream
|
AttachAudioStreamProcessor :: proc(stream: AudioStream, processor: AudioCallback) --- // Attach audio stream processor to stream, receives the samples as <float>s
|
||||||
DetachAudioStreamProcessor :: proc(stream: AudioStream, processor: AudioCallback) --- // Detach audio stream processor from stream
|
DetachAudioStreamProcessor :: proc(stream: AudioStream, processor: AudioCallback) --- // Detach audio stream processor from stream
|
||||||
|
|
||||||
AttachAudioMixedProcessor :: proc(processor: AudioCallback) --- // Attach audio stream processor to the entire audio pipeline
|
AttachAudioMixedProcessor :: proc(processor: AudioCallback) --- // Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s
|
||||||
DetachAudioMixedProcessor :: proc(processor: AudioCallback) --- // Detach audio stream processor from the entire audio pipeline
|
DetachAudioMixedProcessor :: proc(processor: AudioCallback) --- // Detach audio stream processor from the entire audio pipeline
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+81
-72
@@ -2,82 +2,83 @@
|
|||||||
*
|
*
|
||||||
* rlgl v4.5 - A multi-OpenGL abstraction layer with an immediate-mode style API
|
* rlgl v4.5 - A multi-OpenGL abstraction layer with an immediate-mode style API
|
||||||
*
|
*
|
||||||
* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0)
|
* DESCRIPTION:
|
||||||
* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...)
|
* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0)
|
||||||
|
* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...)
|
||||||
*
|
*
|
||||||
* When choosing an OpenGL backend different than OpenGL 1.1, some internal buffer are
|
* ADDITIONAL NOTES:
|
||||||
* initialized on rlglInit() to accumulate vertex data.
|
* When choosing an OpenGL backend different than OpenGL 1.1, some internal buffer are
|
||||||
|
* initialized on rlglInit() to accumulate vertex data.
|
||||||
*
|
*
|
||||||
* When an internal state change is required all the stored vertex data is renderer in batch,
|
* When an internal state change is required all the stored vertex data is renderer in batch,
|
||||||
* additionally, rlDrawRenderBatchActive() could be called to force flushing of the batch.
|
* additionally, rlDrawRenderBatchActive() could be called to force flushing of the batch.
|
||||||
*
|
*
|
||||||
* Some additional resources are also loaded for convenience, here the complete list:
|
* Some resources are also loaded for convenience, here the complete list:
|
||||||
* - Default batch (RLGL.defaultBatch): RenderBatch system to accumulate vertex data
|
* - Default batch (RLGL.defaultBatch): RenderBatch system to accumulate vertex data
|
||||||
* - Default texture (RLGL.defaultTextureId): 1x1 white pixel R8G8B8A8
|
* - Default texture (RLGL.defaultTextureId): 1x1 white pixel R8G8B8A8
|
||||||
* - Default shader (RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs)
|
* - Default shader (RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs)
|
||||||
*
|
|
||||||
* Internal buffer (and additional resources) must be manually unloaded calling rlglClose().
|
|
||||||
*
|
*
|
||||||
|
* Internal buffer (and resources) must be manually unloaded calling rlglClose().
|
||||||
*
|
*
|
||||||
* CONFIGURATION:
|
* CONFIGURATION:
|
||||||
|
* #define GRAPHICS_API_OPENGL_11
|
||||||
|
* #define GRAPHICS_API_OPENGL_21
|
||||||
|
* #define GRAPHICS_API_OPENGL_33
|
||||||
|
* #define GRAPHICS_API_OPENGL_43
|
||||||
|
* #define GRAPHICS_API_OPENGL_ES2
|
||||||
|
* #define GRAPHICS_API_OPENGL_ES3
|
||||||
|
* Use selected OpenGL graphics backend, should be supported by platform
|
||||||
|
* Those preprocessor defines are only used on rlgl module, if OpenGL version is
|
||||||
|
* required by any other module, use rlGetVersion() to check it
|
||||||
*
|
*
|
||||||
* #define GRAPHICS_API_OPENGL_11
|
* #define RLGL_IMPLEMENTATION
|
||||||
* #define GRAPHICS_API_OPENGL_21
|
* Generates the implementation of the library into the included file.
|
||||||
* #define GRAPHICS_API_OPENGL_33
|
* If not defined, the library is in header only mode and can be included in other headers
|
||||||
* #define GRAPHICS_API_OPENGL_43
|
* or source files without problems. But only ONE file should hold the implementation.
|
||||||
* #define GRAPHICS_API_OPENGL_ES2
|
|
||||||
* Use selected OpenGL graphics backend, should be supported by platform
|
|
||||||
* Those preprocessor defines are only used on rlgl module, if OpenGL version is
|
|
||||||
* required by any other module, use rlGetVersion() to check it
|
|
||||||
*
|
*
|
||||||
* #define RLGL_IMPLEMENTATION
|
* #define RLGL_RENDER_TEXTURES_HINT
|
||||||
* Generates the implementation of the library into the included file.
|
* Enable framebuffer objects (fbo) support (enabled by default)
|
||||||
* If not defined, the library is in header only mode and can be included in other headers
|
* Some GPUs could not support them despite the OpenGL version
|
||||||
* or source files without problems. But only ONE file should hold the implementation.
|
|
||||||
*
|
*
|
||||||
* #define RLGL_RENDER_TEXTURES_HINT
|
* #define RLGL_SHOW_GL_DETAILS_INFO
|
||||||
* Enable framebuffer objects (fbo) support (enabled by default)
|
* Show OpenGL extensions and capabilities detailed logs on init
|
||||||
* Some GPUs could not support them despite the OpenGL version
|
|
||||||
*
|
*
|
||||||
* #define RLGL_SHOW_GL_DETAILS_INFO
|
* #define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT
|
||||||
* Show OpenGL extensions and capabilities detailed logs on init
|
* Enable debug context (only available on OpenGL 4.3)
|
||||||
*
|
*
|
||||||
* #define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT
|
* rlgl capabilities could be customized just defining some internal
|
||||||
* Enable debug context (only available on OpenGL 4.3)
|
* values before library inclusion (default values listed):
|
||||||
*
|
*
|
||||||
* rlgl capabilities could be customized just defining some internal
|
* #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 // Default internal render batch elements limits
|
||||||
* values before library inclusion (default values listed):
|
* #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering)
|
||||||
|
* #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture)
|
||||||
|
* #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
|
||||||
*
|
*
|
||||||
* #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 // Default internal render batch elements limits
|
* #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack
|
||||||
* #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering)
|
* #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported
|
||||||
* #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture)
|
* #define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance
|
||||||
* #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
|
* #define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance
|
||||||
*
|
*
|
||||||
* #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack
|
* When loading a shader, the following vertex attributes and uniform
|
||||||
* #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported
|
* location names are tried to be set automatically:
|
||||||
* #define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance
|
|
||||||
* #define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance
|
|
||||||
*
|
*
|
||||||
* When loading a shader, the following vertex attribute and uniform
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: 0
|
||||||
* location names are tried to be set automatically:
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: 1
|
||||||
*
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: 2
|
||||||
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: 0
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: 3
|
||||||
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: 1
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: 4
|
||||||
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: 2
|
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: 5
|
||||||
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: 3
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix
|
||||||
* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: 4
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix
|
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color)
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))
|
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0)
|
||||||
* #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color)
|
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1)
|
||||||
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0)
|
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2)
|
||||||
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1)
|
|
||||||
* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2)
|
|
||||||
*
|
*
|
||||||
* DEPENDENCIES:
|
* DEPENDENCIES:
|
||||||
*
|
|
||||||
* - OpenGL libraries (depending on platform and OpenGL version selected)
|
* - OpenGL libraries (depending on platform and OpenGL version selected)
|
||||||
* - GLAD OpenGL extensions loading library (only for OpenGL 3.3 Core, 4.3 Core)
|
* - GLAD OpenGL extensions loading library (only for OpenGL 3.3 Core, 4.3 Core)
|
||||||
*
|
*
|
||||||
@@ -143,7 +144,12 @@ RL_GRAPHICS_API_OPENGL_21 :: true
|
|||||||
RL_GRAPHICS_API_OPENGL_33 :: RL_GRAPHICS_API_OPENGL_21 // default currently
|
RL_GRAPHICS_API_OPENGL_33 :: RL_GRAPHICS_API_OPENGL_21 // default currently
|
||||||
RL_GRAPHICS_API_OPENGL_ES2 :: false
|
RL_GRAPHICS_API_OPENGL_ES2 :: false
|
||||||
RL_GRAPHICS_API_OPENGL_43 :: false
|
RL_GRAPHICS_API_OPENGL_43 :: false
|
||||||
|
RL_GRAPHICS_API_OPENGL_ES3 :: false
|
||||||
|
|
||||||
|
when RL_GRAPHICS_API_OPENGL_ES3 {
|
||||||
|
RL_GRAPHICS_API_OPENGL_ES2 :: true
|
||||||
|
}
|
||||||
|
|
||||||
when !RL_GRAPHICS_API_OPENGL_ES2 {
|
when !RL_GRAPHICS_API_OPENGL_ES2 {
|
||||||
// This is the maximum amount of elements (quads) per batch
|
// This is the maximum amount of elements (quads) per batch
|
||||||
// NOTE: Be careful with text, every letter maps to a quad
|
// NOTE: Be careful with text, every letter maps to a quad
|
||||||
@@ -300,6 +306,7 @@ GlVersion :: enum c.int {
|
|||||||
OPENGL_33, // OpenGL 3.3 (GLSL 330)
|
OPENGL_33, // OpenGL 3.3 (GLSL 330)
|
||||||
OPENGL_43, // OpenGL 4.3 (using GLSL 330)
|
OPENGL_43, // OpenGL 4.3 (using GLSL 330)
|
||||||
OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100)
|
OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100)
|
||||||
|
OPENGL_ES_30, // OpenGL ES 3.0 (GLSL 300 es)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -315,13 +322,13 @@ ShaderAttributeDataType :: enum c.int {
|
|||||||
// NOTE: By default up to 8 color channels defined, but it can be more
|
// NOTE: By default up to 8 color channels defined, but it can be more
|
||||||
FramebufferAttachType :: enum c.int {
|
FramebufferAttachType :: enum c.int {
|
||||||
COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0
|
COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0
|
||||||
COLOR_CHANNEL1, // Framebuffer attachment type: color 1
|
COLOR_CHANNEL1 = 1, // Framebuffer attachment type: color 1
|
||||||
COLOR_CHANNEL2, // Framebuffer attachment type: color 2
|
COLOR_CHANNEL2 = 2, // Framebuffer attachment type: color 2
|
||||||
COLOR_CHANNEL3, // Framebuffer attachment type: color 3
|
COLOR_CHANNEL3 = 3, // Framebuffer attachment type: color 3
|
||||||
COLOR_CHANNEL4, // Framebuffer attachment type: color 4
|
COLOR_CHANNEL4 = 4, // Framebuffer attachment type: color 4
|
||||||
COLOR_CHANNEL5, // Framebuffer attachment type: color 5
|
COLOR_CHANNEL5 = 5, // Framebuffer attachment type: color 5
|
||||||
COLOR_CHANNEL6, // Framebuffer attachment type: color 6
|
COLOR_CHANNEL6 = 6, // Framebuffer attachment type: color 6
|
||||||
COLOR_CHANNEL7, // Framebuffer attachment type: color 7
|
COLOR_CHANNEL7 = 7, // Framebuffer attachment type: color 7
|
||||||
DEPTH = 100, // Framebuffer attachment type: depth
|
DEPTH = 100, // Framebuffer attachment type: depth
|
||||||
STENCIL = 200, // Framebuffer attachment type: stencil
|
STENCIL = 200, // Framebuffer attachment type: stencil
|
||||||
}
|
}
|
||||||
@@ -329,11 +336,11 @@ FramebufferAttachType :: enum c.int {
|
|||||||
// Framebuffer texture attachment type
|
// Framebuffer texture attachment type
|
||||||
FramebufferAttachTextureType :: enum c.int {
|
FramebufferAttachTextureType :: enum c.int {
|
||||||
CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side
|
CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side
|
||||||
CUBEMAP_NEGATIVE_X, // Framebuffer texture attachment type: cubemap, -X side
|
CUBEMAP_NEGATIVE_X = 1, // Framebuffer texture attachment type: cubemap, -X side
|
||||||
CUBEMAP_POSITIVE_Y, // Framebuffer texture attachment type: cubemap, +Y side
|
CUBEMAP_POSITIVE_Y = 2, // Framebuffer texture attachment type: cubemap, +Y side
|
||||||
CUBEMAP_NEGATIVE_Y, // Framebuffer texture attachment type: cubemap, -Y side
|
CUBEMAP_NEGATIVE_Y = 3, // Framebuffer texture attachment type: cubemap, -Y side
|
||||||
CUBEMAP_POSITIVE_Z, // Framebuffer texture attachment type: cubemap, +Z side
|
CUBEMAP_POSITIVE_Z = 4, // Framebuffer texture attachment type: cubemap, +Z side
|
||||||
CUBEMAP_NEGATIVE_Z, // 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
|
TEXTURE2D = 100, // Framebuffer texture attachment type: texture2d
|
||||||
RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer
|
RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer
|
||||||
}
|
}
|
||||||
@@ -411,6 +418,7 @@ foreign lib {
|
|||||||
rlEnableFramebuffer :: proc(id: c.uint) --- // Enable render texture (fbo)
|
rlEnableFramebuffer :: proc(id: c.uint) --- // Enable render texture (fbo)
|
||||||
rlDisableFramebuffer :: proc() --- // Disable render texture (fbo), return to default framebuffer
|
rlDisableFramebuffer :: proc() --- // Disable render texture (fbo), return to default framebuffer
|
||||||
rlActiveDrawBuffers :: proc(count: c.int) --- // Activate multiple draw color buffers
|
rlActiveDrawBuffers :: proc(count: c.int) --- // Activate multiple draw color buffers
|
||||||
|
rlBlitFramebuffer :: proc(srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, bufferMask: c.int) --- // Blit active framebuffer to main framebuffer
|
||||||
|
|
||||||
// General render state
|
// General render state
|
||||||
rlDisableColorBlend :: proc() --- // Disable color blending
|
rlDisableColorBlend :: proc() --- // Disable color blending
|
||||||
@@ -425,7 +433,8 @@ foreign lib {
|
|||||||
rlDisableScissorTest :: proc() --- // Disable scissor test
|
rlDisableScissorTest :: proc() --- // Disable scissor test
|
||||||
rlScissor :: proc(x, y, width, height: c.int) --- // Scissor test
|
rlScissor :: proc(x, y, width, height: c.int) --- // Scissor test
|
||||||
rlEnableWireMode :: proc() --- // Enable wire mode
|
rlEnableWireMode :: proc() --- // Enable wire mode
|
||||||
rlDisableWireMode :: proc() --- // Disable wire mode
|
rlEnablePointMode :: proc() --- // Enable point mode
|
||||||
|
rlDisableWireMode :: proc() --- // Disable wire and point modes
|
||||||
rlSetLineWidth :: proc(width: f32) --- // Set the line drawing width
|
rlSetLineWidth :: proc(width: f32) --- // Set the line drawing width
|
||||||
rlGetLineWidth :: proc() -> f32 --- // Get the line drawing width
|
rlGetLineWidth :: proc() -> f32 --- // Get the line drawing width
|
||||||
rlEnableSmoothLines :: proc() --- // Enable line aliasing
|
rlEnableSmoothLines :: proc() --- // Enable line aliasing
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user