diff --git a/.vscode/launch.json b/.vscode/launch.json index 0790fd6..4b13ea2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -49,6 +49,15 @@ "args": [], "cwd": "${workspaceFolder}/project/auxillary/vis_ast/dependencies/temp/raylib-master/src/", "visualizerFile": "${workspaceFolder}/scripts/gencpp.natvis" + }, + { + "type": "cppvsdbg", + "request": "launch", + "name": "Debug VIS AST", + "program": "${workspaceFolder}/project/auxillary/vis_ast/binaries/vis_ast.exe", + "args": [], + "cwd": "${workspaceFolder}/project/auxillary/vis_ast/binaries/", + "visualizerFile": "${workspaceFolder}/scripts/gencpp.natvis" } ] } diff --git a/project/auxillary/vis_ast/build.ps1 b/project/auxillary/vis_ast/build.ps1 index 9cb2028..0a127f7 100644 --- a/project/auxillary/vis_ast/build.ps1 +++ b/project/auxillary/vis_ast/build.ps1 @@ -15,6 +15,7 @@ $path_vis_root = Join-Path $path_aux 'vis_ast' $path_binaries = Join-Path $path_vis_root 'binaries' $path_build = Join-Path $path_vis_root 'build' $path_code = Join-Path $path_vis_root 'code' +$path_deps = Join-Path $path_vis_root 'dependencies' $path_win32 = Join-Path $path_code 'win32' Import-Module $target_arch @@ -66,10 +67,26 @@ if ( (Test-Path $path_binaries) -eq $false ) { New-Item $path_binaries -ItemType Directory } +$path_raylib = join-path $path_deps 'raylib' +$path_raylib_inc = join-path $path_raylib 'include' +$path_raylib_lib = join-path $path_raylib 'lib' + +$path_raylib_dll = join-path $path_raylib_lib 'raylib.dll' +$path_raylib_dll_bin = join-path $path_binaries 'raylib.dll' + +Copy-Item $path_raylib_dll $path_raylib_dll_bin -Force + $includes = @( - $paht_code + $path_code, + $path_deps ) +write-host $path_code + +foreach ( $include in $includes ) { + Write-Host 'include: ' $include +} + # Microsoft $lib_gdi32 = 'Gdi32.lib' $lib_xinput = 'Xinput.lib' @@ -82,6 +99,7 @@ $compiler_args = @( ($flag_define + 'UNICODE'), ($flag_define + '_UNICODE') ( $flag_define + 'INTELLISENSE_DIRECTIVES=0'), + ( $flag_define + 'RL_USE_LIBTYPE_SHARED') # ($flag_set_stack_size + $stack_size) $flag_wall $flag_warnings_as_errors @@ -97,7 +115,9 @@ else { $linker_args = @( $flag_link_win_subsystem_windows, - $flag_link_optiiize_references + $flag_link_optiiize_references, + + ( join-path $path_raylib_lib 'raylib.lib' ) ) $unit = join-path $path_code 'vis_ast_windows.cpp' diff --git a/project/auxillary/vis_ast/clean.ps1 b/project/auxillary/vis_ast/clean.ps1 index e69de29..3eec3fe 100644 --- a/project/auxillary/vis_ast/clean.ps1 +++ b/project/auxillary/vis_ast/clean.ps1 @@ -0,0 +1,22 @@ +$path_root = git rev-parse --show-toplevel +$path_scripts = Join-Path $path_root 'scripts' + +$target_arch = Join-Path $path_scripts 'helpers/target_arch.psm1' +$devshell = Join-Path $path_scripts 'helpers/devshell.ps1' +$format_cpp = Join-Path $path_scripts 'helpers/format_cpp.psm1' +$incremental_checks = Join-Path $path_scripts 'helpers/incremental_checks.ps1' +$vendor_toolchain = Join-Path $path_scripts 'helpers/vendor_toolchain.ps1' + +$path_project = Join-Path $path_root 'project' +$path_aux = Join-Path $path_project 'auxillary' +$path_vis_root = Join-Path $path_aux 'vis_ast' +$path_binaries = Join-Path $path_vis_root 'binaries' +$path_build = Join-Path $path_vis_root 'build' + +if ( test-path $path_build ) { + remove-item $path_build -Recurse +} + +if ( test-path $path_binaries ) { + remove-item $path_binaries -recurse +} diff --git a/project/auxillary/vis_ast/code/platform/win32/launch.cpp b/project/auxillary/vis_ast/code/platform/win32/launch.cpp index deb5982..5769333 100644 --- a/project/auxillary/vis_ast/code/platform/win32/launch.cpp +++ b/project/auxillary/vis_ast/code/platform/win32/launch.cpp @@ -1,8 +1,45 @@ #if INTELLISENSE_DIRECTIVES #include "win32.hpp" +#include "raylib/include/raylib.h" #endif int __stdcall WinMain( HINSTANCE instance, HINSTANCE prev_instance, char* commandline, int num_cmd_show) { + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + rl::init_window(screenWidth, screenHeight, "raylib [core] example - basic window"); + + rl::set_target_fps(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!rl::window_should_close()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + // TODO: Update your variables here + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + rl::begin_drawing(); + + rl::clear_background(RL_RAYWHITE); + + rl::draw_text("Congrats! You created your first window!", 190, 200, 20, RL_LIGHTGRAY); + + rl::end_drawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + rl::close_window(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + return 0; } + diff --git a/project/auxillary/vis_ast/code/vis_ast_windows.cpp b/project/auxillary/vis_ast/code/vis_ast_windows.cpp index 5ff9902..906451b 100644 --- a/project/auxillary/vis_ast/code/vis_ast_windows.cpp +++ b/project/auxillary/vis_ast/code/vis_ast_windows.cpp @@ -1,3 +1,5 @@ + + #include "platform/vendor/arch.hpp" #include "platform/vendor/compiler.hpp" #include "platform/vendor/compiler_ignores.hpp" @@ -7,4 +9,6 @@ #include "platform/win32/types.hpp" +#include "raylib/include/raylib.h" + #include "platform/win32/launch.cpp" diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/config.h b/project/auxillary/vis_ast/dependencies/raylib/include/config.h index af4d3c0..3cd07f3 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/config.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/config.h @@ -25,12 +25,12 @@ * **********************************************************************************************/ -#ifndef RL_CONFIG_H -#define RL_CONFIG_H +#ifndef CONFIG_H +#define CONFIG_H //------------------------------------------------------------------------------------ // Module selection - Some modules could be avoided -// Mandatory modules: rcore, RLGL_, utils +// Mandatory modules: rcore, rlgl, utils //------------------------------------------------------------------------------------ #define RL_SUPPORT_MODULE_RSHAPES 1 #define RL_SUPPORT_MODULE_RTEXTURES 1 @@ -41,12 +41,12 @@ //------------------------------------------------------------------------------------ // Module: rcore - Configuration Flags //------------------------------------------------------------------------------------ -// RL_Camera module is included (rcamera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital +// Camera module is included (rcamera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital #define RL_SUPPORT_CAMERA_SYSTEM 1 // Gestures module is included (rgestures.h) to support gestures detection: tap, hold, swipe, drag #define RL_SUPPORT_GESTURES_SYSTEM 1 // Include pseudo-random numbers generator (rprand.h), based on Xoshiro128** and SplitMix64 -#define SUPPORT_RPRAND_GENERATOR 1 +#define RL_SUPPORT_RPRAND_GENERATOR 1 // Mouse gestures are directly mapped like touches and processed by gestures system #define RL_SUPPORT_MOUSE_GESTURES 1 // Reconfigure standard input to receive key inputs, works with SSH connection. @@ -55,21 +55,21 @@ // However, it can also reduce overall system performance, because the thread scheduler switches tasks more often. #define RL_SUPPORT_WINMM_HIGHRES_TIMER 1 // Use busy wait loop for timing sync, if not defined, a high-resolution timer is set up and used -//#define SUPPORT_BUSY_WAIT_LOOP 1 +//#define RL_SUPPORT_BUSY_WAIT_LOOP 1 // Use a partial-busy wait loop, in this case frame sleeps for most of the time, but then runs a busy loop at the end for accuracy #define RL_SUPPORT_PARTIALBUSY_WAIT_LOOP 1 // Allow automatic screen capture of current screen pressing F12, defined in KeyCallback() #define RL_SUPPORT_SCREEN_CAPTURE 1 // Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback() #define RL_SUPPORT_GIF_RECORDING 1 -// Support RL_CompressData() and RL_DecompressData() functions +// Support CompressData() and DecompressData() functions #define RL_SUPPORT_COMPRESSION_API 1 // Support automatic generated events, loading and recording of those events when required #define RL_SUPPORT_AUTOMATION_EVENTS 1 // Support custom frame control, only for advance users -// By default RL_EndDrawing() does this job: draws everything + RL_SwapScreenBuffer() + manage frame timing + RL_PollInputEvents() +// By default end_drawing() does this job: draws everything + swap_screen_buffer() + manage frame timing + poll_input_events() // Enabling this flag allows manual control of the frame processes, use at your own risk -//#define SUPPORT_CUSTOM_FRAME_CONTROL 1 +//#define RL_SUPPORT_CUSTOM_FRAME_CONTROL 1 // rcore: Configuration values //------------------------------------------------------------------------------------ @@ -90,7 +90,7 @@ #define RL_MAX_AUTOMATION_EVENTS 16384 // Maximum number of automation events to record //------------------------------------------------------------------------------------ -// Module: RLGL_ - Configuration values +// Module: rlgl - Configuration values //------------------------------------------------------------------------------------ // Enable OpenGL Debug Context (only available on OpenGL 4.3) @@ -102,9 +102,9 @@ //#define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 4096 // Default internal render batch elements limits #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 (RL_SetShaderValueTexture()) +#define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (set_shader_value_texture()) -#define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal RL_Matrix stack +#define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported @@ -168,7 +168,7 @@ // Support procedural image generation functionality (gradient, spot, perlin-noise, cellular) #define RL_SUPPORT_IMAGE_GENERATION 1 // Support multiple image editing functions to scale, adjust colors, flip, draw on images, crop... -// If not defined, still some functions are supported: RL_ImageFormat(), RL_ImageCrop(), RL_ImageToPOT() +// If not defined, still some functions are supported: image_format(), image_crop(), image_to_pot() #define RL_SUPPORT_IMAGE_MANIPULATION 1 @@ -183,18 +183,18 @@ #define RL_SUPPORT_FILEFORMAT_TTF 1 // Support text management functions -// If not defined, still some functions are supported: RL_TextLength(), RL_TextFormat() +// If not defined, still some functions are supported: text_length(), TextFormat() #define RL_SUPPORT_TEXT_MANIPULATION 1 -// On font atlas image generation [RL_GenImageFontAtlas()], add a 3x3 pixels white rectangle +// On font atlas image generation [gen_image_font_atlas()], add a 3x3 pixels white rectangle // at the bottom-right corner of the atlas. It can be useful to for shapes drawing, to allow -// drawing text and shapes with a single draw call [RL_SetShapesTexture()]. +// drawing text and shapes with a single draw call [set_shapes_texture()]. #define RL_SUPPORT_FONT_ATLAS_WHITE_REC 1 // rtext: Configuration values //------------------------------------------------------------------------------------ -#define RL_MAX_TEXT_BUFFER_LENGTH 1024 // RL_Size of internal static buffers used on some functions: - // RL_TextFormat(), RL_TextSubtext(), RL_TextToUpper(), RL_TextToLower(), RL_TextToPascal(), TextSplit() +#define RL_MAX_TEXT_BUFFER_LENGTH 1024 // Size of internal static buffers used on some functions: + // TextFormat(), TextSubtext(), TextToUpper(), TextToLower(), TextToPascal(), TextSplit() #define RL_MAX_TEXTSPLIT_COUNT 128 // Maximum number of substrings to split: TextSplit() @@ -243,7 +243,7 @@ // Standard file io library (stdio.h) included #define RL_SUPPORT_STANDARD_FILEIO 1 // Show RL_TRACELOG() output messages -// NOTE: By default RL_LOG_DEBUG traces not shown +// NOTE: By default LOG_DEBUG traces not shown #define RL_SUPPORT_TRACELOG 1 //#define RL_SUPPORT_TRACELOG_DEBUG 1 @@ -251,12 +251,35 @@ //------------------------------------------------------------------------------------ #define RL_MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message -#endif // RL_CONFIG_H +#endif // CONFIG_H -#if defined(__cplusplus) - #define RL_NS_BEGIN namespace raylib { +// Indicates of raylib has been refactored +#ifndef RL_REFACTORED_CPP +#define RL_REFACTORED_CPP +#endif + +#define RL_USE_CPP_NAMESPACE 1 +#define RL_USE_CPP_MANGLING 1 + +#if RL_USE_CPP_NAMESPACE && defined(__cplusplus) + #pragma message("USING CPP NAMESPACE") + #define RL_NS_BEGIN namespace rl { #define RL_NS_END } #else #define RL_NS_BEGIN #define RL_NS_END #endif + +#if RL_USE_CPP_MANGLING && defined(__cplusplus) + #pragma message("USING CPP MANGLING") + #define RL_EXTERN_C_BEGIN + #define RL_EXTERN_C_END +#else + #ifdef __cplusplus + #define RL_EXTERN_C_BEGIN extern "C" { + #define RL_EXTERN_C_END } + #else + #define RL_EXTERN_C_BEGIN + #define RL_EXTERN_C_END + #endif +#endif \ No newline at end of file diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/raylib.h b/project/auxillary/vis_ast/dependencies/raylib/include/raylib.h index 4504fc2..62f58a2 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/raylib.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/raylib.h @@ -1,6 +1,6 @@ /********************************************************************************************** * -* raylib v5.0 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) +* raylib v5.1-dev - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) * * FEATURES: * - NO external dependencies, all required libraries included with raylib @@ -8,27 +8,27 @@ * 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_] +* - 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 RL_Model shaders and Postprocessing shaders -* - Powerful math module for Vector, RL_Matrix and RL_Quaternion operations: [raymath] +* - 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 RL_Font is loaded on RL_InitWindow()->LoadFontDefault() [core, text] -* - One default RL_Texture2D is loaded on RLGL_Init(), 1x1 white pixel R8G8B8A8 [RLGL_] (OpenGL 3.3 or ES2) -* - One default RL_Shader is loaded on RLGL_Init()->RLGL_LoadShaderDefault() [RLGL_] (OpenGL 3.3 or ES2) -* - One default RenderBatch is loaded on RLGL_Init()->RLGL_LoadRenderBatch() [RLGL_] (OpenGL 3.3 or ES2) +* - One default Font is loaded on init_window()->LoadFontDefault() [core, text] +* - One default Texture2d is loaded on init(), 1x1 white pixel R8G8B8A8 [rlgl] (OpenGL 3.3 or ES2) +* - One default Shader is loaded on init()->load_shader_default() [rlgl] (OpenGL 3.3 or ES2) +* - One default RenderBatch is loaded on init()->load_render_batch() [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) +* [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): @@ -79,12 +79,12 @@ #ifndef RAYLIB_H #define RAYLIB_H -#include // Required for: va_list - Only used by RL_TraceLogCallback +#include // Required for: va_list - Only used by TraceLogCallback #define RAYLIB_VERSION_MAJOR 5 -#define RAYLIB_VERSION_MINOR 0 +#define RAYLIB_VERSION_MINOR 1 #define RAYLIB_VERSION_PATCH 0 -#define RAYLIB_VERSION "5.0" +#define RAYLIB_VERSION "5.1-dev" // Function specifiers in case library is build/used as a shared library (Windows) // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll @@ -93,8 +93,10 @@ #if defined(__TINYC__) #define __declspec(x) __attribute__((x)) #endif + #pragma message("RLAPI: _declspec(dllexport)") #define RLAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) #elif defined(RL_USE_LIBTYPE_SHARED) + #pragma message("RLAPI: _declspec(dllimport)") #define RLAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) #endif #endif @@ -140,6 +142,16 @@ #define RL_CLITERAL(type) (type) #endif +// Used for initializer nonsense on cpp. +#if __cplusplus +#define CAST(type) type +#define RL_NS(id) rl::id +#else +#define CAST(type) (type) +#define RL_NS(id) id +#endif + + // Some compilers (mostly macos clang) default to C++98, // where aggregate initialization can't be used // So, give a more clear error stating how to fix this @@ -148,7 +160,7 @@ #endif // NOTE: We set some defines with some data types declared by raylib -// Other modules (raymath, RLGL_) also require some of those types, so, +// Other modules (raymath, rlgl) also require some of those types, so, // to be able to use those other modules as standalone (not depending on raylib) // this defines are very useful for internal check and avoid type (re)definitions #define RL_COLOR_TYPE @@ -161,33 +173,33 @@ // Some Basic Colors // NOTE: Custom raylib color palette for amazing visuals on RL_WHITE background -#define RL_LIGHTGRAY RL_CLITERAL(RL_Color){ 200, 200, 200, 255 } // Light Gray -#define RL_GRAY RL_CLITERAL(RL_Color){ 130, 130, 130, 255 } // Gray -#define RL_DARKGRAY RL_CLITERAL(RL_Color){ 80, 80, 80, 255 } // Dark Gray -#define RL_YELLOW RL_CLITERAL(RL_Color){ 253, 249, 0, 255 } // Yellow -#define RL_GOLD RL_CLITERAL(RL_Color){ 255, 203, 0, 255 } // Gold -#define RL_ORANGE RL_CLITERAL(RL_Color){ 255, 161, 0, 255 } // Orange -#define RL_PINK RL_CLITERAL(RL_Color){ 255, 109, 194, 255 } // Pink -#define RL_RED RL_CLITERAL(RL_Color){ 230, 41, 55, 255 } // Red -#define RL_MAROON RL_CLITERAL(RL_Color){ 190, 33, 55, 255 } // Maroon -#define RL_GREEN RL_CLITERAL(RL_Color){ 0, 228, 48, 255 } // Green -#define RL_LIME RL_CLITERAL(RL_Color){ 0, 158, 47, 255 } // Lime -#define RL_DARKGREEN RL_CLITERAL(RL_Color){ 0, 117, 44, 255 } // Dark Green -#define RL_SKYBLUE RL_CLITERAL(RL_Color){ 102, 191, 255, 255 } // Sky Blue -#define RL_BLUE RL_CLITERAL(RL_Color){ 0, 121, 241, 255 } // Blue -#define RL_DARKBLUE RL_CLITERAL(RL_Color){ 0, 82, 172, 255 } // Dark Blue -#define RL_PURPLE RL_CLITERAL(RL_Color){ 200, 122, 255, 255 } // Purple -#define RL_VIOLET RL_CLITERAL(RL_Color){ 135, 60, 190, 255 } // Violet -#define RL_DARKPURPLE RL_CLITERAL(RL_Color){ 112, 31, 126, 255 } // Dark Purple -#define RL_BEIGE RL_CLITERAL(RL_Color){ 211, 176, 131, 255 } // Beige -#define RL_BROWN RL_CLITERAL(RL_Color){ 127, 106, 79, 255 } // Brown -#define RL_DARKBROWN RL_CLITERAL(RL_Color){ 76, 63, 47, 255 } // Dark Brown +#define RL_LIGHTGRAY RL_CLITERAL(RL_NS(Color)){ 200, 200, 200, 255 } // Light Gray +#define RL_GRAY RL_CLITERAL(RL_NS(Color)){ 130, 130, 130, 255 } // Gray +#define RL_DARKGRAY RL_CLITERAL(RL_NS(Color)){ 80, 80, 80, 255 } // Dark Gray +#define RL_YELLOW RL_CLITERAL(RL_NS(Color)){ 253, 249, 0, 255 } // Yellow +#define RL_GOLD RL_CLITERAL(RL_NS(Color)){ 255, 203, 0, 255 } // Gold +#define RL_ORANGE RL_CLITERAL(RL_NS(Color)){ 255, 161, 0, 255 } // Orange +#define RL_PINK RL_CLITERAL(RL_NS(Color)){ 255, 109, 194, 255 } // Pink +#define RL_RED RL_CLITERAL(RL_NS(Color)){ 230, 41, 55, 255 } // Red +#define RL_MAROON RL_CLITERAL(RL_NS(Color)){ 190, 33, 55, 255 } // Maroon +#define RL_GREEN RL_CLITERAL(RL_NS(Color)){ 0, 228, 48, 255 } // Green +#define RL_LIME RL_CLITERAL(RL_NS(Color)){ 0, 158, 47, 255 } // Lime +#define RL_DARKGREEN RL_CLITERAL(RL_NS(Color)){ 0, 117, 44, 255 } // Dark Green +#define RL_SKYBLUE RL_CLITERAL(RL_NS(Color)){ 102, 191, 255, 255 } // Sky Blue +#define RL_BLUE RL_CLITERAL(RL_NS(Color)){ 0, 121, 241, 255 } // Blue +#define RL_DARKBLUE RL_CLITERAL(RL_NS(Color)){ 0, 82, 172, 255 } // Dark Blue +#define RL_PURPLE RL_CLITERAL(RL_NS(Color)){ 200, 122, 255, 255 } // Purple +#define RL_VIOLET RL_CLITERAL(RL_NS(Color)){ 135, 60, 190, 255 } // Violet +#define RL_DARKPURPLE RL_CLITERAL(RL_NS(Color)){ 112, 31, 126, 255 } // Dark Purple +#define RL_BEIGE RL_CLITERAL(RL_NS(Color)){ 211, 176, 131, 255 } // Beige +#define RL_BROWN RL_CLITERAL(RL_NS(Color)){ 127, 106, 79, 255 } // Brown +#define RL_DARKBROWN RL_CLITERAL(RL_NS(Color)){ 76, 63, 47, 255 } // Dark Brown -#define RL_WHITE RL_CLITERAL(RL_Color){ 255, 255, 255, 255 } // White -#define RL_BLACK RL_CLITERAL(RL_Color){ 0, 0, 0, 255 } // Black -#define RL_BLANK RL_CLITERAL(RL_Color){ 0, 0, 0, 0 } // Blank (Transparent) -#define RL_MAGENTA RL_CLITERAL(RL_Color){ 255, 0, 255, 255 } // Magenta -#define RL_RAYWHITE RL_CLITERAL(RL_Color){ 245, 245, 245, 255 } // My own White (raylib logo) +#define RL_WHITE RL_CLITERAL(RL_NS(Color)){ 255, 255, 255, 255 } // White +#define RL_BLACK RL_CLITERAL(RL_NS(Color)){ 0, 0, 0, 255 } // Black +#define RL_BLANK RL_CLITERAL(RL_NS(Color)){ 0, 0, 0, 0 } // Blank (Transparent) +#define RL_MAGENTA RL_CLITERAL(RL_NS(Color)){ 255, 0, 255, 255 } // Magenta +#define RL_RAYWHITE RL_CLITERAL(RL_NS(Color)){ 245, 245, 245, 255 } // My own White (raylib logo) //---------------------------------------------------------------------------------- // Structures Definition @@ -200,138 +212,142 @@ #define RL_BOOL_TYPE #endif -// RL_Vector2, 2 components -typedef struct RL_Vector2 { +#include "config.h" + +RL_NS_BEGIN + +// Vector2, 2 components +typedef struct Vector2 { float x; // Vector x component float y; // Vector y component -} RL_Vector2; +} Vector2; -// RL_Vector3, 3 components -typedef struct RL_Vector3 { +// Vector3, 3 components +typedef struct Vector3 { float x; // Vector x component float y; // Vector y component float z; // Vector z component -} RL_Vector3; +} Vector3; -// RL_Vector4, 4 components -typedef struct RL_Vector4 { +// Vector4, 4 components +typedef struct Vector4 { float x; // Vector x component float y; // Vector y component float z; // Vector z component float w; // Vector w component -} RL_Vector4; +} Vector4; -// RL_Quaternion, 4 components (RL_Vector4 alias) -typedef RL_Vector4 RL_Quaternion; +// Quaternion, 4 components (Vector4 alias) +typedef Vector4 Quaternion; -// RL_Matrix, 4x4 components, column major, OpenGL style, right-handed -typedef struct RL_Matrix { - float m0, m4, m8, m12; // RL_Matrix first row (4 components) - float m1, m5, m9, m13; // RL_Matrix second row (4 components) - float m2, m6, m10, m14; // RL_Matrix third row (4 components) - float m3, m7, m11, m15; // RL_Matrix fourth row (4 components) -} RL_Matrix; +// Matrix, 4x4 components, column major, OpenGL style, right-handed +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; -// RL_Color, 4 components, R8G8B8A8 (32bit) -typedef struct RL_Color { - unsigned char r; // RL_Color red value - unsigned char g; // RL_Color green value - unsigned char b; // RL_Color blue value - unsigned char a; // RL_Color alpha value -} RL_Color; +// Color, 4 components, R8G8B8A8 (32bit) +typedef struct Color { + unsigned char r; // Color red value + unsigned char g; // Color green value + unsigned char b; // Color blue value + unsigned char a; // Color alpha value +} Color; -// RL_Rectangle, 4 components -typedef struct RL_Rectangle { - float x; // RL_Rectangle top-left corner position x - float y; // RL_Rectangle top-left corner position y - float width; // RL_Rectangle width - float height; // RL_Rectangle height -} RL_Rectangle; +// Rectangle, 4 components +typedef struct Rectangle { + float x; // Rectangle top-left corner position x + float y; // Rectangle top-left corner position y + float width; // Rectangle width + float height; // Rectangle height +} Rectangle; -// RL_Image, pixel data stored in CPU memory (RAM) -typedef struct RL_Image { - void *data; // RL_Image raw data - int width; // RL_Image base width - int height; // RL_Image base height +// Image, pixel data stored in CPU memory (RAM) +typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (RL_PixelFormat type) -} RL_Image; + int format; // Data format (PixelFormat type) +} Image; -// RL_Texture, tex data stored in GPU memory (VRAM) -typedef struct RL_Texture { +// Texture, tex data stored in GPU memory (VRAM) +typedef struct Texture { unsigned int id; // OpenGL texture id - int width; // RL_Texture base width - int height; // RL_Texture base height + int width; // Texture base width + int height; // Texture base height int mipmaps; // Mipmap levels, 1 by default - int format; // Data format (RL_PixelFormat type) -} RL_Texture; + int format; // Data format (PixelFormat type) +} Texture; -// RL_Texture2D, same as RL_Texture -typedef RL_Texture RL_Texture2D; +// Texture2d, same as Texture +typedef Texture Texture2d; -// RL_TextureCubemap, same as RL_Texture -typedef RL_Texture RL_TextureCubemap; +// Texture_Cubemap, same as Texture +typedef Texture Texture_Cubemap; -// RL_RenderTexture, fbo for texture rendering -typedef struct RL_RenderTexture { +// Render_Texture, fbo for texture rendering +typedef struct Render_Texture { unsigned int id; // OpenGL framebuffer object id - RL_Texture texture; // RL_Color buffer attachment texture - RL_Texture depth; // Depth buffer attachment texture -} RL_RenderTexture; + Texture texture; // Color buffer attachment texture + Texture depth; // Depth buffer attachment texture +} Render_Texture; -// RL_RenderTexture2D, same as RL_RenderTexture -typedef RL_RenderTexture RL_RenderTexture2D; +// Render_Texture2D, same as Render_Texture +typedef Render_Texture Render_Texture2D; -// RL_NPatchInfo, n-patch layout info -typedef struct RL_NPatchInfo { - RL_Rectangle source; // RL_Texture source rectangle +// N_Patch_Info, n-patch layout info +typedef struct N_Patch_Info { + Rectangle source; // Texture source rectangle int left; // Left border offset int top; // Top border offset int right; // Right border offset int bottom; // Bottom border offset int layout; // Layout of the n-patch: 3x3, 1x3 or 3x1 -} RL_NPatchInfo; +} N_Patch_Info; -// RL_GlyphInfo, font characters glyphs info -typedef struct RL_GlyphInfo { +// Glyph_Info, font characters glyphs info +typedef struct Glyph_Info { int value; // Character value (Unicode) int offsetX; // Character offset X when drawing int offsetY; // Character offset Y when drawing int advanceX; // Character advance position X - RL_Image image; // Character image data -} RL_GlyphInfo; + Image image; // Character image data +} Glyph_Info; -// RL_Font, font texture and RL_GlyphInfo array data -typedef struct RL_Font { +// Font, font texture and Glyph_Info array data +typedef struct Font { int baseSize; // Base size (default chars height) int glyphCount; // Number of glyph characters int glyphPadding; // Padding around the glyph characters - RL_Texture2D texture; // RL_Texture atlas containing the glyphs - RL_Rectangle *recs; // Rectangles in texture for the glyphs - RL_GlyphInfo *glyphs; // Glyphs info data -} RL_Font; + Texture2d texture; // Texture atlas containing the glyphs + Rectangle *recs; // Rectangles in texture for the glyphs + Glyph_Info *glyphs; // Glyphs info data +} Font; -// RL_Camera, defines position/orientation in 3d space -typedef struct RL_Camera3D { - RL_Vector3 position; // RL_Camera position - RL_Vector3 target; // RL_Camera target it looks-at - RL_Vector3 up; // RL_Camera up vector (rotation over its axis) - float fovy; // RL_Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic - int projection; // RL_Camera projection: RL_CAMERA_PERSPECTIVE or RL_CAMERA_ORTHOGRAPHIC -} RL_Camera3D; +// Camera, defines position/orientation in 3d space +typedef struct Camera3D { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic + int projection; // Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC +} Camera3D; -typedef RL_Camera3D RL_Camera; // RL_Camera type fallback, defaults to RL_Camera3D +typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D -// RL_Camera2D, defines position/orientation in 2d space -typedef struct RL_Camera2D { - RL_Vector2 offset; // RL_Camera offset (displacement from target) - RL_Vector2 target; // RL_Camera target (rotation and zoom origin) - float rotation; // RL_Camera rotation in degrees - float zoom; // RL_Camera zoom (scaling), should be 1.0f by default -} RL_Camera2D; +// Camera2D, defines position/orientation in 2d space +typedef struct Camera2D { + Vector2 offset; // Camera offset (displacement from target) + Vector2 target; // Camera target (rotation and zoom origin) + float rotation; // Camera rotation in degrees + float zoom; // Camera zoom (scaling), should be 1.0f by default +} Camera2D; -// RL_Mesh, vertex data and vao/vbo -typedef struct RL_Mesh { +// Mesh, vertex data and vao/vbo +typedef struct Mesh { int vertexCount; // Number of vertices stored in arrays int triangleCount; // Number of triangles stored (indexed or not) @@ -353,128 +369,128 @@ typedef struct RL_Mesh { // OpenGL identifiers unsigned int vaoId; // OpenGL Vertex Array Object id unsigned int *vboId; // OpenGL Vertex Buffer Objects id (default vertex data) -} RL_Mesh; +} Mesh; -// RL_Shader -typedef struct RL_Shader { - unsigned int id; // RL_Shader program id - int *locs; // RL_Shader locations array (RL_MAX_SHADER_LOCATIONS) -} RL_Shader; +// Shader +typedef struct Shader { + unsigned int id; // Shader program id + int *locs; // Shader locations array (RL_MAX_SHADER_LOCATIONS) +} Shader; -// RL_MaterialMap -typedef struct RL_MaterialMap { - RL_Texture2D texture; // RL_Material map texture - RL_Color color; // RL_Material map color - float value; // RL_Material map value -} RL_MaterialMap; +// Material_Map +typedef struct Material_Map { + Texture2d texture; // Material map texture + Color color; // Material map color + float value; // Material map value +} Material_Map; -// RL_Material, includes shader and maps -typedef struct RL_Material { - RL_Shader shader; // RL_Material shader - RL_MaterialMap *maps; // RL_Material maps array (RL_MAX_MATERIAL_MAPS) - float params[4]; // RL_Material generic parameters (if required) -} RL_Material; +// Material, includes shader and maps +typedef struct Material { + Shader shader; // Material shader + Material_Map *maps; // Material maps array (RL_MAX_MATERIAL_MAPS) + float params[4]; // Material generic parameters (if required) +} Material; -// RL_Transform, vertex transformation data -typedef struct RL_Transform { - RL_Vector3 translation; // Translation - RL_Quaternion rotation; // Rotation - RL_Vector3 scale; // Scale -} RL_Transform; +// Transform, vertex transformation data +typedef struct Transform { + Vector3 translation; // Translation + Quaternion rotation; // Rotation + Vector3 scale; // Scale +} Transform; // Bone, skeletal animation bone -typedef struct RL_BoneInfo { +typedef struct Bone_Info { char name[32]; // Bone name int parent; // Bone parent -} RL_BoneInfo; +} Bone_Info; -// RL_Model, meshes, materials and animation data -typedef struct RL_Model { - RL_Matrix transform; // Local transform matrix +// Model, meshes, materials and animation data +typedef struct Model { + Matrix transform; // Local transform matrix int meshCount; // Number of meshes int materialCount; // Number of materials - RL_Mesh *meshes; // Meshes array - RL_Material *materials; // Materials array - int *meshMaterial; // RL_Mesh material number + Mesh *meshes; // Meshes array + Material *materials; // Materials array + int *meshMaterial; // Mesh material number // Animation data int boneCount; // Number of bones - RL_BoneInfo *bones; // Bones information (skeleton) - RL_Transform *bindPose; // Bones base transformation (pose) -} RL_Model; + Bone_Info *bones; // Bones information (skeleton) + Transform *bindPose; // Bones base transformation (pose) +} Model; -// RL_ModelAnimation -typedef struct RL_ModelAnimation { +// Model_Animation +typedef struct Model_Animation { int boneCount; // Number of bones int frameCount; // Number of animation frames - RL_BoneInfo *bones; // Bones information (skeleton) - RL_Transform **framePoses; // Poses array by frame + Bone_Info *bones; // Bones information (skeleton) + Transform **framePoses; // Poses array by frame char name[32]; // Animation name -} RL_ModelAnimation; +} Model_Animation; -// RL_Ray, ray for raycasting -typedef struct RL_Ray { - RL_Vector3 position; // RL_Ray position (origin) - RL_Vector3 direction; // RL_Ray direction -} RL_Ray; +// Ray, ray for raycasting +typedef struct Ray { + Vector3 position; // Ray position (origin) + Vector3 direction; // Ray direction +} Ray; -// RL_RayCollision, ray hit information -typedef struct RL_RayCollision { +// Ray_Collision, ray hit information +typedef struct Ray_Collision { bool hit; // Did the ray hit something? float distance; // Distance to the nearest hit - RL_Vector3 point; // RL_Point of the nearest hit - RL_Vector3 normal; // Surface normal of hit -} RL_RayCollision; + Vector3 point; // Point of the nearest hit + Vector3 normal; // Surface normal of hit +} Ray_Collision; -// RL_BoundingBox -typedef struct RL_BoundingBox { - RL_Vector3 min; // Minimum vertex box-corner - RL_Vector3 max; // Maximum vertex box-corner -} RL_BoundingBox; +// Bounding_box +typedef struct Bounding_box { + Vector3 min; // Minimum vertex box-corner + Vector3 max; // Maximum vertex box-corner +} Bounding_box; -// RL_Wave, audio wave data -typedef struct RL_Wave { +// Wave, audio wave data +typedef struct Wave { unsigned int frameCount; // Total number of frames (considering channels) unsigned int sampleRate; // Frequency (samples per second) unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) void *data; // Buffer data pointer -} RL_Wave; +} Wave; // Opaque structs declaration // NOTE: Actual structs are defined internally in raudio module -typedef struct RL_AudioBuffer RL_AudioBuffer; -typedef struct RL_AudioProcessor RL_AudioProcessor; +typedef struct Audio_Buffer Audio_Buffer; +typedef struct Audio_Processor Audio_Processor; -// RL_AudioStream, custom audio stream -typedef struct RL_AudioStream { - RL_AudioBuffer *buffer; // Pointer to internal data used by the audio system - RL_AudioProcessor *processor; // Pointer to internal data processor, useful for audio effects +// Audio_Stream, custom audio stream +typedef struct Audio_Stream { + Audio_Buffer *buffer; // Pointer to internal data used by the audio system + Audio_Processor *processor; // Pointer to internal data processor, useful for audio effects unsigned int sampleRate; // Frequency (samples per second) unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) -} RL_AudioStream; +} Audio_Stream; -// RL_Sound -typedef struct RL_Sound { - RL_AudioStream stream; // Audio stream +// Sound +typedef struct Sound { + Audio_Stream stream; // Audio stream unsigned int frameCount; // Total number of frames (considering channels) -} RL_Sound; +} Sound; -// RL_Music, audio stream, anything longer than ~10 seconds should be streamed -typedef struct RL_Music { - RL_AudioStream stream; // Audio stream +// Music, audio stream, anything longer than ~10 seconds should be streamed +typedef struct Music { + Audio_Stream stream; // Audio stream unsigned int frameCount; // Total number of frames (considering channels) - bool looping; // RL_Music looping enable + bool looping; // Music looping enable int ctxType; // Type of music context (audio filetype) void *ctxData; // Audio context data, depends on type -} RL_Music; +} Music; -// RL_VrDeviceInfo, Head-Mounted-Display device parameters -typedef struct RL_VrDeviceInfo { +// VR_Device_Info, Head-Mounted-Display device parameters +typedef struct VR_Device_Info { int hResolution; // Horizontal resolution in pixels int vResolution; // Vertical resolution in pixels float hScreenSize; // Horizontal size in meters @@ -485,40 +501,40 @@ typedef struct RL_VrDeviceInfo { float interpupillaryDistance; // IPD (distance between pupils) in meters float lensDistortionValues[4]; // Lens distortion constant parameters float chromaAbCorrection[4]; // Chromatic aberration correction parameters -} RL_VrDeviceInfo; +} VR_Device_Info; -// RL_VrStereoConfig, VR stereo rendering configuration for simulator -typedef struct RL_VrStereoConfig { - RL_Matrix projection[2]; // VR projection matrices (per eye) - RL_Matrix viewOffset[2]; // VR view offset matrices (per eye) +// VR_Stereo_Config, VR stereo rendering configuration for simulator +typedef struct VR_Stereo_Config { + Matrix projection[2]; // VR projection matrices (per eye) + Matrix viewOffset[2]; // VR view offset matrices (per eye) float leftLensCenter[2]; // VR left lens center float rightLensCenter[2]; // VR right lens center float leftScreenCenter[2]; // VR left screen center float rightScreenCenter[2]; // VR right screen center float scale[2]; // VR distortion scale float scaleIn[2]; // VR distortion scale in -} RL_VrStereoConfig; +} VR_Stereo_Config; // File path list -typedef struct RL_FilePathList { +typedef struct File_Path_List { unsigned int capacity; // Filepaths max entries unsigned int count; // Filepaths entries count char **paths; // Filepaths entries -} RL_FilePathList; +} File_Path_List; // Automation event -typedef struct RL_AutomationEvent { +typedef struct Automation_Event { unsigned int frame; // Event frame unsigned int type; // Event type (AutomationEventType) int params[4]; // Event parameters (if required) -} RL_AutomationEvent; +} Automation_Event; // Automation event list -typedef struct RL_AutomationEventList { +typedef struct Automation_Event_List { unsigned int capacity; // Events max entries (RL_MAX_AUTOMATION_EVENTS) unsigned int count; // Events entries count - RL_AutomationEvent *events; // Events entries -} RL_AutomationEventList; + Automation_Event *events; // Events entries +} Automation_Event_List; //---------------------------------------------------------------------------------- // Enumerators Definition @@ -527,415 +543,415 @@ typedef struct RL_AutomationEventList { // NOTE: Every bit registers one state (use it with bit masks) // By default all flags are set to 0 typedef enum { - RL_FLAG_VSYNC_HINT = 0x00000040, // Set to try enabling V-Sync on GPU - RL_FLAG_FULLSCREEN_MODE = 0x00000002, // Set to run program in fullscreen - RL_FLAG_WINDOW_RESIZABLE = 0x00000004, // Set to allow resizable window - RL_FLAG_WINDOW_UNDECORATED = 0x00000008, // Set to disable window decoration (frame and buttons) - RL_FLAG_WINDOW_HIDDEN = 0x00000080, // Set to hide window - RL_FLAG_WINDOW_MINIMIZED = 0x00000200, // Set to minimize window (iconify) - RL_FLAG_WINDOW_MAXIMIZED = 0x00000400, // Set to maximize window (expanded to monitor) - RL_FLAG_WINDOW_UNFOCUSED = 0x00000800, // Set to window non focused - RL_FLAG_WINDOW_TOPMOST = 0x00001000, // Set to window always on top - RL_FLAG_WINDOW_ALWAYS_RUN = 0x00000100, // Set to allow windows running while minimized - RL_FLAG_WINDOW_TRANSPARENT = 0x00000010, // Set to allow transparent framebuffer - RL_FLAG_WINDOW_HIGHDPI = 0x00002000, // Set to support HighDPI - RL_FLAG_WINDOW_MOUSE_PASSTHROUGH = 0x00004000, // Set to support mouse passthrough, only supported when RL_FLAG_WINDOW_UNDECORATED - RL_FLAG_BORDERLESS_WINDOWED_MODE = 0x00008000, // Set to run program in borderless windowed mode - RL_FLAG_MSAA_4X_HINT = 0x00000020, // Set to try enabling MSAA 4X - RL_FLAG_INTERLACED_HINT = 0x00010000 // Set to try enabling interlaced video format (for V3D) -} RL_ConfigFlags; + FLAG_VSYNC_HINT = 0x00000040, // Set to try enabling V-Sync on GPU + FLAG_FULLSCREEN_MODE = 0x00000002, // Set to run program in fullscreen + FLAG_WINDOW_RESIZABLE = 0x00000004, // Set to allow resizable window + FLAG_WINDOW_UNDECORATED = 0x00000008, // Set to disable window decoration (frame and buttons) + FLAG_WINDOW_HIDDEN = 0x00000080, // Set to hide window + FLAG_WINDOW_MINIMIZED = 0x00000200, // Set to minimize window (iconify) + FLAG_WINDOW_MAXIMIZED = 0x00000400, // Set to maximize window (expanded to monitor) + FLAG_WINDOW_UNFOCUSED = 0x00000800, // Set to window non focused + FLAG_WINDOW_TOPMOST = 0x00001000, // Set to window always on top + FLAG_WINDOW_ALWAYS_RUN = 0x00000100, // Set to allow windows running while minimized + FLAG_WINDOW_TRANSPARENT = 0x00000010, // Set to allow transparent framebuffer + FLAG_WINDOW_HIGHDPI = 0x00002000, // Set to support HighDPI + FLAG_WINDOW_MOUSE_PASSTHROUGH = 0x00004000, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED + FLAG_BORDERLESS_WINDOWED_MODE = 0x00008000, // Set to run program in borderless windowed mode + FLAG_MSAA_4X_HINT = 0x00000020, // Set to try enabling MSAA 4X + FLAG_INTERLACED_HINT = 0x00010000 // Set to try enabling interlaced video format (for V3D) +} ConfigFlags; // Trace log level // NOTE: Organized by priority level typedef enum { - RL_LOG_ALL = 0, // Display all logs - RL_LOG_TRACE, // Trace logging, intended for internal use only - RL_LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds - RL_LOG_INFO, // Info logging, used for program execution info - RL_LOG_WARNING, // Warning logging, used on recoverable failures - RL_LOG_ERROR, // Error logging, used on unrecoverable failures - RL_LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) - RL_LOG_NONE // Disable logging -} RL_TraceLogLevel; + LOG_ALL = 0, // Display all logs + LOG_TRACE, // Trace logging, intended for internal use only + LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds + LOG_INFO, // Info logging, used for program execution info + LOG_WARNING, // Warning logging, used on recoverable failures + LOG_ERROR, // Error logging, used on unrecoverable failures + LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) + LOG_NONE // Disable logging +} TraceLogLevel; // Keyboard keys (US keyboard layout) -// NOTE: Use RL_GetKeyPressed() to allow redefining +// NOTE: Use get_key_pressed() to allow redefining // required keys for alternative layouts typedef enum { - RL_KEY_NULL = 0, // Key: NULL, used for no key pressed + KEY_NULL = 0, // Key: NULL, used for no key pressed // Alphanumeric keys - RL_KEY_APOSTROPHE = 39, // Key: ' - RL_KEY_COMMA = 44, // Key: , - RL_KEY_MINUS = 45, // Key: - - RL_KEY_PERIOD = 46, // Key: . - RL_KEY_SLASH = 47, // Key: / - RL_KEY_ZERO = 48, // Key: 0 - RL_KEY_ONE = 49, // Key: 1 - RL_KEY_TWO = 50, // Key: 2 - RL_KEY_THREE = 51, // Key: 3 - RL_KEY_FOUR = 52, // Key: 4 - RL_KEY_FIVE = 53, // Key: 5 - RL_KEY_SIX = 54, // Key: 6 - RL_KEY_SEVEN = 55, // Key: 7 - RL_KEY_EIGHT = 56, // Key: 8 - RL_KEY_NINE = 57, // Key: 9 - RL_KEY_SEMICOLON = 59, // Key: ; - RL_KEY_EQUAL = 61, // Key: = - RL_KEY_A = 65, // Key: A | a - RL_KEY_B = 66, // Key: B | b - RL_KEY_C = 67, // Key: C | c - RL_KEY_D = 68, // Key: D | d - RL_KEY_E = 69, // Key: E | e - RL_KEY_F = 70, // Key: F | f - RL_KEY_G = 71, // Key: G | g - RL_KEY_H = 72, // Key: H | h - RL_KEY_I = 73, // Key: I | i - RL_KEY_J = 74, // Key: J | j - RL_KEY_K = 75, // Key: K | k - RL_KEY_L = 76, // Key: L | l - RL_KEY_M = 77, // Key: M | m - RL_KEY_N = 78, // Key: N | n - RL_KEY_O = 79, // Key: O | o - RL_KEY_P = 80, // Key: P | p - RL_KEY_Q = 81, // Key: Q | q - RL_KEY_R = 82, // Key: R | r - RL_KEY_S = 83, // Key: S | s - RL_KEY_T = 84, // Key: T | t - RL_KEY_U = 85, // Key: U | u - RL_KEY_V = 86, // Key: V | v - RL_KEY_W = 87, // Key: W | w - RL_KEY_X = 88, // Key: X | x - RL_KEY_Y = 89, // Key: Y | y - RL_KEY_Z = 90, // Key: Z | z - RL_KEY_LEFT_BRACKET = 91, // Key: [ + KEY_APOSTROPHE = 39, // Key: ' + KEY_COMMA = 44, // Key: , + KEY_MINUS = 45, // Key: - + KEY_PERIOD = 46, // Key: . + KEY_SLASH = 47, // Key: / + KEY_ZERO = 48, // Key: 0 + KEY_ONE = 49, // Key: 1 + KEY_TWO = 50, // Key: 2 + KEY_THREE = 51, // Key: 3 + KEY_FOUR = 52, // Key: 4 + KEY_FIVE = 53, // Key: 5 + KEY_SIX = 54, // Key: 6 + KEY_SEVEN = 55, // Key: 7 + KEY_EIGHT = 56, // Key: 8 + KEY_NINE = 57, // Key: 9 + KEY_SEMICOLON = 59, // Key: ; + KEY_EQUAL = 61, // Key: = + KEY_A = 65, // Key: A | a + KEY_B = 66, // Key: B | b + KEY_C = 67, // Key: C | c + KEY_D = 68, // Key: D | d + KEY_E = 69, // Key: E | e + KEY_F = 70, // Key: F | f + KEY_G = 71, // Key: G | g + KEY_H = 72, // Key: H | h + KEY_I = 73, // Key: I | i + KEY_J = 74, // Key: J | j + KEY_K = 75, // Key: K | k + KEY_L = 76, // Key: L | l + KEY_M = 77, // Key: M | m + KEY_N = 78, // Key: N | n + KEY_O = 79, // Key: O | o + KEY_P = 80, // Key: P | p + KEY_Q = 81, // Key: Q | q + KEY_R = 82, // Key: R | r + KEY_S = 83, // Key: S | s + KEY_T = 84, // Key: T | t + KEY_U = 85, // Key: U | u + KEY_V = 86, // Key: V | v + KEY_W = 87, // Key: W | w + KEY_X = 88, // Key: X | x + KEY_Y = 89, // Key: Y | y + KEY_Z = 90, // Key: Z | z + KEY_LEFT_BRACKET = 91, // Key: [ KEY_BACKSLASH = 92, // Key: '\' KEY_RIGHT_BRACKET = 93, // Key: ] - RL_KEY_GRAVE = 96, // Key: ` + KEY_GRAVE = 96, // Key: ` // Function keys - RL_KEY_SPACE = 32, // Key: Space - RL_KEY_ESCAPE = 256, // Key: Esc - RL_KEY_ENTER = 257, // Key: Enter - RL_KEY_TAB = 258, // Key: Tab - RL_KEY_BACKSPACE = 259, // Key: Backspace - RL_KEY_INSERT = 260, // Key: Ins - RL_KEY_DELETE = 261, // Key: Del - RL_KEY_RIGHT = 262, // Key: Cursor right - RL_KEY_LEFT = 263, // Key: Cursor left - RL_KEY_DOWN = 264, // Key: Cursor down - RL_KEY_UP = 265, // Key: Cursor up - RL_KEY_PAGE_UP = 266, // Key: Page up - RL_KEY_PAGE_DOWN = 267, // Key: Page down - RL_KEY_HOME = 268, // Key: Home - RL_KEY_END = 269, // Key: End - RL_KEY_CAPS_LOCK = 280, // Key: Caps lock - RL_KEY_SCROLL_LOCK = 281, // Key: Scroll down - RL_KEY_NUM_LOCK = 282, // Key: Num lock - RL_KEY_PRINT_SCREEN = 283, // Key: Print screen - RL_KEY_PAUSE = 284, // Key: Pause - RL_KEY_F1 = 290, // Key: F1 - RL_KEY_F2 = 291, // Key: F2 - RL_KEY_F3 = 292, // Key: F3 - RL_KEY_F4 = 293, // Key: F4 - RL_KEY_F5 = 294, // Key: F5 - RL_KEY_F6 = 295, // Key: F6 - RL_KEY_F7 = 296, // Key: F7 - RL_KEY_F8 = 297, // Key: F8 - RL_KEY_F9 = 298, // Key: F9 - RL_KEY_F10 = 299, // Key: F10 - RL_KEY_F11 = 300, // Key: F11 - RL_KEY_F12 = 301, // Key: F12 - RL_KEY_LEFT_SHIFT = 340, // Key: Shift left - RL_KEY_LEFT_CONTROL = 341, // Key: Control left - RL_KEY_LEFT_ALT = 342, // Key: Alt left - RL_KEY_LEFT_SUPER = 343, // Key: Super left - RL_KEY_RIGHT_SHIFT = 344, // Key: Shift right - RL_KEY_RIGHT_CONTROL = 345, // Key: Control right - RL_KEY_RIGHT_ALT = 346, // Key: Alt right - RL_KEY_RIGHT_SUPER = 347, // Key: Super right - RL_KEY_KB_MENU = 348, // Key: KB menu + KEY_SPACE = 32, // Key: Space + KEY_ESCAPE = 256, // Key: Esc + KEY_ENTER = 257, // Key: Enter + KEY_TAB = 258, // Key: Tab + KEY_BACKSPACE = 259, // Key: Backspace + KEY_INSERT = 260, // Key: Ins + KEY_DELETE = 261, // Key: Del + KEY_RIGHT = 262, // Key: Cursor right + KEY_LEFT = 263, // Key: Cursor left + KEY_DOWN = 264, // Key: Cursor down + KEY_UP = 265, // Key: Cursor up + KEY_PAGE_UP = 266, // Key: Page up + KEY_PAGE_DOWN = 267, // Key: Page down + KEY_HOME = 268, // Key: Home + KEY_END = 269, // Key: End + KEY_CAPS_LOCK = 280, // Key: Caps lock + KEY_SCROLL_LOCK = 281, // Key: Scroll down + KEY_NUM_LOCK = 282, // Key: Num lock + KEY_PRINT_SCREEN = 283, // Key: Print screen + KEY_PAUSE = 284, // Key: Pause + KEY_F1 = 290, // Key: F1 + KEY_F2 = 291, // Key: F2 + KEY_F3 = 292, // Key: F3 + KEY_F4 = 293, // Key: F4 + KEY_F5 = 294, // Key: F5 + KEY_F6 = 295, // Key: F6 + KEY_F7 = 296, // Key: F7 + KEY_F8 = 297, // Key: F8 + KEY_F9 = 298, // Key: F9 + KEY_F10 = 299, // Key: F10 + KEY_F11 = 300, // Key: F11 + KEY_F12 = 301, // Key: F12 + KEY_LEFT_SHIFT = 340, // Key: Shift left + KEY_LEFT_CONTROL = 341, // Key: Control left + KEY_LEFT_ALT = 342, // Key: Alt left + KEY_LEFT_SUPER = 343, // Key: Super left + KEY_RIGHT_SHIFT = 344, // Key: Shift right + KEY_RIGHT_CONTROL = 345, // Key: Control right + KEY_RIGHT_ALT = 346, // Key: Alt right + KEY_RIGHT_SUPER = 347, // Key: Super right + KEY_KB_MENU = 348, // Key: KB menu // Keypad keys - RL_KEY_KP_0 = 320, // Key: Keypad 0 - RL_KEY_KP_1 = 321, // Key: Keypad 1 - RL_KEY_KP_2 = 322, // Key: Keypad 2 - RL_KEY_KP_3 = 323, // Key: Keypad 3 - RL_KEY_KP_4 = 324, // Key: Keypad 4 - RL_KEY_KP_5 = 325, // Key: Keypad 5 - RL_KEY_KP_6 = 326, // Key: Keypad 6 - RL_KEY_KP_7 = 327, // Key: Keypad 7 - RL_KEY_KP_8 = 328, // Key: Keypad 8 - RL_KEY_KP_9 = 329, // Key: Keypad 9 - RL_KEY_KP_DECIMAL = 330, // Key: Keypad . - RL_KEY_KP_DIVIDE = 331, // Key: Keypad / - RL_KEY_KP_MULTIPLY = 332, // Key: Keypad * - RL_KEY_KP_SUBTRACT = 333, // Key: Keypad - - RL_KEY_KP_ADD = 334, // Key: Keypad + - RL_KEY_KP_ENTER = 335, // Key: Keypad Enter - RL_KEY_KP_EQUAL = 336, // Key: Keypad = + KEY_KP_0 = 320, // Key: Keypad 0 + KEY_KP_1 = 321, // Key: Keypad 1 + KEY_KP_2 = 322, // Key: Keypad 2 + KEY_KP_3 = 323, // Key: Keypad 3 + KEY_KP_4 = 324, // Key: Keypad 4 + KEY_KP_5 = 325, // Key: Keypad 5 + KEY_KP_6 = 326, // Key: Keypad 6 + KEY_KP_7 = 327, // Key: Keypad 7 + KEY_KP_8 = 328, // Key: Keypad 8 + KEY_KP_9 = 329, // Key: Keypad 9 + KEY_KP_DECIMAL = 330, // Key: Keypad . + KEY_KP_DIVIDE = 331, // Key: Keypad / + KEY_KP_MULTIPLY = 332, // Key: Keypad * + KEY_KP_SUBTRACT = 333, // Key: Keypad - + KEY_KP_ADD = 334, // Key: Keypad + + KEY_KP_ENTER = 335, // Key: Keypad Enter + KEY_KP_EQUAL = 336, // Key: Keypad = // Android key buttons - RL_KEY_BACK = 4, // Key: Android back button - RL_KEY_MENU = 82, // Key: Android menu button - RL_KEY_VOLUME_UP = 24, // Key: Android volume up button - RL_KEY_VOLUME_DOWN = 25 // Key: Android volume down button -} RL_KeyboardKey; + KEY_BACK = 4, // Key: Android back button + KEY_MENU = 82, // Key: Android menu button + KEY_VOLUME_UP = 24, // Key: Android volume up button + KEY_VOLUME_DOWN = 25 // Key: Android volume down button +} KeyboardKey; // Add backwards compatibility support for deprecated names -#define RL_MOUSE_LEFT_BUTTON RL_MOUSE_BUTTON_LEFT -#define RL_MOUSE_RIGHT_BUTTON RL_MOUSE_BUTTON_RIGHT -#define RL_MOUSE_MIDDLE_BUTTON RL_MOUSE_BUTTON_MIDDLE +#define MOUSE_LEFT_BUTTON RL_NS(MOUSE_BUTTON_LEFT) +#define MOUSE_RIGHT_BUTTON RL_NS(MOUSE_BUTTON_RIGHT) +#define MOUSE_MIDDLE_BUTTON RL_NS(MOUSE_BUTTON_MIDDLE) // Mouse buttons typedef enum { - RL_MOUSE_BUTTON_LEFT = 0, // Mouse button left - RL_MOUSE_BUTTON_RIGHT = 1, // Mouse button right - RL_MOUSE_BUTTON_MIDDLE = 2, // Mouse button middle (pressed wheel) - RL_MOUSE_BUTTON_SIDE = 3, // Mouse button side (advanced mouse device) - RL_MOUSE_BUTTON_EXTRA = 4, // Mouse button extra (advanced mouse device) - RL_MOUSE_BUTTON_FORWARD = 5, // Mouse button forward (advanced mouse device) - RL_MOUSE_BUTTON_BACK = 6, // Mouse button back (advanced mouse device) -} RL_MouseButton; + MOUSE_BUTTON_LEFT = 0, // Mouse button left + MOUSE_BUTTON_RIGHT = 1, // Mouse button right + MOUSE_BUTTON_MIDDLE = 2, // Mouse button middle (pressed wheel) + MOUSE_BUTTON_SIDE = 3, // Mouse button side (advanced mouse device) + MOUSE_BUTTON_EXTRA = 4, // Mouse button extra (advanced mouse device) + MOUSE_BUTTON_FORWARD = 5, // Mouse button forward (advanced mouse device) + MOUSE_BUTTON_BACK = 6, // Mouse button back (advanced mouse device) +} MouseButton; // Mouse cursor typedef enum { - RL_MOUSE_CURSOR_DEFAULT = 0, // Default pointer shape - RL_MOUSE_CURSOR_ARROW = 1, // Arrow shape - RL_MOUSE_CURSOR_IBEAM = 2, // Text writing cursor shape - RL_MOUSE_CURSOR_CROSSHAIR = 3, // Cross shape - RL_MOUSE_CURSOR_POINTING_HAND = 4, // Pointing hand cursor - RL_MOUSE_CURSOR_RESIZE_EW = 5, // Horizontal resize/move arrow shape - RL_MOUSE_CURSOR_RESIZE_NS = 6, // Vertical resize/move arrow shape - RL_MOUSE_CURSOR_RESIZE_NWSE = 7, // Top-left to bottom-right diagonal resize/move arrow shape - RL_MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape - RL_MOUSE_CURSOR_RESIZE_ALL = 9, // The omnidirectional resize/move cursor shape - RL_MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape -} RL_MouseCursor; + MOUSE_CURSOR_DEFAULT = 0, // Default pointer shape + MOUSE_CURSOR_ARROW = 1, // Arrow shape + MOUSE_CURSOR_IBEAM = 2, // Text writing cursor shape + MOUSE_CURSOR_CROSSHAIR = 3, // Cross shape + MOUSE_CURSOR_POINTING_HAND = 4, // Pointing hand cursor + MOUSE_CURSOR_RESIZE_EW = 5, // Horizontal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NS = 6, // Vertical resize/move arrow shape + MOUSE_CURSOR_RESIZE_NWSE = 7, // Top-left to bottom-right diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_ALL = 9, // The omnidirectional resize/move cursor shape + MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape +} MouseCursor; // Gamepad buttons typedef enum { - RL_GAMEPAD_BUTTON_UNKNOWN = 0, // Unknown button, just for error checking - RL_GAMEPAD_BUTTON_LEFT_FACE_UP, // Gamepad left DPAD up button - RL_GAMEPAD_BUTTON_LEFT_FACE_RIGHT, // Gamepad left DPAD right button - RL_GAMEPAD_BUTTON_LEFT_FACE_DOWN, // Gamepad left DPAD down button - RL_GAMEPAD_BUTTON_LEFT_FACE_LEFT, // Gamepad left DPAD left button - RL_GAMEPAD_BUTTON_RIGHT_FACE_UP, // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y) - RL_GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, // Gamepad right button right (i.e. PS3: Square, Xbox: X) - RL_GAMEPAD_BUTTON_RIGHT_FACE_DOWN, // Gamepad right button down (i.e. PS3: Cross, Xbox: A) - RL_GAMEPAD_BUTTON_RIGHT_FACE_LEFT, // Gamepad right button left (i.e. PS3: Circle, Xbox: B) - RL_GAMEPAD_BUTTON_LEFT_TRIGGER_1, // Gamepad top/back trigger left (first), it could be a trailing button - RL_GAMEPAD_BUTTON_LEFT_TRIGGER_2, // Gamepad top/back trigger left (second), it could be a trailing button - RL_GAMEPAD_BUTTON_RIGHT_TRIGGER_1, // Gamepad top/back trigger right (one), it could be a trailing button - RL_GAMEPAD_BUTTON_RIGHT_TRIGGER_2, // Gamepad top/back trigger right (second), it could be a trailing button - RL_GAMEPAD_BUTTON_MIDDLE_LEFT, // Gamepad center buttons, left one (i.e. PS3: Select) - RL_GAMEPAD_BUTTON_MIDDLE, // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX) - RL_GAMEPAD_BUTTON_MIDDLE_RIGHT, // Gamepad center buttons, right one (i.e. PS3: Start) - RL_GAMEPAD_BUTTON_LEFT_THUMB, // Gamepad joystick pressed button left - RL_GAMEPAD_BUTTON_RIGHT_THUMB // Gamepad joystick pressed button right -} RL_GamepadButton; + GAMEPAD_BUTTON_UNKNOWN = 0, // Unknown button, just for error checking + GAMEPAD_BUTTON_LEFT_FACE_UP, // Gamepad left DPAD up button + GAMEPAD_BUTTON_LEFT_FACE_RIGHT, // Gamepad left DPAD right button + GAMEPAD_BUTTON_LEFT_FACE_DOWN, // Gamepad left DPAD down button + GAMEPAD_BUTTON_LEFT_FACE_LEFT, // Gamepad left DPAD left button + GAMEPAD_BUTTON_RIGHT_FACE_UP, // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y) + GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, // Gamepad right button right (i.e. PS3: Square, Xbox: X) + GAMEPAD_BUTTON_RIGHT_FACE_DOWN, // Gamepad right button down (i.e. PS3: Cross, Xbox: A) + GAMEPAD_BUTTON_RIGHT_FACE_LEFT, // Gamepad right button left (i.e. PS3: Circle, Xbox: B) + GAMEPAD_BUTTON_LEFT_TRIGGER_1, // Gamepad top/back trigger left (first), it could be a trailing button + GAMEPAD_BUTTON_LEFT_TRIGGER_2, // Gamepad top/back trigger left (second), it could be a trailing button + GAMEPAD_BUTTON_RIGHT_TRIGGER_1, // Gamepad top/back trigger right (one), it could be a trailing button + GAMEPAD_BUTTON_RIGHT_TRIGGER_2, // Gamepad top/back trigger right (second), it could be a trailing button + GAMEPAD_BUTTON_MIDDLE_LEFT, // Gamepad center buttons, left one (i.e. PS3: Select) + GAMEPAD_BUTTON_MIDDLE, // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX) + GAMEPAD_BUTTON_MIDDLE_RIGHT, // Gamepad center buttons, right one (i.e. PS3: Start) + GAMEPAD_BUTTON_LEFT_THUMB, // Gamepad joystick pressed button left + GAMEPAD_BUTTON_RIGHT_THUMB // Gamepad joystick pressed button right +} GamepadButton; // Gamepad axis typedef enum { - RL_GAMEPAD_AXIS_LEFT_X = 0, // Gamepad left stick X axis - RL_GAMEPAD_AXIS_LEFT_Y = 1, // Gamepad left stick Y axis - RL_GAMEPAD_AXIS_RIGHT_X = 2, // Gamepad right stick X axis - RL_GAMEPAD_AXIS_RIGHT_Y = 3, // Gamepad right stick Y axis - RL_GAMEPAD_AXIS_LEFT_TRIGGER = 4, // Gamepad back trigger left, pressure level: [1..-1] - RL_GAMEPAD_AXIS_RIGHT_TRIGGER = 5 // Gamepad back trigger right, pressure level: [1..-1] -} RL_GamepadAxis; + GAMEPAD_AXIS_LEFT_X = 0, // Gamepad left stick X axis + GAMEPAD_AXIS_LEFT_Y = 1, // Gamepad left stick Y axis + GAMEPAD_AXIS_RIGHT_X = 2, // Gamepad right stick X axis + GAMEPAD_AXIS_RIGHT_Y = 3, // Gamepad right stick Y axis + GAMEPAD_AXIS_LEFT_TRIGGER = 4, // Gamepad back trigger left, pressure level: [1..-1] + GAMEPAD_AXIS_RIGHT_TRIGGER = 5 // Gamepad back trigger right, pressure level: [1..-1] +} GamepadAxis; -// RL_Material map index +// Material map index typedef enum { - RL_MATERIAL_MAP_ALBEDO = 0, // Albedo material (same as: RL_MATERIAL_MAP_DIFFUSE) - RL_MATERIAL_MAP_METALNESS, // Metalness material (same as: RL_MATERIAL_MAP_SPECULAR) - RL_MATERIAL_MAP_NORMAL, // Normal material - RL_MATERIAL_MAP_ROUGHNESS, // Roughness material - RL_MATERIAL_MAP_OCCLUSION, // Ambient occlusion material - RL_MATERIAL_MAP_EMISSION, // Emission material - RL_MATERIAL_MAP_HEIGHT, // Heightmap material - RL_MATERIAL_MAP_CUBEMAP, // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - RL_MATERIAL_MAP_IRRADIANCE, // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - RL_MATERIAL_MAP_PREFILTER, // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP) - RL_MATERIAL_MAP_BRDF // Brdf material -} RL_MaterialMapIndex; + MATERIAL_MAP_ALBEDO = 0, // Albedo material (same as: MATERIAL_MAP_DIFFUSE) + MATERIAL_MAP_METALNESS, // Metalness material (same as: MATERIAL_MAP_SPECULAR) + MATERIAL_MAP_NORMAL, // Normal material + MATERIAL_MAP_ROUGHNESS, // Roughness material + MATERIAL_MAP_OCCLUSION, // Ambient occlusion material + MATERIAL_MAP_EMISSION, // Emission material + MATERIAL_MAP_HEIGHT, // Heightmap material + MATERIAL_MAP_CUBEMAP, // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_IRRADIANCE, // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_PREFILTER, // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_BRDF // Brdf material +} MaterialMapIndex; -#define RL_MATERIAL_MAP_DIFFUSE RL_MATERIAL_MAP_ALBEDO -#define RL_MATERIAL_MAP_SPECULAR RL_MATERIAL_MAP_METALNESS +#define MATERIAL_MAP_DIFFUSE RL_NS(MATERIAL_MAP_ALBEDO) +#define MATERIAL_MAP_SPECULAR RL_NS(MATERIAL_MAP_METALNESS) -// RL_Shader location index +// Shader location index typedef enum { - RL_SHADER_LOC_VERTEX_POSITION = 0, // RL_Shader location: vertex attribute: position - RL_SHADER_LOC_VERTEX_TEXCOORD01, // RL_Shader location: vertex attribute: texcoord01 - RL_SHADER_LOC_VERTEX_TEXCOORD02, // RL_Shader location: vertex attribute: texcoord02 - RL_SHADER_LOC_VERTEX_NORMAL, // RL_Shader location: vertex attribute: normal - RL_SHADER_LOC_VERTEX_TANGENT, // RL_Shader location: vertex attribute: tangent - RL_SHADER_LOC_VERTEX_COLOR, // RL_Shader location: vertex attribute: color - RL_SHADER_LOC_MATRIX_MVP, // RL_Shader location: matrix uniform: model-view-projection - RL_SHADER_LOC_MATRIX_VIEW, // RL_Shader location: matrix uniform: view (camera transform) - RL_SHADER_LOC_MATRIX_PROJECTION, // RL_Shader location: matrix uniform: projection - RL_SHADER_LOC_MATRIX_MODEL, // RL_Shader location: matrix uniform: model (transform) - RL_SHADER_LOC_MATRIX_NORMAL, // RL_Shader location: matrix uniform: normal - RL_SHADER_LOC_VECTOR_VIEW, // RL_Shader location: vector uniform: view - RL_SHADER_LOC_COLOR_DIFFUSE, // RL_Shader location: vector uniform: diffuse color - RL_SHADER_LOC_COLOR_SPECULAR, // RL_Shader location: vector uniform: specular color - RL_SHADER_LOC_COLOR_AMBIENT, // RL_Shader location: vector uniform: ambient color - RL_SHADER_LOC_MAP_ALBEDO, // RL_Shader location: sampler2d texture: albedo (same as: RL_SHADER_LOC_MAP_DIFFUSE) - RL_SHADER_LOC_MAP_METALNESS, // RL_Shader location: sampler2d texture: metalness (same as: RL_SHADER_LOC_MAP_SPECULAR) - RL_SHADER_LOC_MAP_NORMAL, // RL_Shader location: sampler2d texture: normal - RL_SHADER_LOC_MAP_ROUGHNESS, // RL_Shader location: sampler2d texture: roughness - RL_SHADER_LOC_MAP_OCCLUSION, // RL_Shader location: sampler2d texture: occlusion - RL_SHADER_LOC_MAP_EMISSION, // RL_Shader location: sampler2d texture: emission - RL_SHADER_LOC_MAP_HEIGHT, // RL_Shader location: sampler2d texture: height - RL_SHADER_LOC_MAP_CUBEMAP, // RL_Shader location: samplerCube texture: cubemap - RL_SHADER_LOC_MAP_IRRADIANCE, // RL_Shader location: samplerCube texture: irradiance - RL_SHADER_LOC_MAP_PREFILTER, // RL_Shader location: samplerCube texture: prefilter - RL_SHADER_LOC_MAP_BRDF // RL_Shader location: sampler2d texture: brdf -} RL_ShaderLocationIndex; + SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position + SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 + SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 + SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal + SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent + SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color + SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection + SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) + SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection + SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) + SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal + SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view + SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color + SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color + SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color + SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE) + SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR) + SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal + SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness + SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion + SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission + SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height + SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap + SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance + SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter + SHADER_LOC_MAP_BRDF // Shader location: sampler2d texture: brdf +} ShaderLocationIndex; -#define RL_SHADER_LOC_MAP_DIFFUSE RL_SHADER_LOC_MAP_ALBEDO -#define RL_SHADER_LOC_MAP_SPECULAR RL_SHADER_LOC_MAP_METALNESS +#define SHADER_LOC_MAP_DIFFUSE RL_NS(SHADER_LOC_MAP_ALBEDO) +#define SHADER_LOC_MAP_SPECULAR RL_NS(SHADER_LOC_MAP_METALNESS) -// RL_Shader uniform data type +// Shader uniform data type typedef enum { - RL_SHADER_UNIFORM_FLOAT = 0, // RL_Shader uniform type: float - RL_SHADER_UNIFORM_VEC2, // RL_Shader uniform type: vec2 (2 float) - RL_SHADER_UNIFORM_VEC3, // RL_Shader uniform type: vec3 (3 float) - RL_SHADER_UNIFORM_VEC4, // RL_Shader uniform type: vec4 (4 float) - RL_SHADER_UNIFORM_INT, // RL_Shader uniform type: int - RL_SHADER_UNIFORM_IVEC2, // RL_Shader uniform type: ivec2 (2 int) - RL_SHADER_UNIFORM_IVEC3, // RL_Shader uniform type: ivec3 (3 int) - RL_SHADER_UNIFORM_IVEC4, // RL_Shader uniform type: ivec4 (4 int) - RL_SHADER_UNIFORM_SAMPLER2D // RL_Shader uniform type: sampler2d -} RL_ShaderUniformDataType; + SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float + SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) + SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) + SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) + SHADER_UNIFORM_INT, // Shader uniform type: int + SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) + SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) + SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) + SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d +} ShaderUniformDataType; -// RL_Shader attribute data types +// Shader attribute data types typedef enum { - RL_SHADER_ATTRIB_FLOAT = 0, // RL_Shader attribute type: float - RL_SHADER_ATTRIB_VEC2, // RL_Shader attribute type: vec2 (2 float) - RL_SHADER_ATTRIB_VEC3, // RL_Shader attribute type: vec3 (3 float) - RL_SHADER_ATTRIB_VEC4 // RL_Shader attribute type: vec4 (4 float) -} RL_ShaderAttributeDataType; + SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float + SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) + SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) + SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) +} ShaderAttributeDataType; // Pixel formats // NOTE: Support depends on OpenGL version and platform typedef enum { - RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) - RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) - RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) - RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp -} RL_PixelFormat; + PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} PixelFormat; -// RL_Texture parameters: filter mode +// Texture parameters: filter mode // NOTE 1: Filtering considers mipmaps if available in the texture // NOTE 2: Filter is accordingly set for minification and magnification typedef enum { - RL_TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation - RL_TEXTURE_FILTER_BILINEAR, // Linear filtering - RL_TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) - RL_TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x - RL_TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x - RL_TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x -} RL_TextureFilter; + TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation + TEXTURE_FILTER_BILINEAR, // Linear filtering + TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} TextureFilter; -// RL_Texture parameters: wrap mode +// Texture parameters: wrap mode typedef enum { - RL_TEXTURE_WRAP_REPEAT = 0, // Repeats texture in tiled mode - RL_TEXTURE_WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode - RL_TEXTURE_WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode - RL_TEXTURE_WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode -} RL_TextureWrap; + TEXTURE_WRAP_REPEAT = 0, // Repeats texture in tiled mode + TEXTURE_WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode + TEXTURE_WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode + TEXTURE_WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode +} TextureWrap; // Cubemap layouts typedef enum { - RL_CUBEMAP_LAYOUT_AUTO_DETECT = 0, // Automatically detect layout type - RL_CUBEMAP_LAYOUT_LINE_VERTICAL, // Layout is defined by a vertical line with faces - RL_CUBEMAP_LAYOUT_LINE_HORIZONTAL, // Layout is defined by a horizontal line with faces - RL_CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces - RL_CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces - RL_CUBEMAP_LAYOUT_PANORAMA // Layout is defined by a panorama image (equirrectangular map) -} RL_CubemapLayout; + CUBEMAP_LAYOUT_AUTO_DETECT = 0, // Automatically detect layout type + CUBEMAP_LAYOUT_LINE_VERTICAL, // Layout is defined by a vertical line with faces + CUBEMAP_LAYOUT_LINE_HORIZONTAL, // Layout is defined by a horizontal line with faces + CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces + CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces + CUBEMAP_LAYOUT_PANORAMA // Layout is defined by a panorama image (equirrectangular map) +} CubemapLayout; -// RL_Font type, defines generation method +// Font type, defines generation method typedef enum { - RL_FONT_DEFAULT = 0, // Default font generation, anti-aliased - RL_FONT_BITMAP, // Bitmap font generation, no anti-aliasing - RL_FONT_SDF // SDF font generation, requires external shader -} RL_FontType; + FONT_DEFAULT = 0, // Default font generation, anti-aliased + FONT_BITMAP, // Bitmap font generation, no anti-aliasing + FONT_SDF // SDF font generation, requires external shader +} FontType; -// RL_Color blending modes (pre-defined) +// Color blending modes (pre-defined) typedef enum { - RL_BLEND_ALPHA = 0, // Blend textures considering alpha (default) - RL_BLEND_ADDITIVE, // Blend textures adding colors - RL_BLEND_MULTIPLIED, // Blend textures multiplying colors - RL_BLEND_ADD_COLORS, // Blend textures adding colors (alternative) - RL_BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) - RL_BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha - RL_BLEND_CUSTOM, // Blend textures using custom src/dst factors (use RLGL_SetBlendFactors()) - RL_BLEND_CUSTOM_SEPARATE // Blend textures using custom rgb/alpha separate src/dst factors (use RLGL_SetBlendFactorsSeparate()) -} RL_BlendMode; + BLEND_ALPHA = 0, // Blend textures considering alpha (default) + BLEND_ADDITIVE, // Blend textures adding colors + BLEND_MULTIPLIED, // Blend textures multiplying colors + BLEND_ADD_COLORS, // Blend textures adding colors (alternative) + BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) + BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha + BLEND_CUSTOM, // Blend textures using custom src/dst factors (use set_blend_factors()) + BLEND_CUSTOM_SEPARATE // Blend textures using custom rgb/alpha separate src/dst factors (use set_blend_factors_separate()) +} BlendMode; -// RL_Gesture +// Gesture // NOTE: Provided as bit-wise flags to enable only desired gestures typedef enum { - RL_GESTURE_NONE = 0, // No gesture - RL_GESTURE_TAP = 1, // Tap gesture - RL_GESTURE_DOUBLETAP = 2, // Double tap gesture - RL_GESTURE_HOLD = 4, // Hold gesture - RL_GESTURE_DRAG = 8, // Drag gesture - RL_GESTURE_SWIPE_RIGHT = 16, // Swipe right gesture - RL_GESTURE_SWIPE_LEFT = 32, // Swipe left gesture - RL_GESTURE_SWIPE_UP = 64, // Swipe up gesture - RL_GESTURE_SWIPE_DOWN = 128, // Swipe down gesture - RL_GESTURE_PINCH_IN = 256, // Pinch in gesture - RL_GESTURE_PINCH_OUT = 512 // Pinch out gesture -} RL_Gesture; + GESTURE_NONE = 0, // No gesture + GESTURE_TAP = 1, // Tap gesture + GESTURE_DOUBLETAP = 2, // Double tap gesture + GESTURE_HOLD = 4, // Hold gesture + GESTURE_DRAG = 8, // Drag gesture + GESTURE_SWIPE_RIGHT = 16, // Swipe right gesture + GESTURE_SWIPE_LEFT = 32, // Swipe left gesture + GESTURE_SWIPE_UP = 64, // Swipe up gesture + GESTURE_SWIPE_DOWN = 128, // Swipe down gesture + GESTURE_PINCH_IN = 256, // Pinch in gesture + GESTURE_PINCH_OUT = 512 // Pinch out gesture +} Gesture; -// RL_Camera system modes +// Camera system modes typedef enum { - RL_CAMERA_CUSTOM = 0, // Custom camera - RL_CAMERA_FREE, // Free camera - RL_CAMERA_ORBITAL, // Orbital camera - RL_CAMERA_FIRST_PERSON, // First person camera - RL_CAMERA_THIRD_PERSON // Third person camera -} RL_CameraMode; + CAMERA_CUSTOM = 0, // Custom camera + CAMERA_FREE, // Free camera + CAMERA_ORBITAL, // Orbital camera + CAMERA_FIRST_PERSON, // First person camera + CAMERA_THIRD_PERSON // Third person camera +} CameraMode; -// RL_Camera projection +// Camera projection typedef enum { - RL_CAMERA_PERSPECTIVE = 0, // Perspective projection - RL_CAMERA_ORTHOGRAPHIC // Orthographic projection -} RL_CameraProjection; + CAMERA_PERSPECTIVE = 0, // Perspective projection + CAMERA_ORTHOGRAPHIC // Orthographic projection +} CameraProjection; // N-patch layout typedef enum { - RL_NPATCH_NINE_PATCH = 0, // Npatch layout: 3x3 tiles - RL_NPATCH_THREE_PATCH_VERTICAL, // Npatch layout: 1x3 tiles - RL_NPATCH_THREE_PATCH_HORIZONTAL // Npatch layout: 3x1 tiles -} RL_NPatchLayout; + NPATCH_NINE_PATCH = 0, // Npatch layout: 3x3 tiles + NPATCH_THREE_PATCH_VERTICAL, // Npatch layout: 1x3 tiles + NPATCH_THREE_PATCH_HORIZONTAL // Npatch layout: 3x1 tiles +} NPatchLayout; // Callbacks to hook some internal functions // WARNING: These callbacks are intended for advance users -typedef void (*RL_TraceLogCallback)(int logLevel, const char *text, va_list args); // Logging: Redirect trace log messages -typedef unsigned char *(*RL_LoadFileDataCallback)(const char *fileName, int *dataSize); // FileIO: Load binary data -typedef bool (*RL_SaveFileDataCallback)(const char *fileName, void *data, int dataSize); // FileIO: Save binary data -typedef char *(*RL_LoadFileTextCallback)(const char *fileName); // FileIO: Load text data -typedef bool (*RL_SaveFileTextCallback)(const char *fileName, char *text); // FileIO: Save text data +typedef void (*TraceLogCallback)(int logLevel, const char *text, va_list args); // Logging: Redirect trace log messages +typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize); // FileIO: Load binary data +typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize); // FileIO: Save binary data +typedef char *(*LoadFileTextCallback)(const char *fileName); // FileIO: Load text data +typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); // FileIO: Save text data //------------------------------------------------------------------------------------ // Global Variables Definition @@ -946,268 +962,266 @@ typedef bool (*RL_SaveFileTextCallback)(const char *fileName, char *text); // Fi // Window and Graphics Device Functions (Module: core) //------------------------------------------------------------------------------------ -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif +RL_EXTERN_C_BEGIN // Window-related functions -RLAPI void RL_InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context -RLAPI void RL_CloseWindow(void); // Close window and unload OpenGL context -RLAPI bool RL_WindowShouldClose(void); // Check if application should close (RL_KEY_ESCAPE pressed or windows close icon clicked) -RLAPI bool RL_IsWindowReady(void); // Check if window has been initialized successfully -RLAPI bool RL_IsWindowFullscreen(void); // Check if window is currently fullscreen -RLAPI bool RL_IsWindowHidden(void); // Check if window is currently hidden (only PLATFORM_DESKTOP) -RLAPI bool RL_IsWindowMinimized(void); // Check if window is currently minimized (only PLATFORM_DESKTOP) -RLAPI bool RL_IsWindowMaximized(void); // Check if window is currently maximized (only PLATFORM_DESKTOP) -RLAPI bool RL_IsWindowFocused(void); // Check if window is currently focused (only PLATFORM_DESKTOP) -RLAPI bool RL_IsWindowResized(void); // Check if window has been resized last frame -RLAPI bool RL_IsWindowState(unsigned int flag); // Check if one specific window flag is enabled -RLAPI void RL_SetWindowState(unsigned int flags); // Set window configuration state using flags (only PLATFORM_DESKTOP) -RLAPI void RL_ClearWindowState(unsigned int flags); // Clear window configuration state flags -RLAPI void RL_ToggleFullscreen(void); // Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP) -RLAPI void RL_ToggleBorderlessWindowed(void); // Toggle window state: borderless windowed (only PLATFORM_DESKTOP) -RLAPI void RL_MaximizeWindow(void); // Set window state: maximized, if resizable (only PLATFORM_DESKTOP) -RLAPI void RL_MinimizeWindow(void); // Set window state: minimized, if resizable (only PLATFORM_DESKTOP) -RLAPI void RL_RestoreWindow(void); // Set window state: not minimized/maximized (only PLATFORM_DESKTOP) -RLAPI void RL_SetWindowIcon(RL_Image image); // Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP) -RLAPI void RL_SetWindowIcons(RL_Image *images, int count); // Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP) -RLAPI void RL_SetWindowTitle(const char *title); // Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB) -RLAPI void RL_SetWindowPosition(int x, int y); // Set window position on screen (only PLATFORM_DESKTOP) -RLAPI void RL_SetWindowMonitor(int monitor); // Set monitor for the current window -RLAPI void RL_SetWindowMinSize(int width, int height); // Set window minimum dimensions (for RL_FLAG_WINDOW_RESIZABLE) -RLAPI void RL_SetWindowMaxSize(int width, int height); // Set window maximum dimensions (for RL_FLAG_WINDOW_RESIZABLE) -RLAPI void RL_SetWindowSize(int width, int height); // Set window dimensions -RLAPI void RL_SetWindowOpacity(float opacity); // Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP) -RLAPI void RL_SetWindowFocused(void); // Set window focused (only PLATFORM_DESKTOP) -RLAPI void *RL_GetWindowHandle(void); // Get native window handle -RLAPI int RL_GetScreenWidth(void); // Get current screen width -RLAPI int RL_GetScreenHeight(void); // Get current screen height -RLAPI int RL_GetRenderWidth(void); // Get current render width (it considers HiDPI) -RLAPI int RL_GetRenderHeight(void); // Get current render height (it considers HiDPI) -RLAPI int RL_GetMonitorCount(void); // Get number of connected monitors -RLAPI int RL_GetCurrentMonitor(void); // Get current connected monitor -RLAPI RL_Vector2 RL_GetMonitorPosition(int monitor); // Get specified monitor position -RLAPI int RL_GetMonitorWidth(int monitor); // Get specified monitor width (current video mode used by monitor) -RLAPI int RL_GetMonitorHeight(int monitor); // Get specified monitor height (current video mode used by monitor) -RLAPI int RL_GetMonitorPhysicalWidth(int monitor); // Get specified monitor physical width in millimetres -RLAPI int RL_GetMonitorPhysicalHeight(int monitor); // Get specified monitor physical height in millimetres -RLAPI int RL_GetMonitorRefreshRate(int monitor); // Get specified monitor refresh rate -RLAPI RL_Vector2 RL_GetWindowPosition(void); // Get window position XY on monitor -RLAPI RL_Vector2 RL_GetWindowScaleDPI(void); // Get window scale DPI factor -RLAPI const char *RL_GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor -RLAPI void RL_SetClipboardText(const char *text); // Set clipboard text content -RLAPI const char *RL_GetClipboardText(void); // Get clipboard text content -RLAPI void RL_EnableEventWaiting(void); // Enable waiting for events on RL_EndDrawing(), no automatic event polling -RLAPI void RL_DisableEventWaiting(void); // Disable waiting for events on RL_EndDrawing(), automatic events polling +RLAPI void init_window(int width, int height, const char *title); // Initialize window and OpenGL context +RLAPI void close_window(void); // Close window and unload OpenGL context +RLAPI bool window_should_close(void); // Check if application should close (KEY_ESCAPE pressed or windows close icon clicked) +RLAPI bool is_window_ready(void); // Check if window has been initialized successfully +RLAPI bool is_window_fullscreen(void); // Check if window is currently fullscreen +RLAPI bool is_window_hidden(void); // Check if window is currently hidden (only PLATFORM_DESKTOP) +RLAPI bool is_window_minimized(void); // Check if window is currently minimized (only PLATFORM_DESKTOP) +RLAPI bool is_window_maximized(void); // Check if window is currently maximized (only PLATFORM_DESKTOP) +RLAPI bool is_window_focused(void); // Check if window is currently focused (only PLATFORM_DESKTOP) +RLAPI bool is_window_resized(void); // Check if window has been resized last frame +RLAPI bool is_window_state(unsigned int flag); // Check if one specific window flag is enabled +RLAPI void set_window_state(unsigned int flags); // Set window configuration state using flags (only PLATFORM_DESKTOP) +RLAPI void clear_window_state(unsigned int flags); // Clear window configuration state flags +RLAPI void toggle_fullscreen(void); // Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP) +RLAPI void toggle_borderless_windowed(void); // Toggle window state: borderless windowed (only PLATFORM_DESKTOP) +RLAPI void maximize_window(void); // Set window state: maximized, if resizable (only PLATFORM_DESKTOP) +RLAPI void minimize_window(void); // Set window state: minimized, if resizable (only PLATFORM_DESKTOP) +RLAPI void restore_window(void); // Set window state: not minimized/maximized (only PLATFORM_DESKTOP) +RLAPI void set_window_icon(Image image); // Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP) +RLAPI void set_window_icons(Image *images, int count); // Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP) +RLAPI void set_window_title(const char *title); // Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB) +RLAPI void set_window_position(int x, int y); // Set window position on screen (only PLATFORM_DESKTOP) +RLAPI void set_window_monitor(int monitor); // Set monitor for the current window +RLAPI void set_window_min_size(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void set_window_max_size(int width, int height); // Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void set_window_size(int width, int height); // Set window dimensions +RLAPI void set_window_opacity(float opacity); // Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP) +RLAPI void set_window_focused(void); // Set window focused (only PLATFORM_DESKTOP) +RLAPI void *GetWindowHandle(void); // Get native window handle +RLAPI int get_screen_width(void); // Get current screen width +RLAPI int get_screen_height(void); // Get current screen height +RLAPI int get_render_width(void); // Get current render width (it considers HiDPI) +RLAPI int get_render_height(void); // Get current render height (it considers HiDPI) +RLAPI int get_monitor_count(void); // Get number of connected monitors +RLAPI int get_current_monitor(void); // Get current connected monitor +RLAPI Vector2 get_monitor_position(int monitor); // Get specified monitor position +RLAPI int get_monitor_width(int monitor); // Get specified monitor width (current video mode used by monitor) +RLAPI int get_monitor_height(int monitor); // Get specified monitor height (current video mode used by monitor) +RLAPI int get_monitor_physical_width(int monitor); // Get specified monitor physical width in millimetres +RLAPI int get_monitor_physical_height(int monitor); // Get specified monitor physical height in millimetres +RLAPI int get_monitor_refresh_rate(int monitor); // Get specified monitor refresh rate +RLAPI Vector2 get_window_position(void); // Get window position XY on monitor +RLAPI Vector2 get_window_scale_dpi(void); // Get window scale DPI factor +RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor +RLAPI void set_clipboard_text(const char *text); // Set clipboard text content +RLAPI const char *GetClipboardText(void); // Get clipboard text content +RLAPI void enable_event_waiting(void); // Enable waiting for events on end_drawing(), no automatic event polling +RLAPI void disable_event_waiting(void); // Disable waiting for events on end_drawing(), automatic events polling // Cursor-related functions -RLAPI void RL_ShowCursor(void); // Shows cursor -RLAPI void RL_HideCursor(void); // Hides cursor -RLAPI bool RL_IsCursorHidden(void); // Check if cursor is not visible -RLAPI void RL_EnableCursor(void); // Enables cursor (unlock cursor) -RLAPI void RL_DisableCursor(void); // Disables cursor (lock cursor) -RLAPI bool RL_IsCursorOnScreen(void); // Check if cursor is on the screen +RLAPI void show_cursor(void); // Shows cursor +RLAPI void hide_cursor(void); // Hides cursor +RLAPI bool is_cursor_hidden(void); // Check if cursor is not visible +RLAPI void enable_cursor(void); // Enables cursor (unlock cursor) +RLAPI void disable_cursor(void); // Disables cursor (lock cursor) +RLAPI bool is_cursor_on_screen(void); // Check if cursor is on the screen // Drawing-related functions -RLAPI void RL_ClearBackground(RL_Color color); // Set background color (framebuffer clear color) -RLAPI void RL_BeginDrawing(void); // Setup canvas (framebuffer) to start drawing -RLAPI void RL_EndDrawing(void); // End canvas drawing and swap buffers (double buffering) -RLAPI void RL_BeginMode2D(RL_Camera2D camera); // Begin 2D mode with custom camera (2D) -RLAPI void RL_EndMode2D(void); // Ends 2D mode with custom camera -RLAPI void RL_BeginMode3D(RL_Camera3D camera); // Begin 3D mode with custom camera (3D) -RLAPI void RL_EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode -RLAPI void RL_BeginTextureMode(RL_RenderTexture2D target); // Begin drawing to render texture -RLAPI void RL_EndTextureMode(void); // Ends drawing to render texture -RLAPI void RL_BeginShaderMode(RL_Shader shader); // Begin custom shader drawing -RLAPI void RL_EndShaderMode(void); // End custom shader drawing (use default shader) -RLAPI void RL_BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied, subtract, custom) -RLAPI void RL_EndBlendMode(void); // End blending mode (reset to default: alpha blending) -RLAPI void RL_BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) -RLAPI void RL_EndScissorMode(void); // End scissor mode -RLAPI void RL_BeginVrStereoMode(RL_VrStereoConfig config); // Begin stereo rendering (requires VR simulator) -RLAPI void RL_EndVrStereoMode(void); // End stereo rendering (requires VR simulator) +RLAPI void clear_background(Color color); // Set background color (framebuffer clear color) +RLAPI void begin_drawing(void); // Setup canvas (framebuffer) to start drawing +RLAPI void end_drawing(void); // End canvas drawing and swap buffers (double buffering) +RLAPI void begin_mode2d(Camera2D camera); // Begin 2D mode with custom camera (2D) +RLAPI void end_mode2_d(void); // Ends 2D mode with custom camera +RLAPI void begin_mode3d(Camera3D camera); // Begin 3D mode with custom camera (3D) +RLAPI void end_mode3d(void); // Ends 3D mode and returns to default 2D orthographic mode +RLAPI void begin_texture_mode(Render_Texture2D target); // Begin drawing to render texture +RLAPI void end_texture_mode(void); // Ends drawing to render texture +RLAPI void begin_shader_mode(Shader shader); // Begin custom shader drawing +RLAPI void end_shader_mode(void); // End custom shader drawing (use default shader) +RLAPI void begin_blend_mode(int mode); // Begin blending mode (alpha, additive, multiplied, subtract, custom) +RLAPI void end_blend_mode(void); // End blending mode (reset to default: alpha blending) +RLAPI void begin_scissor_mode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) +RLAPI void end_scissor_mode(void); // End scissor mode +RLAPI void begin_vr_stereo_mode(VR_Stereo_Config config); // Begin stereo rendering (requires VR simulator) +RLAPI void end_vr_stereo_mode(void); // End stereo rendering (requires VR simulator) // VR stereo config functions for VR simulator -RLAPI RL_VrStereoConfig RL_LoadVrStereoConfig(RL_VrDeviceInfo device); // Load VR stereo config for VR simulator device parameters -RLAPI void RL_UnloadVrStereoConfig(RL_VrStereoConfig config); // Unload VR stereo config +RLAPI VR_Stereo_Config load_vr_stereo_config(VR_Device_Info device); // Load VR stereo config for VR simulator device parameters +RLAPI void unload_vr_stereo_config(VR_Stereo_Config config); // Unload VR stereo config -// RL_Shader management functions -// NOTE: RL_Shader functionality is not available on OpenGL 1.1 -RLAPI RL_Shader RL_LoadShader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations -RLAPI RL_Shader RL_LoadShaderFromMemory(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations -RLAPI bool RL_IsShaderReady(RL_Shader shader); // Check if a shader is ready -RLAPI int RL_GetShaderLocation(RL_Shader shader, const char *uniformName); // Get shader uniform location -RLAPI int RL_GetShaderLocationAttrib(RL_Shader shader, const char *attribName); // Get shader attribute location -RLAPI void RL_SetShaderValue(RL_Shader shader, int locIndex, const void *value, int uniformType); // Set shader uniform value -RLAPI void RL_SetShaderValueV(RL_Shader shader, int locIndex, const void *value, int uniformType, int count); // Set shader uniform value vector -RLAPI void RL_SetShaderValueMatrix(RL_Shader shader, int locIndex, RL_Matrix mat); // Set shader uniform value (matrix 4x4) -RLAPI void RL_SetShaderValueTexture(RL_Shader shader, int locIndex, RL_Texture2D texture); // Set shader uniform value for texture (sampler2d) -RLAPI void RL_UnloadShader(RL_Shader shader); // Unload shader from GPU memory (VRAM) +// Shader management functions +// NOTE: Shader functionality is not available on OpenGL 1.1 +RLAPI Shader load_shader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations +RLAPI Shader load_shader_from_memory(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations +RLAPI bool is_shader_ready(Shader shader); // Check if a shader is ready +RLAPI int get_shader_location(Shader shader, const char *uniformName); // Get shader uniform location +RLAPI int get_shader_location_attrib(Shader shader, const char *attribName); // Get shader attribute location +RLAPI void set_shader_value(Shader shader, int locIndex, const void *value, int uniformType); // Set shader uniform value +RLAPI void set_shader_value_v(Shader shader, int locIndex, const void *value, int uniformType, int count); // Set shader uniform value vector +RLAPI void set_shader_value_matrix(Shader shader, int locIndex, Matrix mat); // Set shader uniform value (matrix 4x4) +RLAPI void set_shader_value_texture(Shader shader, int locIndex, Texture2d texture); // Set shader uniform value for texture (sampler2d) +RLAPI void unload_shader(Shader shader); // Unload shader from GPU memory (VRAM) // Screen-space-related functions -RLAPI RL_Ray RL_GetMouseRay(RL_Vector2 mousePosition, RL_Camera camera); // Get a ray trace from mouse position -RLAPI RL_Matrix RL_GetCameraMatrix(RL_Camera camera); // Get camera transform matrix (view matrix) -RLAPI RL_Matrix RL_GetCameraMatrix2D(RL_Camera2D camera); // Get camera 2d transform matrix -RLAPI RL_Vector2 RL_GetWorldToScreen(RL_Vector3 position, RL_Camera camera); // Get the screen space position for a 3d world space position -RLAPI RL_Vector2 RL_GetScreenToWorld2D(RL_Vector2 position, RL_Camera2D camera); // Get the world space position for a 2d camera screen space position -RLAPI RL_Vector2 RL_GetWorldToScreenEx(RL_Vector3 position, RL_Camera camera, int width, int height); // Get size position for a 3d world space position -RLAPI RL_Vector2 RL_GetWorldToScreen2D(RL_Vector2 position, RL_Camera2D camera); // Get the screen space position for a 2d camera world space position +RLAPI Ray get_mouse_ray(Vector2 mousePosition, Camera camera); // Get a ray trace from mouse position +RLAPI Matrix get_camera_matrix(Camera camera); // Get camera transform matrix (view matrix) +RLAPI Matrix get_camera_matrix2d(Camera2D camera); // Get camera 2d transform matrix +RLAPI Vector2 get_world_to_screen(Vector3 position, Camera camera); // Get the screen space position for a 3d world space position +RLAPI Vector2 get_screen_to_world2d(Vector2 position, Camera2D camera); // Get the world space position for a 2d camera screen space position +RLAPI Vector2 get_world_to_screen_ex(Vector3 position, Camera camera, int width, int height); // Get size position for a 3d world space position +RLAPI Vector2 get_world_to_screen2d(Vector2 position, Camera2D camera); // Get the screen space position for a 2d camera world space position // Timing-related functions -RLAPI void RL_SetTargetFPS(int fps); // Set target FPS (maximum) -RLAPI float RL_GetFrameTime(void); // Get time in seconds for last frame drawn (delta time) -RLAPI double RL_GetTime(void); // Get elapsed time in seconds since RL_InitWindow() -RLAPI int RL_GetFPS(void); // Get current FPS +RLAPI void set_target_fps(int fps); // Set target FPS (maximum) +RLAPI float get_frame_time(void); // Get time in seconds for last frame drawn (delta time) +RLAPI double get_time(void); // Get elapsed time in seconds since init_window() +RLAPI int get_fps(void); // Get current FPS // Custom frame control functions // NOTE: Those functions are intended for advance users that want full control over the frame processing -// By default RL_EndDrawing() does this job: draws everything + RL_SwapScreenBuffer() + manage frame timing + RL_PollInputEvents() -// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL -RLAPI void RL_SwapScreenBuffer(void); // Swap back buffer with front buffer (screen drawing) -RLAPI void RL_PollInputEvents(void); // Register all input events -RLAPI void RL_WaitTime(double seconds); // Wait for some time (halt program execution) +// By default end_drawing() does this job: draws everything + swap_screen_buffer() + manage frame timing + poll_input_events() +// To avoid that behaviour and control frame processes manually, enable in config.h: RL_SUPPORT_CUSTOM_FRAME_CONTROL +RLAPI void swap_screen_buffer(void); // Swap back buffer with front buffer (screen drawing) +RLAPI void poll_input_events(void); // Register all input events +RLAPI void wait_time(double seconds); // Wait for some time (halt program execution) // Random values generation functions -RLAPI void RL_SetRandomSeed(unsigned int seed); // Set the seed for the random number generator -RLAPI int RL_GetRandomValue(int min, int max); // Get a random value between min and max (both included) +RLAPI void set_random_seed(unsigned int seed); // Set the seed for the random number generator +RLAPI int get_random_value(int min, int max); // Get a random value between min and max (both included) RLAPI int *LoadRandomSequence(unsigned int count, int min, int max); // Load random values sequence, no values repeated -RLAPI void UnloadRandomSequence(int *sequence); // Unload random values sequence +RLAPI void unload_random_sequence(int *sequence); // Unload random values sequence // Misc. functions -RLAPI void RL_TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (filename extension defines format) -RLAPI void RL_SetConfigFlags(unsigned int flags); // Setup init configuration flags (view FLAGS) -RLAPI void RL_OpenURL(const char *url); // Open URL with default system browser (if available) +RLAPI void take_screenshot(const char *fileName); // Takes a screenshot of current screen (filename extension defines format) +RLAPI void set_config_flags(unsigned int flags); // Setup init configuration flags (view FLAGS) +RLAPI void open_url(const char *url); // Open URL with default system browser (if available) // NOTE: Following functions implemented in module [utils] //------------------------------------------------------------------ -RLAPI void RL_TraceLog(int logLevel, const char *text, ...); // Show trace log messages (RL_LOG_DEBUG, RL_LOG_INFO, RL_LOG_WARNING, RL_LOG_ERROR...) -RLAPI void RL_SetTraceLogLevel(int logLevel); // Set the current threshold (minimum) log level -RLAPI void *RL_MemAlloc(unsigned int size); // Internal memory allocator -RLAPI void *RL_MemRealloc(void *ptr, unsigned int size); // Internal memory reallocator -RLAPI void RL_MemFree(void *ptr); // Internal memory free +RLAPI void trace_log(int logLevel, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) +RLAPI void set_trace_log_level(int logLevel); // Set the current threshold (minimum) log level +RLAPI void *MemAlloc(unsigned int size); // Internal memory allocator +RLAPI void *MemRealloc(void *ptr, unsigned int size); // Internal memory reallocator +RLAPI void mem_free(void *ptr); // Internal memory free // Set custom callbacks // WARNING: Callbacks setup is intended for advance users -RLAPI void RL_SetTraceLogCallback(RL_TraceLogCallback callback); // Set custom trace log -RLAPI void RL_SetLoadFileDataCallback(RL_LoadFileDataCallback callback); // Set custom file binary data loader -RLAPI void RL_SetSaveFileDataCallback(RL_SaveFileDataCallback callback); // Set custom file binary data saver -RLAPI void RL_SetLoadFileTextCallback(RL_LoadFileTextCallback callback); // Set custom file text data loader -RLAPI void RL_SetSaveFileTextCallback(RL_SaveFileTextCallback callback); // Set custom file text data saver +RLAPI void set_trace_log_callback(TraceLogCallback callback); // Set custom trace log +RLAPI void set_load_file_data_callback(LoadFileDataCallback callback); // Set custom file binary data loader +RLAPI void set_save_file_data_callback(SaveFileDataCallback callback); // Set custom file binary data saver +RLAPI void set_load_file_text_callback(LoadFileTextCallback callback); // Set custom file text data loader +RLAPI void set_save_file_text_callback(SaveFileTextCallback callback); // Set custom file text data saver // Files management functions -RLAPI unsigned char *RL_LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read) -RLAPI void RL_UnloadFileData(unsigned char *data); // Unload file data allocated by RL_LoadFileData() -RLAPI bool RL_SaveFileData(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write), returns true on success -RLAPI bool RL_ExportDataAsCode(const unsigned char *data, int dataSize, const char *fileName); // Export data to code (.h), returns true on success -RLAPI char *RL_LoadFileText(const char *fileName); // Load text data from file (read), returns a '\0' terminated string -RLAPI void RL_UnloadFileText(char *text); // Unload file text data allocated by RL_LoadFileText() -RLAPI bool RL_SaveFileText(const char *fileName, char *text); // Save text data to file (write), string must be '\0' terminated, returns true on success +RLAPI unsigned char *LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read) +RLAPI void unload_file_data(unsigned char *data); // Unload file data allocated by LoadFileData() +RLAPI bool save_file_data(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write), returns true on success +RLAPI bool export_data_as_code(const unsigned char *data, int dataSize, const char *fileName); // Export data to code (.h), returns true on success +RLAPI char *LoadFileText(const char *fileName); // Load text data from file (read), returns a '\0' terminated string +RLAPI void unload_file_text(char *text); // Unload file text data allocated by LoadFileText() +RLAPI bool save_file_text(const char *fileName, char *text); // Save text data to file (write), string must be '\0' terminated, returns true on success //------------------------------------------------------------------ // File system functions -RLAPI bool RL_FileExists(const char *fileName); // Check if file exists -RLAPI bool RL_DirectoryExists(const char *dirPath); // Check if a directory path exists -RLAPI bool RL_IsFileExtension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) -RLAPI int RL_GetFileLength(const char *fileName); // Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) -RLAPI const char *RL_GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes dot: '.png') -RLAPI const char *RL_GetFileName(const char *filePath); // Get pointer to filename for a path string -RLAPI const char *RL_GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) -RLAPI const char *RL_GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) -RLAPI const char *RL_GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) -RLAPI const char *RL_GetWorkingDirectory(void); // Get current working directory (uses static string) -RLAPI const char *RL_GetApplicationDirectory(void); // Get the directory of the running application (uses static string) -RLAPI bool RL_ChangeDirectory(const char *dir); // Change working directory, return true on success -RLAPI bool RL_IsPathFile(const char *path); // Check if a given path is a file or a directory -RLAPI RL_FilePathList RL_LoadDirectoryFiles(const char *dirPath); // Load directory filepaths -RLAPI RL_FilePathList RL_LoadDirectoryFilesEx(const char *basePath, const char *filter, bool scanSubdirs); // Load directory filepaths with extension filtering and recursive directory scan -RLAPI void RL_UnloadDirectoryFiles(RL_FilePathList files); // Unload filepaths -RLAPI bool RL_IsFileDropped(void); // Check if a file has been dropped into window -RLAPI RL_FilePathList RL_LoadDroppedFiles(void); // Load dropped filepaths -RLAPI void RL_UnloadDroppedFiles(RL_FilePathList files); // Unload dropped filepaths -RLAPI long RL_GetFileModTime(const char *fileName); // Get file modification time (last write time) +RLAPI bool file_exists(const char *fileName); // Check if file exists +RLAPI bool directory_exists(const char *dirPath); // Check if a directory path exists +RLAPI bool is_file_extension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) +RLAPI int get_file_length(const char *fileName); // Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) +RLAPI const char *GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes dot: '.png') +RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string +RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) +RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) +RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) +RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string) +RLAPI const char *GetApplicationDirectory(void); // Get the directory of the running application (uses static string) +RLAPI bool change_directory(const char *dir); // Change working directory, return true on success +RLAPI bool is_path_file(const char *path); // Check if a given path is a file or a directory +RLAPI File_Path_List load_directory_files(const char *dirPath); // Load directory filepaths +RLAPI File_Path_List load_directory_files_ex(const char *basePath, const char *filter, bool scanSubdirs); // Load directory filepaths with extension filtering and recursive directory scan +RLAPI void unload_directory_files(File_Path_List files); // Unload filepaths +RLAPI bool is_file_dropped(void); // Check if a file has been dropped into window +RLAPI File_Path_List load_dropped_files(void); // Load dropped filepaths +RLAPI void unload_dropped_files(File_Path_List files); // Unload dropped filepaths +RLAPI long get_file_mod_time(const char *fileName); // Get file modification time (last write time) // Compression/Encoding functionality -RLAPI unsigned char *RL_CompressData(const unsigned char *data, int dataSize, int *compDataSize); // Compress data (DEFLATE algorithm), memory must be RL_MemFree() -RLAPI unsigned char *RL_DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // Decompress data (DEFLATE algorithm), memory must be RL_MemFree() -RLAPI char *RL_EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize); // Encode data to Base64 string, memory must be RL_MemFree() -RLAPI unsigned char *RL_DecodeDataBase64(const unsigned char *data, int *outputSize); // Decode Base64 string data, memory must be RL_MemFree() +RLAPI unsigned char *CompressData(const unsigned char *data, int dataSize, int *compDataSize); // Compress data (DEFLATE algorithm), memory must be mem_free() +RLAPI unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // Decompress data (DEFLATE algorithm), memory must be mem_free() +RLAPI char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize); // Encode data to Base64 string, memory must be mem_free() +RLAPI unsigned char *DecodeDataBase64(const unsigned char *data, int *outputSize); // Decode Base64 string data, memory must be mem_free() // Automation events functionality -RLAPI RL_AutomationEventList RL_LoadAutomationEventList(const char *fileName); // Load automation events list from file, NULL for empty list, capacity = RL_MAX_AUTOMATION_EVENTS -RLAPI void RL_UnloadAutomationEventList(RL_AutomationEventList *list); // Unload automation events list from file -RLAPI bool RL_ExportAutomationEventList(RL_AutomationEventList list, const char *fileName); // Export automation events list as text file -RLAPI void RL_SetAutomationEventList(RL_AutomationEventList *list); // Set automation event list to record to -RLAPI void RL_SetAutomationEventBaseFrame(int frame); // Set automation event internal base frame to start recording -RLAPI void RL_StartAutomationEventRecording(void); // Start recording automation events (RL_AutomationEventList must be set) -RLAPI void RL_StopAutomationEventRecording(void); // Stop recording automation events -RLAPI void RL_PlayAutomationEvent(RL_AutomationEvent event); // Play a recorded automation event +RLAPI Automation_Event_List load_automation_event_list(const char *fileName); // Load automation events list from file, NULL for empty list, capacity = RL_MAX_AUTOMATION_EVENTS +RLAPI void unload_automation_event_list(Automation_Event_List *list); // Unload automation events list from file +RLAPI bool export_automation_event_list(Automation_Event_List list, const char *fileName); // Export automation events list as text file +RLAPI void set_automation_event_list(Automation_Event_List *list); // Set automation event list to record to +RLAPI void set_automation_event_base_frame(int frame); // Set automation event internal base frame to start recording +RLAPI void start_automation_event_recording(void); // Start recording automation events (Automation_Event_List must be set) +RLAPI void stop_automation_event_recording(void); // Stop recording automation events +RLAPI void play_automation_event(Automation_Event event); // Play a recorded automation event //------------------------------------------------------------------------------------ // Input Handling Functions (Module: core) //------------------------------------------------------------------------------------ // Input-related functions: keyboard -RLAPI bool RL_IsKeyPressed(int key); // Check if a key has been pressed once -RLAPI bool RL_IsKeyPressedRepeat(int key); // Check if a key has been pressed again (Only PLATFORM_DESKTOP) -RLAPI bool RL_IsKeyDown(int key); // Check if a key is being pressed -RLAPI bool RL_IsKeyReleased(int key); // Check if a key has been released once -RLAPI bool RL_IsKeyUp(int key); // Check if a key is NOT being pressed -RLAPI int RL_GetKeyPressed(void); // Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty -RLAPI int RL_GetCharPressed(void); // Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty -RLAPI void RL_SetExitKey(int key); // Set a custom key to exit program (default is ESC) +RLAPI bool is_key_pressed(int key); // Check if a key has been pressed once +RLAPI bool is_key_pressed_repeat(int key); // Check if a key has been pressed again (Only PLATFORM_DESKTOP) +RLAPI bool is_key_down(int key); // Check if a key is being pressed +RLAPI bool is_key_released(int key); // Check if a key has been released once +RLAPI bool is_key_up(int key); // Check if a key is NOT being pressed +RLAPI int get_key_pressed(void); // Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty +RLAPI int get_char_pressed(void); // Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty +RLAPI void set_exit_key(int key); // Set a custom key to exit program (default is ESC) // Input-related functions: gamepads -RLAPI bool RL_IsGamepadAvailable(int gamepad); // Check if a gamepad is available -RLAPI const char *RL_GetGamepadName(int gamepad); // Get gamepad internal name id -RLAPI bool RL_IsGamepadButtonPressed(int gamepad, int button); // Check if a gamepad button has been pressed once -RLAPI bool RL_IsGamepadButtonDown(int gamepad, int button); // Check if a gamepad button is being pressed -RLAPI bool RL_IsGamepadButtonReleased(int gamepad, int button); // Check if a gamepad button has been released once -RLAPI bool RL_IsGamepadButtonUp(int gamepad, int button); // Check if a gamepad button is NOT being pressed -RLAPI int RL_GetGamepadButtonPressed(void); // Get the last gamepad button pressed -RLAPI int RL_GetGamepadAxisCount(int gamepad); // Get gamepad axis count for a gamepad -RLAPI float RL_GetGamepadAxisMovement(int gamepad, int axis); // Get axis movement value for a gamepad axis -RLAPI int RL_SetGamepadMappings(const char *mappings); // Set internal gamepad mappings (SDL_GameControllerDB) +RLAPI bool is_gamepad_available(int gamepad); // Check if a gamepad is available +RLAPI const char *GetGamepadName(int gamepad); // Get gamepad internal name id +RLAPI bool is_gamepad_button_pressed(int gamepad, int button); // Check if a gamepad button has been pressed once +RLAPI bool is_gamepad_button_down(int gamepad, int button); // Check if a gamepad button is being pressed +RLAPI bool is_gamepad_button_released(int gamepad, int button); // Check if a gamepad button has been released once +RLAPI bool is_gamepad_button_up(int gamepad, int button); // Check if a gamepad button is NOT being pressed +RLAPI int get_gamepad_button_pressed(void); // Get the last gamepad button pressed +RLAPI int get_gamepad_axis_count(int gamepad); // Get gamepad axis count for a gamepad +RLAPI float get_gamepad_axis_movement(int gamepad, int axis); // Get axis movement value for a gamepad axis +RLAPI int set_gamepad_mappings(const char *mappings); // Set internal gamepad mappings (SDL_GameControllerDB) // Input-related functions: mouse -RLAPI bool RL_IsMouseButtonPressed(int button); // Check if a mouse button has been pressed once -RLAPI bool RL_IsMouseButtonDown(int button); // Check if a mouse button is being pressed -RLAPI bool RL_IsMouseButtonReleased(int button); // Check if a mouse button has been released once -RLAPI bool RL_IsMouseButtonUp(int button); // Check if a mouse button is NOT being pressed -RLAPI int RL_GetMouseX(void); // Get mouse position X -RLAPI int RL_GetMouseY(void); // Get mouse position Y -RLAPI RL_Vector2 RL_GetMousePosition(void); // Get mouse position XY -RLAPI RL_Vector2 RL_GetMouseDelta(void); // Get mouse delta between frames -RLAPI void RL_SetMousePosition(int x, int y); // Set mouse position XY -RLAPI void RL_SetMouseOffset(int offsetX, int offsetY); // Set mouse offset -RLAPI void RL_SetMouseScale(float scaleX, float scaleY); // Set mouse scaling -RLAPI float RL_GetMouseWheelMove(void); // Get mouse wheel movement for X or Y, whichever is larger -RLAPI RL_Vector2 RL_GetMouseWheelMoveV(void); // Get mouse wheel movement for both X and Y -RLAPI void RL_SetMouseCursor(int cursor); // Set mouse cursor +RLAPI bool is_mouse_button_pressed(int button); // Check if a mouse button has been pressed once +RLAPI bool is_mouse_button_down(int button); // Check if a mouse button is being pressed +RLAPI bool is_mouse_button_released(int button); // Check if a mouse button has been released once +RLAPI bool is_mouse_button_up(int button); // Check if a mouse button is NOT being pressed +RLAPI int get_mouse_x(void); // Get mouse position X +RLAPI int get_mouse_y(void); // Get mouse position Y +RLAPI Vector2 get_mouse_position(void); // Get mouse position XY +RLAPI Vector2 get_mouse_delta(void); // Get mouse delta between frames +RLAPI void set_mouse_position(int x, int y); // Set mouse position XY +RLAPI void set_mouse_offset(int offsetX, int offsetY); // Set mouse offset +RLAPI void set_mouse_scale(float scaleX, float scaleY); // Set mouse scaling +RLAPI float get_mouse_wheel_move(void); // Get mouse wheel movement for X or Y, whichever is larger +RLAPI Vector2 get_mouse_wheel_move_v(void); // Get mouse wheel movement for both X and Y +RLAPI void set_mouse_cursor(int cursor); // Set mouse cursor // Input-related functions: touch -RLAPI int RL_GetTouchX(void); // Get touch position X for touch point 0 (relative to screen size) -RLAPI int RL_GetTouchY(void); // Get touch position Y for touch point 0 (relative to screen size) -RLAPI RL_Vector2 RL_GetTouchPosition(int index); // Get touch position XY for a touch point index (relative to screen size) -RLAPI int RL_GetTouchPointId(int index); // Get touch point identifier for given index -RLAPI int RL_GetTouchPointCount(void); // Get number of touch points +RLAPI int get_touch_x(void); // Get touch position X for touch point 0 (relative to screen size) +RLAPI int get_touch_y(void); // Get touch position Y for touch point 0 (relative to screen size) +RLAPI Vector2 get_touch_position(int index); // Get touch position XY for a touch point index (relative to screen size) +RLAPI int get_touch_point_id(int index); // Get touch point identifier for given index +RLAPI int get_touch_point_count(void); // Get number of touch points //------------------------------------------------------------------------------------ // Gestures and Touch Handling Functions (Module: rgestures) //------------------------------------------------------------------------------------ -RLAPI void RL_SetGesturesEnabled(unsigned int flags); // Enable a set of gestures using flags -RLAPI bool RL_IsGestureDetected(unsigned int gesture); // Check if a gesture have been detected -RLAPI int RL_GetGestureDetected(void); // Get latest detected gesture -RLAPI float RL_GetGestureHoldDuration(void); // Get gesture hold time in milliseconds -RLAPI RL_Vector2 RL_GetGestureDragVector(void); // Get gesture drag vector -RLAPI float RL_GetGestureDragAngle(void); // Get gesture drag angle -RLAPI RL_Vector2 RL_GetGesturePinchVector(void); // Get gesture pinch delta -RLAPI float RL_GetGesturePinchAngle(void); // Get gesture pinch angle +RLAPI void set_gestures_enabled(unsigned int flags); // Enable a set of gestures using flags +RLAPI bool is_gesture_detected(unsigned int gesture); // Check if a gesture have been detected +RLAPI int get_gesture_detected(void); // Get latest detected gesture +RLAPI float get_gesture_hold_duration(void); // Get gesture hold time in milliseconds +RLAPI Vector2 get_gesture_drag_vector(void); // Get gesture drag vector +RLAPI float get_gesture_drag_angle(void); // Get gesture drag angle +RLAPI Vector2 get_gesture_pinch_vector(void); // Get gesture pinch delta +RLAPI float get_gesture_pinch_angle(void); // Get gesture pinch angle //------------------------------------------------------------------------------------ -// RL_Camera System Functions (Module: rcamera) +// Camera System Functions (Module: rcamera) //------------------------------------------------------------------------------------ -RLAPI void RL_UpdateCamera(RL_Camera *camera, int mode); // Update camera position for selected mode -RLAPI void RL_UpdateCameraPro(RL_Camera *camera, RL_Vector3 movement, RL_Vector3 rotation, float zoom); // Update camera movement/rotation +RLAPI void update_camera(Camera *camera, int mode); // Update camera position for selected mode +RLAPI void update_camera_pro(Camera *camera, Vector3 movement, Vector3 rotation, float zoom); // Update camera movement/rotation //------------------------------------------------------------------------------------ // Basic Shapes Drawing Functions (Module: shapes) @@ -1215,362 +1229,363 @@ RLAPI void RL_UpdateCameraPro(RL_Camera *camera, RL_Vector3 movement, RL_Vector3 // Set texture and rectangle to be used on shapes drawing // NOTE: It can be useful when using basic shapes and one single font, // defining a font char white rectangle would allow drawing everything in a single draw call -RLAPI void RL_SetShapesTexture(RL_Texture2D texture, RL_Rectangle source); // Set texture and rectangle to be used on shapes drawing +RLAPI void set_shapes_texture(Texture2d texture, Rectangle source); // Set texture and rectangle to be used on shapes drawing // Basic shapes drawing functions -RLAPI void RL_DrawPixel(int posX, int posY, RL_Color color); // Draw a pixel -RLAPI void RL_DrawPixelV(RL_Vector2 position, RL_Color color); // Draw a pixel (Vector version) -RLAPI void RL_DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, RL_Color color); // Draw a line -RLAPI void RL_DrawLineV(RL_Vector2 startPos, RL_Vector2 endPos, RL_Color color); // Draw a line (using gl lines) -RLAPI void RL_DrawLineEx(RL_Vector2 startPos, RL_Vector2 endPos, float thick, RL_Color color); // Draw a line (using triangles/quads) -RLAPI void RL_DrawLineStrip(RL_Vector2 *points, int pointCount, RL_Color color); // Draw lines sequence (using gl lines) -RLAPI void RL_DrawLineBezier(RL_Vector2 startPos, RL_Vector2 endPos, float thick, RL_Color color); // Draw line segment cubic-bezier in-out interpolation -RLAPI void RL_DrawCircle(int centerX, int centerY, float radius, RL_Color color); // Draw a color-filled circle -RLAPI void RL_DrawCircleSector(RL_Vector2 center, float radius, float startAngle, float endAngle, int segments, RL_Color color); // Draw a piece of a circle -RLAPI void RL_DrawCircleSectorLines(RL_Vector2 center, float radius, float startAngle, float endAngle, int segments, RL_Color color); // Draw circle sector outline -RLAPI void RL_DrawCircleGradient(int centerX, int centerY, float radius, RL_Color color1, RL_Color color2); // Draw a gradient-filled circle -RLAPI void RL_DrawCircleV(RL_Vector2 center, float radius, RL_Color color); // Draw a color-filled circle (Vector version) -RLAPI void RL_DrawCircleLines(int centerX, int centerY, float radius, RL_Color color); // Draw circle outline -RLAPI void RL_DrawCircleLinesV(RL_Vector2 center, float radius, RL_Color color); // Draw circle outline (Vector version) -RLAPI void RL_DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, RL_Color color); // Draw ellipse -RLAPI void RL_DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, RL_Color color); // Draw ellipse outline -RLAPI void RL_DrawRing(RL_Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, RL_Color color); // Draw ring -RLAPI void RL_DrawRingLines(RL_Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, RL_Color color); // Draw ring outline -RLAPI void RL_DrawRectangle(int posX, int posY, int width, int height, RL_Color color); // Draw a color-filled rectangle -RLAPI void RL_DrawRectangleV(RL_Vector2 position, RL_Vector2 size, RL_Color color); // Draw a color-filled rectangle (Vector version) -RLAPI void RL_DrawRectangleRec(RL_Rectangle rec, RL_Color color); // Draw a color-filled rectangle -RLAPI void RL_DrawRectanglePro(RL_Rectangle rec, RL_Vector2 origin, float rotation, RL_Color color); // Draw a color-filled rectangle with pro parameters -RLAPI void RL_DrawRectangleGradientV(int posX, int posY, int width, int height, RL_Color color1, RL_Color color2);// Draw a vertical-gradient-filled rectangle -RLAPI void RL_DrawRectangleGradientH(int posX, int posY, int width, int height, RL_Color color1, RL_Color color2);// Draw a horizontal-gradient-filled rectangle -RLAPI void RL_DrawRectangleGradientEx(RL_Rectangle rec, RL_Color col1, RL_Color col2, RL_Color col3, RL_Color col4); // Draw a gradient-filled rectangle with custom vertex colors -RLAPI void RL_DrawRectangleLines(int posX, int posY, int width, int height, RL_Color color); // Draw rectangle outline -RLAPI void RL_DrawRectangleLinesEx(RL_Rectangle rec, float lineThick, RL_Color color); // Draw rectangle outline with extended parameters -RLAPI void RL_DrawRectangleRounded(RL_Rectangle rec, float roundness, int segments, RL_Color color); // Draw rectangle with rounded edges -RLAPI void RL_DrawRectangleRoundedLines(RL_Rectangle rec, float roundness, int segments, float lineThick, RL_Color color); // Draw rectangle with rounded edges outline -RLAPI void RL_DrawTriangle(RL_Vector2 v1, RL_Vector2 v2, RL_Vector2 v3, RL_Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) -RLAPI void RL_DrawTriangleLines(RL_Vector2 v1, RL_Vector2 v2, RL_Vector2 v3, RL_Color color); // Draw triangle outline (vertex in counter-clockwise order!) -RLAPI void RL_DrawTriangleFan(RL_Vector2 *points, int pointCount, RL_Color color); // Draw a triangle fan defined by points (first vertex is the center) -RLAPI void RL_DrawTriangleStrip(RL_Vector2 *points, int pointCount, RL_Color color); // Draw a triangle strip defined by points -RLAPI void RL_DrawPoly(RL_Vector2 center, int sides, float radius, float rotation, RL_Color color); // Draw a regular polygon (Vector version) -RLAPI void RL_DrawPolyLines(RL_Vector2 center, int sides, float radius, float rotation, RL_Color color); // Draw a polygon outline of n sides -RLAPI void RL_DrawPolyLinesEx(RL_Vector2 center, int sides, float radius, float rotation, float lineThick, RL_Color color); // Draw a polygon outline of n sides with extended parameters +RLAPI void draw_pixel(int posX, int posY, Color color); // Draw a pixel +RLAPI void draw_pixel_v(Vector2 position, Color color); // Draw a pixel (Vector version) +RLAPI void draw_line(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line +RLAPI void draw_line_v(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (using gl lines) +RLAPI void draw_line_ex(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line (using triangles/quads) +RLAPI void draw_line_strip(Vector2 *points, int pointCount, Color color); // Draw lines sequence (using gl lines) +RLAPI void draw_line_bezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw line segment cubic-bezier in-out interpolation +RLAPI void draw_circle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle +RLAPI void draw_circle_sector(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw a piece of a circle +RLAPI void draw_circle_sector_lines(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw circle sector outline +RLAPI void draw_circle_gradient(int centerX, int centerY, float radius, Color color1, Color color2); // Draw a gradient-filled circle +RLAPI void draw_circle_v(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) +RLAPI void draw_circle_lines(int centerX, int centerY, float radius, Color color); // Draw circle outline +RLAPI void draw_circle_lines_v(Vector2 center, float radius, Color color); // Draw circle outline (Vector version) +RLAPI void draw_ellipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse +RLAPI void draw_ellipse_lines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline +RLAPI void draw_ring(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring +RLAPI void draw_ring_lines(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring outline +RLAPI void draw_rectangle(int posX, int posY, int width, int height, Color color); // Draw a color-filled rectangle +RLAPI void draw_rectangle_v(Vector2 position, Vector2 size, Color color); // Draw a color-filled rectangle (Vector version) +RLAPI void draw_rectangle_rec(Rectangle rec, Color color); // Draw a color-filled rectangle +RLAPI void draw_rectangle_pro(Rectangle rec, Vector2 origin, float rotation, Color color); // Draw a color-filled rectangle with pro parameters +RLAPI void draw_rectangle_gradient_v(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a vertical-gradient-filled rectangle +RLAPI void draw_rectangle_gradient_h(int posX, int posY, int width, int height, Color color1, Color color2);// Draw a horizontal-gradient-filled rectangle +RLAPI void draw_rectangle_gradient_ex(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // Draw a gradient-filled rectangle with custom vertex colors +RLAPI void draw_rectangle_lines(int posX, int posY, int width, int height, Color color); // Draw rectangle outline +RLAPI void draw_rectangle_lines_ex(Rectangle rec, float lineThick, Color color); // Draw rectangle outline with extended parameters +RLAPI void draw_rectangle_rounded(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle with rounded edges +RLAPI void draw_rectangle_rounded_lines(Rectangle rec, float roundness, int segments, float lineThick, Color color); // Draw rectangle with rounded edges outline +RLAPI void draw_triangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void draw_triangle_lines(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline (vertex in counter-clockwise order!) +RLAPI void draw_triangle_fan(Vector2 *points, int pointCount, Color color); // Draw a triangle fan defined by points (first vertex is the center) +RLAPI void draw_triangle_strip(Vector2 *points, int pointCount, Color color); // Draw a triangle strip defined by points +RLAPI void draw_poly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version) +RLAPI void draw_poly_lines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides +RLAPI void draw_poly_lines_ex(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color); // Draw a polygon outline of n sides with extended parameters // Splines drawing functions -RLAPI void DrawSplineLinear(RL_Vector2 *points, int pointCount, float thick, RL_Color color); // Draw spline: Linear, minimum 2 points -RLAPI void DrawSplineBasis(RL_Vector2 *points, int pointCount, float thick, RL_Color color); // Draw spline: B-Spline, minimum 4 points -RLAPI void DrawSplineCatmullRom(RL_Vector2 *points, int pointCount, float thick, RL_Color color); // Draw spline: Catmull-Rom, minimum 4 points -RLAPI void DrawSplineBezierQuadratic(RL_Vector2 *points, int pointCount, float thick, RL_Color color); // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] -RLAPI void DrawSplineBezierCubic(RL_Vector2 *points, int pointCount, float thick, RL_Color color); // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] -RLAPI void DrawSplineSegmentLinear(RL_Vector2 p1, RL_Vector2 p2, float thick, RL_Color color); // Draw spline segment: Linear, 2 points -RLAPI void DrawSplineSegmentBasis(RL_Vector2 p1, RL_Vector2 p2, RL_Vector2 p3, RL_Vector2 p4, float thick, RL_Color color); // Draw spline segment: B-Spline, 4 points -RLAPI void DrawSplineSegmentCatmullRom(RL_Vector2 p1, RL_Vector2 p2, RL_Vector2 p3, RL_Vector2 p4, float thick, RL_Color color); // Draw spline segment: Catmull-Rom, 4 points -RLAPI void DrawSplineSegmentBezierQuadratic(RL_Vector2 p1, RL_Vector2 c2, RL_Vector2 p3, float thick, RL_Color color); // Draw spline segment: Quadratic Bezier, 2 points, 1 control point -RLAPI void DrawSplineSegmentBezierCubic(RL_Vector2 p1, RL_Vector2 c2, RL_Vector2 c3, RL_Vector2 p4, float thick, RL_Color color); // Draw spline segment: Cubic Bezier, 2 points, 2 control points +RLAPI void draw_spline_linear(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Linear, minimum 2 points +RLAPI void draw_spline_basis(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: B-Spline, minimum 4 points +RLAPI void draw_spline_catmull_rom(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Catmull-Rom, minimum 4 points +RLAPI void draw_spline_bezier_quadratic(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] +RLAPI void draw_spline_bezier_cubic(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] +RLAPI void draw_spline_segment_linear(Vector2 p1, Vector2 p2, float thick, Color color); // Draw spline segment: Linear, 2 points +RLAPI void draw_spline_segment_basis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: B-Spline, 4 points +RLAPI void draw_spline_segment_catmull_rom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: Catmull-Rom, 4 points +RLAPI void draw_spline_segment_bezier_quadratic(Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color); // Draw spline segment: Quadratic Bezier, 2 points, 1 control point +RLAPI void draw_spline_segment_bezier_cubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, 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] -RLAPI RL_Vector2 GetSplinePointLinear(RL_Vector2 startPos, RL_Vector2 endPos, float t); // Get (evaluate) spline point: Linear -RLAPI RL_Vector2 GetSplinePointBasis(RL_Vector2 p1, RL_Vector2 p2, RL_Vector2 p3, RL_Vector2 p4, float t); // Get (evaluate) spline point: B-Spline -RLAPI RL_Vector2 GetSplinePointCatmullRom(RL_Vector2 p1, RL_Vector2 p2, RL_Vector2 p3, RL_Vector2 p4, float t); // Get (evaluate) spline point: Catmull-Rom -RLAPI RL_Vector2 GetSplinePointBezierQuad(RL_Vector2 p1, RL_Vector2 c2, RL_Vector2 p3, float t); // Get (evaluate) spline point: Quadratic Bezier -RLAPI RL_Vector2 GetSplinePointBezierCubic(RL_Vector2 p1, RL_Vector2 c2, RL_Vector2 c3, RL_Vector2 p4, float t); // Get (evaluate) spline point: Cubic Bezier +RLAPI Vector2 get_spline_point_linear(Vector2 startPos, Vector2 endPos, float t); // Get (evaluate) spline point: Linear +RLAPI Vector2 get_spline_point_basis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: B-Spline +RLAPI Vector2 get_spline_point_catmull_rom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: Catmull-Rom +RLAPI Vector2 get_spline_point_bezier_quad(Vector2 p1, Vector2 c2, Vector2 p3, float t); // Get (evaluate) spline point: Quadratic Bezier +RLAPI Vector2 get_spline_point_bezier_cubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t); // Get (evaluate) spline point: Cubic Bezier // Basic shapes collision detection functions -RLAPI bool RL_CheckCollisionRecs(RL_Rectangle rec1, RL_Rectangle rec2); // Check collision between two rectangles -RLAPI bool RL_CheckCollisionCircles(RL_Vector2 center1, float radius1, RL_Vector2 center2, float radius2); // Check collision between two circles -RLAPI bool RL_CheckCollisionCircleRec(RL_Vector2 center, float radius, RL_Rectangle rec); // Check collision between circle and rectangle -RLAPI bool RL_CheckCollisionPointRec(RL_Vector2 point, RL_Rectangle rec); // Check if point is inside rectangle -RLAPI bool RL_CheckCollisionPointCircle(RL_Vector2 point, RL_Vector2 center, float radius); // Check if point is inside circle -RLAPI bool RL_CheckCollisionPointTriangle(RL_Vector2 point, RL_Vector2 p1, RL_Vector2 p2, RL_Vector2 p3); // Check if point is inside a triangle -RLAPI bool RL_CheckCollisionPointPoly(RL_Vector2 point, RL_Vector2 *points, int pointCount); // Check if point is within a polygon described by array of vertices -RLAPI bool RL_CheckCollisionLines(RL_Vector2 startPos1, RL_Vector2 endPos1, RL_Vector2 startPos2, RL_Vector2 endPos2, RL_Vector2 *collisionPoint); // Check the collision between two lines defined by two points each, returns collision point by reference -RLAPI bool RL_CheckCollisionPointLine(RL_Vector2 point, RL_Vector2 p1, RL_Vector2 p2, int threshold); // Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold] -RLAPI RL_Rectangle RL_GetCollisionRec(RL_Rectangle rec1, RL_Rectangle rec2); // Get collision rectangle for two rectangles collision +RLAPI bool check_collision_recs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles +RLAPI bool check_collision_circles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles +RLAPI bool check_collision_circle_rec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle +RLAPI bool check_collision_point_rec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +RLAPI bool check_collision_point_circle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle +RLAPI bool check_collision_point_triangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3); // Check if point is inside a triangle +RLAPI bool check_collision_point_poly(Vector2 point, Vector2 *points, int pointCount); // Check if point is within a polygon described by array of vertices +RLAPI bool check_collision_lines(Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2 *collisionPoint); // Check the collision between two lines defined by two points each, returns collision point by reference +RLAPI bool check_collision_point_line(Vector2 point, Vector2 p1, Vector2 p2, int threshold); // Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold] +RLAPI Rectangle get_collision_rec(Rectangle rec1, Rectangle rec2); // Get collision rectangle for two rectangles collision //------------------------------------------------------------------------------------ -// RL_Texture Loading and Drawing Functions (Module: textures) +// Texture Loading and Drawing Functions (Module: textures) //------------------------------------------------------------------------------------ -// RL_Image loading functions +// Image loading functions // NOTE: These functions do not require GPU access -RLAPI RL_Image RL_LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) -RLAPI RL_Image RL_LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data -RLAPI RL_Image RL_LoadImageSvg(const char *fileNameOrString, int width, int height); // Load image from SVG file data or string with specified size -RLAPI RL_Image RL_LoadImageAnim(const char *fileName, int *frames); // Load image sequence from file (frames appended to image.data) -RLAPI RL_Image RL_LoadImageFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load image from memory buffer, fileType refers to extension: i.e. '.png' -RLAPI RL_Image RL_LoadImageFromTexture(RL_Texture2D texture); // Load image from GPU texture data -RLAPI RL_Image RL_LoadImageFromScreen(void); // Load image from screen buffer and (screenshot) -RLAPI bool RL_IsImageReady(RL_Image image); // Check if an image is ready -RLAPI void RL_UnloadImage(RL_Image image); // Unload image from CPU memory (RAM) -RLAPI bool RL_ExportImage(RL_Image image, const char *fileName); // Export image data to file, returns true on success -RLAPI unsigned char *RL_ExportImageToMemory(RL_Image image, const char *fileType, int *fileSize); // Export image to memory buffer -RLAPI bool RL_ExportImageAsCode(RL_Image image, const char *fileName); // Export image as code file defining an array of bytes, returns true on success +RLAPI Image load_image(const char *fileName); // Load image from file into CPU memory (RAM) +RLAPI Image load_image_raw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data +RLAPI Image load_image_svg(const char *fileNameOrString, int width, int height); // Load image from SVG file data or string with specified size +RLAPI Image load_image_anim(const char *fileName, int *frames); // Load image sequence from file (frames appended to image.data) +RLAPI Image load_image_from_memory(const char *fileType, const unsigned char *fileData, int dataSize); // Load image from memory buffer, fileType refers to extension: i.e. '.png' +RLAPI Image load_image_from_texture(Texture2d texture); // Load image from GPU texture data +RLAPI Image load_image_from_screen(void); // Load image from screen buffer and (screenshot) +RLAPI bool is_image_ready(Image image); // Check if an image is ready +RLAPI void unload_image(Image image); // Unload image from CPU memory (RAM) +RLAPI bool export_image(Image image, const char *fileName); // Export image data to file, returns true on success +RLAPI unsigned char *ExportImageToMemory(Image image, const char *fileType, int *fileSize); // Export image to memory buffer +RLAPI bool export_image_as_code(Image image, const char *fileName); // Export image as code file defining an array of bytes, returns true on success -// RL_Image generation functions -RLAPI RL_Image RL_GenImageColor(int width, int height, RL_Color color); // Generate image: plain color -RLAPI RL_Image RL_GenImageGradientLinear(int width, int height, int direction, RL_Color start, RL_Color end); // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient -RLAPI RL_Image RL_GenImageGradientRadial(int width, int height, float density, RL_Color inner, RL_Color outer); // Generate image: radial gradient -RLAPI RL_Image RL_GenImageGradientSquare(int width, int height, float density, RL_Color inner, RL_Color outer); // Generate image: square gradient -RLAPI RL_Image RL_GenImageChecked(int width, int height, int checksX, int checksY, RL_Color col1, RL_Color col2); // Generate image: checked -RLAPI RL_Image RL_GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise -RLAPI RL_Image RL_GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise -RLAPI RL_Image RL_GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm, bigger tileSize means bigger cells -RLAPI RL_Image RL_GenImageText(int width, int height, const char *text); // Generate image: grayscale image from text data +// Image generation functions +RLAPI Image gen_image_color(int width, int height, Color color); // Generate image: plain color +RLAPI Image gen_image_gradient_linear(int width, int height, int direction, Color start, Color end); // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient +RLAPI Image gen_image_gradient_radial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient +RLAPI Image gen_image_gradient_square(int width, int height, float density, Color inner, Color outer); // Generate image: square gradient +RLAPI Image gen_image_checked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked +RLAPI Image gen_image_white_noise(int width, int height, float factor); // Generate image: white noise +RLAPI Image gen_image_perlin_noise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise +RLAPI Image gen_image_cellular(int width, int height, int tileSize); // Generate image: cellular algorithm, bigger tileSize means bigger cells +RLAPI Image gen_image_text(int width, int height, const char *text); // Generate image: grayscale image from text data -// RL_Image manipulation functions -RLAPI RL_Image RL_ImageCopy(RL_Image image); // Create an image duplicate (useful for transformations) -RLAPI RL_Image RL_ImageFromImage(RL_Image image, RL_Rectangle rec); // Create an image from another image piece -RLAPI RL_Image RL_ImageText(const char *text, int fontSize, RL_Color color); // Create an image from text (default font) -RLAPI RL_Image RL_ImageTextEx(RL_Font font, const char *text, float fontSize, float spacing, RL_Color tint); // Create an image from text (custom sprite font) -RLAPI void RL_ImageFormat(RL_Image *image, int newFormat); // Convert image data to desired format -RLAPI void RL_ImageToPOT(RL_Image *image, RL_Color fill); // Convert image to POT (power-of-two) -RLAPI void RL_ImageCrop(RL_Image *image, RL_Rectangle crop); // Crop an image to a defined rectangle -RLAPI void RL_ImageAlphaCrop(RL_Image *image, float threshold); // Crop image depending on alpha value -RLAPI void RL_ImageAlphaClear(RL_Image *image, RL_Color color, float threshold); // Clear alpha channel to desired color -RLAPI void RL_ImageAlphaMask(RL_Image *image, RL_Image alphaMask); // Apply alpha mask to image -RLAPI void RL_ImageAlphaPremultiply(RL_Image *image); // Premultiply alpha channel -RLAPI void RL_ImageBlurGaussian(RL_Image *image, int blurSize); // Apply Gaussian blur using a box blur approximation -RLAPI void RL_ImageResize(RL_Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) -RLAPI void RL_ImageResizeNN(RL_Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) -RLAPI void RL_ImageResizeCanvas(RL_Image *image, int newWidth, int newHeight, int offsetX, int offsetY, RL_Color fill); // Resize canvas and fill with color -RLAPI void RL_ImageMipmaps(RL_Image *image); // Compute all mipmap levels for a provided image -RLAPI void RL_ImageDither(RL_Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) -RLAPI void RL_ImageFlipVertical(RL_Image *image); // Flip image vertically -RLAPI void RL_ImageFlipHorizontal(RL_Image *image); // Flip image horizontally -RLAPI void RL_ImageRotate(RL_Image *image, int degrees); // Rotate image by input angle in degrees (-359 to 359) -RLAPI void RL_ImageRotateCW(RL_Image *image); // Rotate image clockwise 90deg -RLAPI void RL_ImageRotateCCW(RL_Image *image); // Rotate image counter-clockwise 90deg -RLAPI void RL_ImageColorTint(RL_Image *image, RL_Color color); // Modify image color: tint -RLAPI void RL_ImageColorInvert(RL_Image *image); // Modify image color: invert -RLAPI void RL_ImageColorGrayscale(RL_Image *image); // Modify image color: grayscale -RLAPI void RL_ImageColorContrast(RL_Image *image, float contrast); // Modify image color: contrast (-100 to 100) -RLAPI void RL_ImageColorBrightness(RL_Image *image, int brightness); // Modify image color: brightness (-255 to 255) -RLAPI void RL_ImageColorReplace(RL_Image *image, RL_Color color, RL_Color replace); // Modify image color: replace color -RLAPI RL_Color *RL_LoadImageColors(RL_Image image); // Load color data from image as a RL_Color array (RGBA - 32bit) -RLAPI RL_Color *RL_LoadImagePalette(RL_Image image, int maxPaletteSize, int *colorCount); // Load colors palette from image as a RL_Color array (RGBA - 32bit) -RLAPI void RL_UnloadImageColors(RL_Color *colors); // Unload color data loaded with RL_LoadImageColors() -RLAPI void RL_UnloadImagePalette(RL_Color *colors); // Unload colors palette loaded with RL_LoadImagePalette() -RLAPI RL_Rectangle RL_GetImageAlphaBorder(RL_Image image, float threshold); // Get image alpha border rectangle -RLAPI RL_Color RL_GetImageColor(RL_Image image, int x, int y); // Get image pixel color at (x, y) position +// Image manipulation functions +RLAPI Image image_copy(Image image); // Create an image duplicate (useful for transformations) +RLAPI Image image_from_image(Image image, Rectangle rec); // Create an image from another image piece +RLAPI Image image_text(const char *text, int fontSize, Color color); // Create an image from text (default font) +RLAPI Image image_text_ex(Font font, const char *text, float fontSize, float spacing, Color tint); // Create an image from text (custom sprite font) +RLAPI void image_format(Image *image, int newFormat); // Convert image data to desired format +RLAPI void image_to_pot(Image *image, Color fill); // Convert image to POT (power-of-two) +RLAPI void image_crop(Image *image, Rectangle crop); // Crop an image to a defined rectangle +RLAPI void image_alpha_crop(Image *image, float threshold); // Crop image depending on alpha value +RLAPI void image_alpha_clear(Image *image, Color color, float threshold); // Clear alpha channel to desired color +RLAPI void image_alpha_mask(Image *image, Image alphaMask); // Apply alpha mask to image +RLAPI void image_alpha_premultiply(Image *image); // Premultiply alpha channel +RLAPI void image_blur_gaussian(Image *image, int blurSize); // Apply Gaussian blur using a box blur approximation +RLAPI void ImageKernelConvolution(Image *image, float* kernel, int kernelSize); // Apply Custom Square image convolution kernel +RLAPI void image_resize(Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) +RLAPI void image_resize_nn(Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) +RLAPI void image_resize_canvas(Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill); // Resize canvas and fill with color +RLAPI void image_mipmaps(Image *image); // Compute all mipmap levels for a provided image +RLAPI void image_dither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) +RLAPI void image_flip_vertical(Image *image); // Flip image vertically +RLAPI void image_flip_horizontal(Image *image); // Flip image horizontally +RLAPI void image_rotate(Image *image, int degrees); // Rotate image by input angle in degrees (-359 to 359) +RLAPI void image_rotate_cw(Image *image); // Rotate image clockwise 90deg +RLAPI void image_rotate_ccw(Image *image); // Rotate image counter-clockwise 90deg +RLAPI void image_color_tint(Image *image, Color color); // Modify image color: tint +RLAPI void image_color_invert(Image *image); // Modify image color: invert +RLAPI void image_color_grayscale(Image *image); // Modify image color: grayscale +RLAPI void image_color_contrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100) +RLAPI void image_color_brightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255) +RLAPI void image_color_replace(Image *image, Color color, Color replace); // Modify image color: replace color +RLAPI Color *LoadImageColors(Image image); // Load color data from image as a Color array (RGBA - 32bit) +RLAPI Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorCount); // Load colors palette from image as a Color array (RGBA - 32bit) +RLAPI void unload_image_colors(Color *colors); // Unload color data loaded with LoadImageColors() +RLAPI void unload_image_palette(Color *colors); // Unload colors palette loaded with LoadImagePalette() +RLAPI Rectangle get_image_alpha_border(Image image, float threshold); // Get image alpha border rectangle +RLAPI Color get_image_color(Image image, int x, int y); // Get image pixel color at (x, y) position -// RL_Image drawing functions -// NOTE: RL_Image software-rendering functions (CPU) -RLAPI void RL_ImageClearBackground(RL_Image *dst, RL_Color color); // Clear image background with given color -RLAPI void RL_ImageDrawPixel(RL_Image *dst, int posX, int posY, RL_Color color); // Draw pixel within an image -RLAPI void RL_ImageDrawPixelV(RL_Image *dst, RL_Vector2 position, RL_Color color); // Draw pixel within an image (Vector version) -RLAPI void RL_ImageDrawLine(RL_Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, RL_Color color); // Draw line within an image -RLAPI void RL_ImageDrawLineV(RL_Image *dst, RL_Vector2 start, RL_Vector2 end, RL_Color color); // Draw line within an image (Vector version) -RLAPI void RL_ImageDrawCircle(RL_Image *dst, int centerX, int centerY, int radius, RL_Color color); // Draw a filled circle within an image -RLAPI void RL_ImageDrawCircleV(RL_Image *dst, RL_Vector2 center, int radius, RL_Color color); // Draw a filled circle within an image (Vector version) -RLAPI void RL_ImageDrawCircleLines(RL_Image *dst, int centerX, int centerY, int radius, RL_Color color); // Draw circle outline within an image -RLAPI void RL_ImageDrawCircleLinesV(RL_Image *dst, RL_Vector2 center, int radius, RL_Color color); // Draw circle outline within an image (Vector version) -RLAPI void RL_ImageDrawRectangle(RL_Image *dst, int posX, int posY, int width, int height, RL_Color color); // Draw rectangle within an image -RLAPI void RL_ImageDrawRectangleV(RL_Image *dst, RL_Vector2 position, RL_Vector2 size, RL_Color color); // Draw rectangle within an image (Vector version) -RLAPI void RL_ImageDrawRectangleRec(RL_Image *dst, RL_Rectangle rec, RL_Color color); // Draw rectangle within an image -RLAPI void RL_ImageDrawRectangleLines(RL_Image *dst, RL_Rectangle rec, int thick, RL_Color color); // Draw rectangle lines within an image -RLAPI void RL_ImageDraw(RL_Image *dst, RL_Image src, RL_Rectangle srcRec, RL_Rectangle dstRec, RL_Color tint); // Draw a source image within a destination image (tint applied to source) -RLAPI void RL_ImageDrawText(RL_Image *dst, const char *text, int posX, int posY, int fontSize, RL_Color color); // Draw text (using default font) within an image (destination) -RLAPI void RL_ImageDrawTextEx(RL_Image *dst, RL_Font font, const char *text, RL_Vector2 position, float fontSize, float spacing, RL_Color tint); // Draw text (custom sprite font) within an image (destination) +// Image drawing functions +// NOTE: Image software-rendering functions (CPU) +RLAPI void ImageClearBackground(Image *dst, Color color); // Clear image background with given color +RLAPI void image_draw_pixel(Image *dst, int posX, int posY, Color color); // Draw pixel within an image +RLAPI void image_draw_pixel_v(Image *dst, Vector2 position, Color color); // Draw pixel within an image (Vector version) +RLAPI void image_draw_line(Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw line within an image +RLAPI void image_draw_line_v(Image *dst, Vector2 start, Vector2 end, Color color); // Draw line within an image (Vector version) +RLAPI void image_draw_circle(Image *dst, int centerX, int centerY, int radius, Color color); // Draw a filled circle within an image +RLAPI void image_draw_circle_v(Image *dst, Vector2 center, int radius, Color color); // Draw a filled circle within an image (Vector version) +RLAPI void image_draw_circle_lines(Image *dst, int centerX, int centerY, int radius, Color color); // Draw circle outline within an image +RLAPI void image_draw_circle_lines_v(Image *dst, Vector2 center, int radius, Color color); // Draw circle outline within an image (Vector version) +RLAPI void image_draw_rectangle(Image *dst, int posX, int posY, int width, int height, Color color); // Draw rectangle within an image +RLAPI void image_draw_rectangle_v(Image *dst, Vector2 position, Vector2 size, Color color); // Draw rectangle within an image (Vector version) +RLAPI void image_draw_rectangle_rec(Image *dst, Rectangle rec, Color color); // Draw rectangle within an image +RLAPI void image_draw_rectangle_lines(Image *dst, Rectangle rec, int thick, Color color); // Draw rectangle lines within an image +RLAPI void image_draw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); // Draw a source image within a destination image (tint applied to source) +RLAPI void image_draw_text(Image *dst, const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) within an image (destination) +RLAPI void image_draw_text_ex(Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text (custom sprite font) within an image (destination) -// RL_Texture loading functions +// Texture loading functions // NOTE: These functions require GPU access -RLAPI RL_Texture2D RL_LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) -RLAPI RL_Texture2D RL_LoadTextureFromImage(RL_Image image); // Load texture from image data -RLAPI RL_TextureCubemap RL_LoadTextureCubemap(RL_Image image, int layout); // Load cubemap from image, multiple image cubemap layouts supported -RLAPI RL_RenderTexture2D RL_LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) -RLAPI bool RL_IsTextureReady(RL_Texture2D texture); // Check if a texture is ready -RLAPI void RL_UnloadTexture(RL_Texture2D texture); // Unload texture from GPU memory (VRAM) -RLAPI bool RL_IsRenderTextureReady(RL_RenderTexture2D target); // Check if a render texture is ready -RLAPI void RL_UnloadRenderTexture(RL_RenderTexture2D target); // Unload render texture from GPU memory (VRAM) -RLAPI void RL_UpdateTexture(RL_Texture2D texture, const void *pixels); // Update GPU texture with new data -RLAPI void RL_UpdateTextureRec(RL_Texture2D texture, RL_Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data +RLAPI Texture2d load_texture(const char *fileName); // Load texture from file into GPU memory (VRAM) +RLAPI Texture2d load_texture_from_image(Image image); // Load texture from image data +RLAPI Texture_Cubemap load_texture_cubemap(Image image, int layout); // Load cubemap from image, multiple image cubemap layouts supported +RLAPI Render_Texture2D load_render_texture(int width, int height); // Load texture for rendering (framebuffer) +RLAPI bool is_texture_ready(Texture2d texture); // Check if a texture is ready +RLAPI void unload_texture(Texture2d texture); // Unload texture from GPU memory (VRAM) +RLAPI bool is_render_texture_ready(Render_Texture2D target); // Check if a render texture is ready +RLAPI void unload_render_texture(Render_Texture2D target); // Unload render texture from GPU memory (VRAM) +RLAPI void update_texture(Texture2d texture, const void *pixels); // Update GPU texture with new data +RLAPI void update_texture_rec(Texture2d texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data -// RL_Texture configuration functions -RLAPI void RL_GenTextureMipmaps(RL_Texture2D *texture); // Generate GPU mipmaps for a texture -RLAPI void RL_SetTextureFilter(RL_Texture2D texture, int filter); // Set texture scaling filter mode -RLAPI void RL_SetTextureWrap(RL_Texture2D texture, int wrap); // Set texture wrapping mode +// Texture configuration functions +RLAPI void gen_texture_mipmaps(Texture2d *texture); // Generate GPU mipmaps for a texture +RLAPI void set_texture_filter(Texture2d texture, int filter); // Set texture scaling filter mode +RLAPI void set_texture_wrap(Texture2d texture, int wrap); // Set texture wrapping mode -// RL_Texture drawing functions -RLAPI void RL_DrawTexture(RL_Texture2D texture, int posX, int posY, RL_Color tint); // Draw a RL_Texture2D -RLAPI void RL_DrawTextureV(RL_Texture2D texture, RL_Vector2 position, RL_Color tint); // Draw a RL_Texture2D with position defined as RL_Vector2 -RLAPI void RL_DrawTextureEx(RL_Texture2D texture, RL_Vector2 position, float rotation, float scale, RL_Color tint); // Draw a RL_Texture2D with extended parameters -RLAPI void RL_DrawTextureRec(RL_Texture2D texture, RL_Rectangle source, RL_Vector2 position, RL_Color tint); // Draw a part of a texture defined by a rectangle -RLAPI void RL_DrawTexturePro(RL_Texture2D texture, RL_Rectangle source, RL_Rectangle dest, RL_Vector2 origin, float rotation, RL_Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters -RLAPI void RL_DrawTextureNPatch(RL_Texture2D texture, RL_NPatchInfo nPatchInfo, RL_Rectangle dest, RL_Vector2 origin, float rotation, RL_Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely +// Texture drawing functions +RLAPI void draw_texture(Texture2d texture, int posX, int posY, Color tint); // Draw a Texture2d +RLAPI void draw_texture_v(Texture2d texture, Vector2 position, Color tint); // Draw a Texture2d with position defined as Vector2 +RLAPI void draw_texture_ex(Texture2d texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2d with extended parameters +RLAPI void draw_texture_rec(Texture2d texture, Rectangle source, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle +RLAPI void draw_texture_pro(Texture2d texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters +RLAPI void draw_texture_npatch(Texture2d texture, N_Patch_Info nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely -// RL_Color/pixel related functions -RLAPI RL_Color RL_Fade(RL_Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f -RLAPI int RL_ColorToInt(RL_Color color); // Get hexadecimal value for a RL_Color -RLAPI RL_Vector4 RL_ColorNormalize(RL_Color color); // Get RL_Color normalized as float [0..1] -RLAPI RL_Color RL_ColorFromNormalized(RL_Vector4 normalized); // Get RL_Color from normalized values [0..1] -RLAPI RL_Vector3 RL_ColorToHSV(RL_Color color); // Get HSV values for a RL_Color, hue [0..360], saturation/value [0..1] -RLAPI RL_Color RL_ColorFromHSV(float hue, float saturation, float value); // Get a RL_Color from HSV values, hue [0..360], saturation/value [0..1] -RLAPI RL_Color RL_ColorTint(RL_Color color, RL_Color tint); // Get color multiplied with another color -RLAPI RL_Color RL_ColorBrightness(RL_Color color, float factor); // Get color with brightness correction, brightness factor goes from -1.0f to 1.0f -RLAPI RL_Color RL_ColorContrast(RL_Color color, float contrast); // Get color with contrast correction, contrast values between -1.0f and 1.0f -RLAPI RL_Color RL_ColorAlpha(RL_Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f -RLAPI RL_Color RL_ColorAlphaBlend(RL_Color dst, RL_Color src, RL_Color tint); // Get src alpha-blended into dst color with tint -RLAPI RL_Color RL_GetColor(unsigned int hexValue); // Get RL_Color structure from hexadecimal value -RLAPI RL_Color RL_GetPixelColor(void *srcPtr, int format); // Get RL_Color from a source pixel pointer of certain format -RLAPI void RL_SetPixelColor(void *dstPtr, RL_Color color, int format); // Set color formatted into destination pixel pointer -RLAPI int RL_GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes for certain format +// Color/pixel related functions +RLAPI Color fade(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f +RLAPI int color_to_int(Color color); // Get hexadecimal value for a Color +RLAPI Vector4 color_normalize(Color color); // Get Color normalized as float [0..1] +RLAPI Color color_from_normalized(Vector4 normalized); // Get Color from normalized values [0..1] +RLAPI Vector3 color_to_hsv(Color color); // Get HSV values for a Color, hue [0..360], saturation/value [0..1] +RLAPI Color color_from_hsv(float hue, float saturation, float value); // Get a Color from HSV values, hue [0..360], saturation/value [0..1] +RLAPI Color color_tint(Color color, Color tint); // Get color multiplied with another color +RLAPI Color color_brightness(Color color, float factor); // Get color with brightness correction, brightness factor goes from -1.0f to 1.0f +RLAPI Color color_contrast(Color color, float contrast); // Get color with contrast correction, contrast values between -1.0f and 1.0f +RLAPI Color color_alpha(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f +RLAPI Color color_alpha_blend(Color dst, Color src, Color tint); // Get src alpha-blended into dst color with tint +RLAPI Color get_color(unsigned int hexValue); // Get Color structure from hexadecimal value +RLAPI Color get_pixel_color(void *srcPtr, int format); // Get Color from a source pixel pointer of certain format +RLAPI void set_pixel_color(void *dstPtr, Color color, int format); // Set color formatted into destination pixel pointer +RLAPI int get_pixel_data_size(int width, int height, int format); // Get pixel data size in bytes for certain format //------------------------------------------------------------------------------------ -// RL_Font Loading and Text Drawing Functions (Module: text) +// Font Loading and Text Drawing Functions (Module: text) //------------------------------------------------------------------------------------ -// RL_Font loading/unloading functions -RLAPI RL_Font RL_GetFontDefault(void); // Get the default RL_Font -RLAPI RL_Font RL_LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) -RLAPI RL_Font RL_LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set -RLAPI RL_Font RL_LoadFontFromImage(RL_Image image, RL_Color key, int firstChar); // Load font from RL_Image (XNA style) -RLAPI RL_Font RL_LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' -RLAPI bool RL_IsFontReady(RL_Font font); // Check if a font is ready -RLAPI RL_GlyphInfo *RL_LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use -RLAPI RL_Image RL_GenImageFontAtlas(const RL_GlyphInfo *glyphs, RL_Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info -RLAPI void RL_UnloadFontData(RL_GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) -RLAPI void RL_UnloadFont(RL_Font font); // Unload font from GPU memory (VRAM) -RLAPI bool RL_ExportFontAsCode(RL_Font font, const char *fileName); // Export font as code file, returns true on success +// Font loading/unloading functions +RLAPI Font get_font_default(void); // Get the default Font +RLAPI Font load_font(const char *fileName); // Load font from file into GPU memory (VRAM) +RLAPI Font load_font_ex(const char *fileName, int fontSize, int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set +RLAPI Font load_font_from_image(Image image, Color key, int firstChar); // Load font from Image (XNA style) +RLAPI Font load_font_from_memory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' +RLAPI bool is_font_ready(Font font); // Check if a font is ready +RLAPI Glyph_Info *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use +RLAPI Image gen_image_font_atlas(const Glyph_Info *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info +RLAPI void unload_font_data(Glyph_Info *glyphs, int glyphCount); // Unload font chars info data (RAM) +RLAPI void unload_font(Font font); // Unload font from GPU memory (VRAM) +RLAPI bool export_font_as_code(Font font, const char *fileName); // Export font as code file, returns true on success // Text drawing functions -RLAPI void RL_DrawFPS(int posX, int posY); // Draw current FPS -RLAPI void RL_DrawText(const char *text, int posX, int posY, int fontSize, RL_Color color); // Draw text (using default font) -RLAPI void RL_DrawTextEx(RL_Font font, const char *text, RL_Vector2 position, float fontSize, float spacing, RL_Color tint); // Draw text using font and additional parameters -RLAPI void RL_DrawTextPro(RL_Font font, const char *text, RL_Vector2 position, RL_Vector2 origin, float rotation, float fontSize, float spacing, RL_Color tint); // Draw text using RL_Font and pro parameters (rotation) -RLAPI void RL_DrawTextCodepoint(RL_Font font, int codepoint, RL_Vector2 position, float fontSize, RL_Color tint); // Draw one character (codepoint) -RLAPI void RL_DrawTextCodepoints(RL_Font font, const int *codepoints, int codepointCount, RL_Vector2 position, float fontSize, float spacing, RL_Color tint); // Draw multiple character (codepoint) +RLAPI void draw_fps(int posX, int posY); // Draw current FPS +RLAPI void draw_text(const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) +RLAPI void draw_text_ex(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters +RLAPI void draw_text_pro(Font font, const char *text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint); // Draw text using Font and pro parameters (rotation) +RLAPI void draw_text_codepoint(Font font, int codepoint, Vector2 position, float fontSize, Color tint); // Draw one character (codepoint) +RLAPI void draw_text_codepoints(Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint); // Draw multiple character (codepoint) // Text font info functions -RLAPI void RL_SetTextLineSpacing(int spacing); // Set vertical line spacing when drawing with line-breaks -RLAPI int RL_MeasureText(const char *text, int fontSize); // Measure string width for default font -RLAPI RL_Vector2 RL_MeasureTextEx(RL_Font font, const char *text, float fontSize, float spacing); // Measure string size for RL_Font -RLAPI int RL_GetGlyphIndex(RL_Font font, int codepoint); // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found -RLAPI RL_GlyphInfo RL_GetGlyphInfo(RL_Font font, int codepoint); // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found -RLAPI RL_Rectangle RL_GetGlyphAtlasRec(RL_Font font, int codepoint); // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found +RLAPI void set_text_line_spacing(int spacing); // Set vertical line spacing when drawing with line-breaks +RLAPI int measure_text(const char *text, int fontSize); // Measure string width for default font +RLAPI Vector2 measure_text_ex(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font +RLAPI int get_glyph_index(Font font, int codepoint); // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found +RLAPI Glyph_Info get_glyph_info(Font font, int codepoint); // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found +RLAPI Rectangle get_glyph_atlas_rec(Font font, int codepoint); // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found // Text codepoints management functions (unicode characters) -RLAPI char *RL_LoadUTF8(const int *codepoints, int length); // Load UTF-8 text encoded from codepoints array -RLAPI void RL_UnloadUTF8(char *text); // Unload UTF-8 text encoded from codepoints array -RLAPI int *RL_LoadCodepoints(const char *text, int *count); // Load all codepoints from a UTF-8 text string, codepoints count returned by parameter -RLAPI void RL_UnloadCodepoints(int *codepoints); // Unload codepoints data from memory -RLAPI int RL_GetCodepointCount(const char *text); // Get total number of codepoints in a UTF-8 encoded string -RLAPI int RL_GetCodepoint(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure -RLAPI int RL_GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure -RLAPI int RL_GetCodepointPrevious(const char *text, int *codepointSize); // Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure -RLAPI const char *RL_CodepointToUTF8(int codepoint, int *utf8Size); // Encode one codepoint into UTF-8 byte array (array length returned as parameter) +RLAPI char *LoadUTF8(const int *codepoints, int length); // Load UTF-8 text encoded from codepoints array +RLAPI void unload_utf8(char *text); // Unload UTF-8 text encoded from codepoints array +RLAPI int *LoadCodepoints(const char *text, int *count); // Load all codepoints from a UTF-8 text string, codepoints count returned by parameter +RLAPI void unload_codepoints(int *codepoints); // Unload codepoints data from memory +RLAPI int get_codepoint_count(const char *text); // Get total number of codepoints in a UTF-8 encoded string +RLAPI int get_codepoint(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI int get_codepoint_next(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI int get_codepoint_previous(const char *text, int *codepointSize); // Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI const char *CodepointToUTF8(int codepoint, int *utf8Size); // Encode one codepoint into UTF-8 byte array (array length returned as parameter) // Text strings management functions (no UTF-8 strings, only byte chars) // NOTE: Some strings allocate memory internally for returned strings, just be careful! -RLAPI int RL_TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied -RLAPI bool RL_TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal -RLAPI unsigned int RL_TextLength(const char *text); // Get text length, checks for '\0' ending -RLAPI const char *RL_TextFormat(const char *text, ...); // Text formatting with variables (sprintf() style) -RLAPI const char *RL_TextSubtext(const char *text, int position, int length); // Get a piece of a text string -RLAPI char *RL_TextReplace(char *text, const char *replace, const char *by); // Replace text string (WARNING: memory must be freed!) -RLAPI char *RL_TextInsert(const char *text, const char *insert, int position); // Insert text in a position (WARNING: memory must be freed!) -RLAPI const char *RL_TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter +RLAPI int text_copy(char *dst, const char *src); // Copy one string to another, returns bytes copied +RLAPI bool text_is_equal(const char *text1, const char *text2); // Check if two text string are equal +RLAPI unsigned int text_length(const char *text); // Get text length, checks for '\0' ending +RLAPI const char *TextFormat(const char *text, ...); // Text formatting with variables (sprintf() style) +RLAPI const char *TextSubtext(const char *text, int position, int length); // Get a piece of a text string +RLAPI char *TextReplace(char *text, const char *replace, const char *by); // Replace text string (WARNING: memory must be freed!) +RLAPI char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (WARNING: memory must be freed!) +RLAPI const char *TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter RLAPI const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings -RLAPI void RL_TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! -RLAPI int RL_TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string -RLAPI const char *RL_TextToUpper(const char *text); // Get upper case version of provided string -RLAPI const char *RL_TextToLower(const char *text); // Get lower case version of provided string -RLAPI const char *RL_TextToPascal(const char *text); // Get Pascal case notation version of provided string -RLAPI int RL_TextToInteger(const char *text); // Get integer value from text (negative values not supported) +RLAPI void text_append(char *text, const char *append, int *position); // Append text at specific position and move cursor! +RLAPI int text_find_index(const char *text, const char *find); // Find first text occurrence within a string +RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string +RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string +RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string +RLAPI int text_to_integer(const char *text); // Get integer value from text (negative values not supported) //------------------------------------------------------------------------------------ // Basic 3d Shapes Drawing Functions (Module: models) //------------------------------------------------------------------------------------ // Basic geometric 3D shapes drawing functions -RLAPI void RL_DrawLine3D(RL_Vector3 startPos, RL_Vector3 endPos, RL_Color color); // Draw a line in 3D world space -RLAPI void RL_DrawPoint3D(RL_Vector3 position, RL_Color color); // Draw a point in 3D space, actually a small line -RLAPI void RL_DrawCircle3D(RL_Vector3 center, float radius, RL_Vector3 rotationAxis, float rotationAngle, RL_Color color); // Draw a circle in 3D world space -RLAPI void RL_DrawTriangle3D(RL_Vector3 v1, RL_Vector3 v2, RL_Vector3 v3, RL_Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) -RLAPI void RL_DrawTriangleStrip3D(RL_Vector3 *points, int pointCount, RL_Color color); // Draw a triangle strip defined by points -RLAPI void RL_DrawCube(RL_Vector3 position, float width, float height, float length, RL_Color color); // Draw cube -RLAPI void RL_DrawCubeV(RL_Vector3 position, RL_Vector3 size, RL_Color color); // Draw cube (Vector version) -RLAPI void RL_DrawCubeWires(RL_Vector3 position, float width, float height, float length, RL_Color color); // Draw cube wires -RLAPI void RL_DrawCubeWiresV(RL_Vector3 position, RL_Vector3 size, RL_Color color); // Draw cube wires (Vector version) -RLAPI void RL_DrawSphere(RL_Vector3 centerPos, float radius, RL_Color color); // Draw sphere -RLAPI void RL_DrawSphereEx(RL_Vector3 centerPos, float radius, int rings, int slices, RL_Color color); // Draw sphere with extended parameters -RLAPI void RL_DrawSphereWires(RL_Vector3 centerPos, float radius, int rings, int slices, RL_Color color); // Draw sphere wires -RLAPI void RL_DrawCylinder(RL_Vector3 position, float radiusTop, float radiusBottom, float height, int slices, RL_Color color); // Draw a cylinder/cone -RLAPI void RL_DrawCylinderEx(RL_Vector3 startPos, RL_Vector3 endPos, float startRadius, float endRadius, int sides, RL_Color color); // Draw a cylinder with base at startPos and top at endPos -RLAPI void RL_DrawCylinderWires(RL_Vector3 position, float radiusTop, float radiusBottom, float height, int slices, RL_Color color); // Draw a cylinder/cone wires -RLAPI void RL_DrawCylinderWiresEx(RL_Vector3 startPos, RL_Vector3 endPos, float startRadius, float endRadius, int sides, RL_Color color); // Draw a cylinder wires with base at startPos and top at endPos -RLAPI void RL_DrawCapsule(RL_Vector3 startPos, RL_Vector3 endPos, float radius, int slices, int rings, RL_Color color); // Draw a capsule with the center of its sphere caps at startPos and endPos -RLAPI void RL_DrawCapsuleWires(RL_Vector3 startPos, RL_Vector3 endPos, float radius, int slices, int rings, RL_Color color); // Draw capsule wireframe with the center of its sphere caps at startPos and endPos -RLAPI void RL_DrawPlane(RL_Vector3 centerPos, RL_Vector2 size, RL_Color color); // Draw a plane XZ -RLAPI void RL_DrawRay(RL_Ray ray, RL_Color color); // Draw a ray line -RLAPI void RL_DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) +RLAPI void draw_line3_d(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space +RLAPI void draw_point3_d(Vector3 position, Color color); // Draw a point in 3D space, actually a small line +RLAPI void draw_circle3_d(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space +RLAPI void draw_triangle3_d(Vector3 v1, Vector3 v2, Vector3 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void draw_triangle_strip3d(Vector3 *points, int pointCount, Color color); // Draw a triangle strip defined by points +RLAPI void draw_cube(Vector3 position, float width, float height, float length, Color color); // Draw cube +RLAPI void draw_cube_v(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version) +RLAPI void draw_cube_wires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires +RLAPI void draw_cube_wires_v(Vector3 position, Vector3 size, Color color); // Draw cube wires (Vector version) +RLAPI void draw_sphere(Vector3 centerPos, float radius, Color color); // Draw sphere +RLAPI void draw_sphere_ex(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere with extended parameters +RLAPI void draw_sphere_wires(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere wires +RLAPI void draw_cylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone +RLAPI void draw_cylinder_ex(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder with base at startPos and top at endPos +RLAPI void draw_cylinder_wires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone wires +RLAPI void draw_cylinder_wires_ex(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder wires with base at startPos and top at endPos +RLAPI void draw_capsule(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw a capsule with the center of its sphere caps at startPos and endPos +RLAPI void draw_capsule_wires(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw capsule wireframe with the center of its sphere caps at startPos and endPos +RLAPI void draw_plane(Vector3 centerPos, Vector2 size, Color color); // Draw a plane XZ +RLAPI void draw_ray(Ray ray, Color color); // Draw a ray line +RLAPI void draw_grid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) //------------------------------------------------------------------------------------ -// RL_Model 3d Loading and Drawing Functions (Module: models) +// Model 3d Loading and Drawing Functions (Module: models) //------------------------------------------------------------------------------------ -// RL_Model management functions -RLAPI RL_Model RL_LoadModel(const char *fileName); // Load model from files (meshes and materials) -RLAPI RL_Model RL_LoadModelFromMesh(RL_Mesh mesh); // Load model from generated mesh (default material) -RLAPI bool RL_IsModelReady(RL_Model model); // Check if a model is ready -RLAPI void RL_UnloadModel(RL_Model model); // Unload model (including meshes) from memory (RAM and/or VRAM) -RLAPI RL_BoundingBox RL_GetModelBoundingBox(RL_Model model); // Compute model bounding box limits (considers all meshes) +// Model management functions +RLAPI Model load_model(const char *fileName); // Load model from files (meshes and materials) +RLAPI Model load_model_from_mesh(Mesh mesh); // Load model from generated mesh (default material) +RLAPI bool is_model_ready(Model model); // Check if a model is ready +RLAPI void unload_model(Model model); // Unload model (including meshes) from memory (RAM and/or VRAM) +RLAPI Bounding_box get_model_bounding_box(Model model); // Compute model bounding box limits (considers all meshes) -// RL_Model drawing functions -RLAPI void RL_DrawModel(RL_Model model, RL_Vector3 position, float scale, RL_Color tint); // Draw a model (with texture if set) -RLAPI void RL_DrawModelEx(RL_Model model, RL_Vector3 position, RL_Vector3 rotationAxis, float rotationAngle, RL_Vector3 scale, RL_Color tint); // Draw a model with extended parameters -RLAPI void RL_DrawModelWires(RL_Model model, RL_Vector3 position, float scale, RL_Color tint); // Draw a model wires (with texture if set) -RLAPI void RL_DrawModelWiresEx(RL_Model model, RL_Vector3 position, RL_Vector3 rotationAxis, float rotationAngle, RL_Vector3 scale, RL_Color tint); // Draw a model wires (with texture if set) with extended parameters -RLAPI void RL_DrawBoundingBox(RL_BoundingBox box, RL_Color color); // Draw bounding box (wires) -RLAPI void RL_DrawBillboard(RL_Camera camera, RL_Texture2D texture, RL_Vector3 position, float size, RL_Color tint); // Draw a billboard texture -RLAPI void RL_DrawBillboardRec(RL_Camera camera, RL_Texture2D texture, RL_Rectangle source, RL_Vector3 position, RL_Vector2 size, RL_Color tint); // Draw a billboard texture defined by source -RLAPI void RL_DrawBillboardPro(RL_Camera camera, RL_Texture2D texture, RL_Rectangle source, RL_Vector3 position, RL_Vector3 up, RL_Vector2 size, RL_Vector2 origin, float rotation, RL_Color tint); // Draw a billboard texture defined by source and rotation +// Model drawing functions +RLAPI void draw_model(Model model, Vector3 position, float scale, Color tint); // Draw a model (with texture if set) +RLAPI void draw_model_ex(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model with extended parameters +RLAPI void draw_model_wires(Model model, Vector3 position, float scale, Color tint); // Draw a model wires (with texture if set) +RLAPI void draw_model_wires_ex(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters +RLAPI void draw_bounding_box(Bounding_box box, Color color); // Draw bounding box (wires) +RLAPI void draw_billboard(Camera camera, Texture2d texture, Vector3 position, float size, Color tint); // Draw a billboard texture +RLAPI void draw_billboard_rec(Camera camera, Texture2d texture, Rectangle source, Vector3 position, Vector2 size, Color tint); // Draw a billboard texture defined by source +RLAPI void draw_billboard_pro(Camera camera, Texture2d texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint); // Draw a billboard texture defined by source and rotation -// RL_Mesh management functions -RLAPI void RL_UploadMesh(RL_Mesh *mesh, bool dynamic); // Upload mesh vertex data in GPU and provide VAO/VBO ids -RLAPI void RL_UpdateMeshBuffer(RL_Mesh mesh, int index, const void *data, int dataSize, int offset); // Update mesh vertex data in GPU for a specific buffer index -RLAPI void RL_UnloadMesh(RL_Mesh mesh); // Unload mesh data from CPU and GPU -RLAPI void RL_DrawMesh(RL_Mesh mesh, RL_Material material, RL_Matrix transform); // Draw a 3d mesh with material and transform -RLAPI void RL_DrawMeshInstanced(RL_Mesh mesh, RL_Material material, const RL_Matrix *transforms, int instances); // Draw multiple mesh instances with material and different transforms -RLAPI bool RL_ExportMesh(RL_Mesh mesh, const char *fileName); // Export mesh data to file, returns true on success -RLAPI RL_BoundingBox RL_GetMeshBoundingBox(RL_Mesh mesh); // Compute mesh bounding box limits -RLAPI void RL_GenMeshTangents(RL_Mesh *mesh); // Compute mesh tangents +// Mesh management functions +RLAPI void upload_mesh(Mesh *mesh, bool dynamic); // Upload mesh vertex data in GPU and provide VAO/VBO ids +RLAPI void update_mesh_buffer(Mesh mesh, int index, const void *data, int dataSize, int offset); // Update mesh vertex data in GPU for a specific buffer index +RLAPI void unload_mesh(Mesh mesh); // Unload mesh data from CPU and GPU +RLAPI void draw_mesh(Mesh mesh, Material material, Matrix transform); // Draw a 3d mesh with material and transform +RLAPI void draw_mesh_instanced(Mesh mesh, Material material, const Matrix *transforms, int instances); // Draw multiple mesh instances with material and different transforms +RLAPI bool export_mesh(Mesh mesh, const char *fileName); // Export mesh data to file, returns true on success +RLAPI Bounding_box get_mesh_bounding_box(Mesh mesh); // Compute mesh bounding box limits +RLAPI void gen_mesh_tangents(Mesh *mesh); // Compute mesh tangents -// RL_Mesh generation functions -RLAPI RL_Mesh RL_GenMeshPoly(int sides, float radius); // Generate polygonal mesh -RLAPI RL_Mesh RL_GenMeshPlane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) -RLAPI RL_Mesh RL_GenMeshCube(float width, float height, float length); // Generate cuboid mesh -RLAPI RL_Mesh RL_GenMeshSphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) -RLAPI RL_Mesh RL_GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) -RLAPI RL_Mesh RL_GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh -RLAPI RL_Mesh RL_GenMeshCone(float radius, float height, int slices); // Generate cone/pyramid mesh -RLAPI RL_Mesh RL_GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh -RLAPI RL_Mesh RL_GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh -RLAPI RL_Mesh RL_GenMeshHeightmap(RL_Image heightmap, RL_Vector3 size); // Generate heightmap mesh from image data -RLAPI RL_Mesh RL_GenMeshCubicmap(RL_Image cubicmap, RL_Vector3 cubeSize); // Generate cubes-based map mesh from image data +// Mesh generation functions +RLAPI Mesh gen_mesh_poly(int sides, float radius); // Generate polygonal mesh +RLAPI Mesh gen_mesh_plane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) +RLAPI Mesh gen_mesh_cube(float width, float height, float length); // Generate cuboid mesh +RLAPI Mesh gen_mesh_sphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) +RLAPI Mesh gen_mesh_hemi_sphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) +RLAPI Mesh gen_mesh_cylinder(float radius, float height, int slices); // Generate cylinder mesh +RLAPI Mesh gen_mesh_cone(float radius, float height, int slices); // Generate cone/pyramid mesh +RLAPI Mesh gen_mesh_torus(float radius, float size, int radSeg, int sides); // Generate torus mesh +RLAPI Mesh gen_mesh_knot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh +RLAPI Mesh gen_mesh_heightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data +RLAPI Mesh gen_mesh_cubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data -// RL_Material loading/unloading functions -RLAPI RL_Material *RL_LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file -RLAPI RL_Material RL_LoadMaterialDefault(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) -RLAPI bool RL_IsMaterialReady(RL_Material material); // Check if a material is ready -RLAPI void RL_UnloadMaterial(RL_Material material); // Unload material from GPU memory (VRAM) -RLAPI void RL_SetMaterialTexture(RL_Material *material, int mapType, RL_Texture2D texture); // Set texture for a material map type (RL_MATERIAL_MAP_DIFFUSE, RL_MATERIAL_MAP_SPECULAR...) -RLAPI void RL_SetModelMeshMaterial(RL_Model *model, int meshId, int materialId); // Set material for a mesh +// Material loading/unloading functions +RLAPI Material *LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file +RLAPI Material load_material_default(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) +RLAPI bool is_material_ready(Material material); // Check if a material is ready +RLAPI void unload_material(Material material); // Unload material from GPU memory (VRAM) +RLAPI void set_material_texture(Material *material, int mapType, Texture2d texture); // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) +RLAPI void set_model_mesh_material(Model *model, int meshId, int materialId); // Set material for a mesh -// RL_Model animations loading/unloading functions -RLAPI RL_ModelAnimation *RL_LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file -RLAPI void RL_UpdateModelAnimation(RL_Model model, RL_ModelAnimation anim, int frame); // Update model animation pose -RLAPI void RL_UnloadModelAnimation(RL_ModelAnimation anim); // Unload animation data -RLAPI void RL_UnloadModelAnimations(RL_ModelAnimation *animations, int animCount); // Unload animation array data -RLAPI bool RL_IsModelAnimationValid(RL_Model model, RL_ModelAnimation anim); // Check model animation skeleton match +// Model animations loading/unloading functions +RLAPI Model_Animation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file +RLAPI void update_model_animation(Model model, Model_Animation anim, int frame); // Update model animation pose +RLAPI void unload_model_animation(Model_Animation anim); // Unload animation data +RLAPI void unload_model_animations(Model_Animation *animations, int animCount); // Unload animation array data +RLAPI bool is_model_animation_valid(Model model, Model_Animation anim); // Check model animation skeleton match // Collision detection functions -RLAPI bool RL_CheckCollisionSpheres(RL_Vector3 center1, float radius1, RL_Vector3 center2, float radius2); // Check collision between two spheres -RLAPI bool RL_CheckCollisionBoxes(RL_BoundingBox box1, RL_BoundingBox box2); // Check collision between two bounding boxes -RLAPI bool RL_CheckCollisionBoxSphere(RL_BoundingBox box, RL_Vector3 center, float radius); // Check collision between box and sphere -RLAPI RL_RayCollision RL_GetRayCollisionSphere(RL_Ray ray, RL_Vector3 center, float radius); // Get collision info between ray and sphere -RLAPI RL_RayCollision RL_GetRayCollisionBox(RL_Ray ray, RL_BoundingBox box); // Get collision info between ray and box -RLAPI RL_RayCollision RL_GetRayCollisionMesh(RL_Ray ray, RL_Mesh mesh, RL_Matrix transform); // Get collision info between ray and mesh -RLAPI RL_RayCollision RL_GetRayCollisionTriangle(RL_Ray ray, RL_Vector3 p1, RL_Vector3 p2, RL_Vector3 p3); // Get collision info between ray and triangle -RLAPI RL_RayCollision RL_GetRayCollisionQuad(RL_Ray ray, RL_Vector3 p1, RL_Vector3 p2, RL_Vector3 p3, RL_Vector3 p4); // Get collision info between ray and quad +RLAPI bool check_collision_spheres(Vector3 center1, float radius1, Vector3 center2, float radius2); // Check collision between two spheres +RLAPI bool check_collision_boxes(Bounding_box box1, Bounding_box box2); // Check collision between two bounding boxes +RLAPI bool check_collision_box_sphere(Bounding_box box, Vector3 center, float radius); // Check collision between box and sphere +RLAPI Ray_Collision get_ray_collision_sphere(Ray ray, Vector3 center, float radius); // Get collision info between ray and sphere +RLAPI Ray_Collision get_ray_collision_box(Ray ray, Bounding_box box); // Get collision info between ray and box +RLAPI Ray_Collision get_ray_collision_mesh(Ray ray, Mesh mesh, Matrix transform); // Get collision info between ray and mesh +RLAPI Ray_Collision get_ray_collision_triangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle +RLAPI Ray_Collision get_ray_collision_quad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4); // Get collision info between ray and quad //------------------------------------------------------------------------------------ // Audio Loading and Playing Functions (Module: audio) @@ -1578,85 +1593,84 @@ RLAPI RL_RayCollision RL_GetRayCollisionQuad(RL_Ray ray, RL_Vector3 p1, RL_Vecto typedef void (*AudioCallback)(void *bufferData, unsigned int frames); // Audio device management functions -RLAPI void RL_InitAudioDevice(void); // Initialize audio device and context -RLAPI void RL_CloseAudioDevice(void); // Close the audio device and context -RLAPI bool RL_IsAudioDeviceReady(void); // Check if audio device has been initialized successfully -RLAPI void RL_SetMasterVolume(float volume); // Set master volume (listener) -RLAPI float RL_GetMasterVolume(void); // Get master volume (listener) +RLAPI void init_audio_device(void); // Initialize audio device and context +RLAPI void close_audio_device(void); // Close the audio device and context +RLAPI bool is_audio_device_ready(void); // Check if audio device has been initialized successfully +RLAPI void set_master_volume(float volume); // Set master volume (listener) +RLAPI float get_master_volume(void); // Get master volume (listener) -// RL_Wave/RL_Sound loading/unloading functions -RLAPI RL_Wave RL_LoadWave(const char *fileName); // Load wave data from file -RLAPI RL_Wave RL_LoadWaveFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load wave from memory buffer, fileType refers to extension: i.e. '.wav' -RLAPI bool RL_IsWaveReady(RL_Wave wave); // Checks if wave data is ready -RLAPI RL_Sound RL_LoadSound(const char *fileName); // Load sound from file -RLAPI RL_Sound RL_LoadSoundFromWave(RL_Wave wave); // Load sound from wave data -RLAPI RL_Sound RL_LoadSoundAlias(RL_Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data -RLAPI bool RL_IsSoundReady(RL_Sound sound); // Checks if a sound is ready -RLAPI void RL_UpdateSound(RL_Sound sound, const void *data, int sampleCount); // Update sound buffer with new data -RLAPI void RL_UnloadWave(RL_Wave wave); // Unload wave data -RLAPI void RL_UnloadSound(RL_Sound sound); // Unload sound -RLAPI void RL_UnloadSoundAlias(RL_Sound alias); // Unload a sound alias (does not deallocate sample data) -RLAPI bool RL_ExportWave(RL_Wave wave, const char *fileName); // Export wave data to file, returns true on success -RLAPI bool RL_ExportWaveAsCode(RL_Wave wave, const char *fileName); // Export wave sample data to code (.h), returns true on success +// Wave/Sound loading/unloading functions +RLAPI Wave load_wave(const char *fileName); // Load wave data from file +RLAPI Wave load_wave_from_memory(const char *fileType, const unsigned char *fileData, int dataSize); // Load wave from memory buffer, fileType refers to extension: i.e. '.wav' +RLAPI bool is_wave_ready(Wave wave); // Checks if wave data is ready +RLAPI Sound load_sound(const char *fileName); // Load sound from file +RLAPI Sound load_sound_from_wave(Wave wave); // Load sound from wave data +RLAPI Sound load_sound_alias(Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data +RLAPI bool is_sound_ready(Sound sound); // Checks if a sound is ready +RLAPI void update_sound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data +RLAPI void unload_wave(Wave wave); // Unload wave data +RLAPI void unload_sound(Sound sound); // Unload sound +RLAPI void unload_sound_alias(Sound alias); // Unload a sound alias (does not deallocate sample data) +RLAPI bool export_wave(Wave wave, const char *fileName); // Export wave data to file, returns true on success +RLAPI bool export_wave_as_code(Wave wave, const char *fileName); // Export wave sample data to code (.h), returns true on success -// RL_Wave/RL_Sound management functions -RLAPI void RL_PlaySound(RL_Sound sound); // Play a sound -RLAPI void RL_StopSound(RL_Sound sound); // Stop playing a sound -RLAPI void RL_PauseSound(RL_Sound sound); // Pause a sound -RLAPI void RL_ResumeSound(RL_Sound sound); // Resume a paused sound -RLAPI bool RL_IsSoundPlaying(RL_Sound sound); // Check if a sound is currently playing -RLAPI void RL_SetSoundVolume(RL_Sound sound, float volume); // Set volume for a sound (1.0 is max level) -RLAPI void RL_SetSoundPitch(RL_Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) -RLAPI void RL_SetSoundPan(RL_Sound sound, float pan); // Set pan for a sound (0.5 is center) -RLAPI RL_Wave RL_WaveCopy(RL_Wave wave); // Copy a wave to a new wave -RLAPI void RL_WaveCrop(RL_Wave *wave, int initSample, int finalSample); // Crop a wave to defined samples range -RLAPI void RL_WaveFormat(RL_Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format -RLAPI float *RL_LoadWaveSamples(RL_Wave wave); // Load samples data from wave as a 32bit float data array -RLAPI void RL_UnloadWaveSamples(float *samples); // Unload samples data loaded with RL_LoadWaveSamples() +// Wave/Sound management functions +RLAPI void play_sound(Sound sound); // Play a sound +RLAPI void stop_sound(Sound sound); // Stop playing a sound +RLAPI void pause_sound(Sound sound); // Pause a sound +RLAPI void resume_sound(Sound sound); // Resume a paused sound +RLAPI bool is_sound_playing(Sound sound); // Check if a sound is currently playing +RLAPI void set_sound_volume(Sound sound, float volume); // Set volume for a sound (1.0 is max level) +RLAPI void set_sound_pitch(Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) +RLAPI void set_sound_pan(Sound sound, float pan); // Set pan for a sound (0.5 is center) +RLAPI Wave wave_copy(Wave wave); // Copy a wave to a new wave +RLAPI void wave_crop(Wave *wave, int initSample, int finalSample); // Crop a wave to defined samples range +RLAPI void wave_format(Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format +RLAPI float *LoadWaveSamples(Wave wave); // Load samples data from wave as a 32bit float data array +RLAPI void unload_wave_samples(float *samples); // Unload samples data loaded with LoadWaveSamples() -// RL_Music management functions -RLAPI RL_Music RL_LoadMusicStream(const char *fileName); // Load music stream from file -RLAPI RL_Music RL_LoadMusicStreamFromMemory(const char *fileType, const unsigned char *data, int dataSize); // Load music stream from data -RLAPI bool RL_IsMusicReady(RL_Music music); // Checks if a music stream is ready -RLAPI void RL_UnloadMusicStream(RL_Music music); // Unload music stream -RLAPI void RL_PlayMusicStream(RL_Music music); // Start music playing -RLAPI bool RL_IsMusicStreamPlaying(RL_Music music); // Check if music is playing -RLAPI void RL_UpdateMusicStream(RL_Music music); // Updates buffers for music streaming -RLAPI void RL_StopMusicStream(RL_Music music); // Stop music playing -RLAPI void RL_PauseMusicStream(RL_Music music); // Pause music playing -RLAPI void RL_ResumeMusicStream(RL_Music music); // Resume playing paused music -RLAPI void RL_SeekMusicStream(RL_Music music, float position); // Seek music to a position (in seconds) -RLAPI void RL_SetMusicVolume(RL_Music music, float volume); // Set volume for music (1.0 is max level) -RLAPI void RL_SetMusicPitch(RL_Music music, float pitch); // Set pitch for a music (1.0 is base level) -RLAPI void RL_SetMusicPan(RL_Music music, float pan); // Set pan for a music (0.5 is center) -RLAPI float RL_GetMusicTimeLength(RL_Music music); // Get music time length (in seconds) -RLAPI float RL_GetMusicTimePlayed(RL_Music music); // Get current music time played (in seconds) +// Music management functions +RLAPI Music load_music_stream(const char *fileName); // Load music stream from file +RLAPI Music load_music_stream_from_memory(const char *fileType, const unsigned char *data, int dataSize); // Load music stream from data +RLAPI bool is_music_ready(Music music); // Checks if a music stream is ready +RLAPI void unload_music_stream(Music music); // Unload music stream +RLAPI void play_music_stream(Music music); // Start music playing +RLAPI bool is_music_stream_playing(Music music); // Check if music is playing +RLAPI void update_music_stream(Music music); // Updates buffers for music streaming +RLAPI void stop_music_stream(Music music); // Stop music playing +RLAPI void pause_music_stream(Music music); // Pause music playing +RLAPI void resume_music_stream(Music music); // Resume playing paused music +RLAPI void seek_music_stream(Music music, float position); // Seek music to a position (in seconds) +RLAPI void set_music_volume(Music music, float volume); // Set volume for music (1.0 is max level) +RLAPI void set_music_pitch(Music music, float pitch); // Set pitch for a music (1.0 is base level) +RLAPI void set_music_pan(Music music, float pan); // Set pan for a music (0.5 is center) +RLAPI float get_music_time_length(Music music); // Get music time length (in seconds) +RLAPI float get_music_time_played(Music music); // Get current music time played (in seconds) -// RL_AudioStream management functions -RLAPI RL_AudioStream RL_LoadAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Load audio stream (to stream raw audio pcm data) -RLAPI bool RL_IsAudioStreamReady(RL_AudioStream stream); // Checks if an audio stream is ready -RLAPI void RL_UnloadAudioStream(RL_AudioStream stream); // Unload audio stream and free memory -RLAPI void RL_UpdateAudioStream(RL_AudioStream stream, const void *data, int frameCount); // Update audio stream buffers with data -RLAPI bool RL_IsAudioStreamProcessed(RL_AudioStream stream); // Check if any audio stream buffers requires refill -RLAPI void RL_PlayAudioStream(RL_AudioStream stream); // Play audio stream -RLAPI void RL_PauseAudioStream(RL_AudioStream stream); // Pause audio stream -RLAPI void RL_ResumeAudioStream(RL_AudioStream stream); // Resume audio stream -RLAPI bool RL_IsAudioStreamPlaying(RL_AudioStream stream); // Check if audio stream is playing -RLAPI void RL_StopAudioStream(RL_AudioStream stream); // Stop audio stream -RLAPI void RL_SetAudioStreamVolume(RL_AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) -RLAPI void RL_SetAudioStreamPitch(RL_AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) -RLAPI void RL_SetAudioStreamPan(RL_AudioStream stream, float pan); // Set pan for audio stream (0.5 is centered) -RLAPI void RL_SetAudioStreamBufferSizeDefault(int size); // Default size for new audio streams -RLAPI void RL_SetAudioStreamCallback(RL_AudioStream stream, AudioCallback callback); // Audio thread callback to request new data +// Audio_Stream management functions +RLAPI Audio_Stream load_audio_stream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Load audio stream (to stream raw audio pcm data) +RLAPI bool is_audio_stream_ready(Audio_Stream stream); // Checks if an audio stream is ready +RLAPI void unload_audio_stream(Audio_Stream stream); // Unload audio stream and free memory +RLAPI void update_audio_stream(Audio_Stream stream, const void *data, int frameCount); // Update audio stream buffers with data +RLAPI bool is_audio_stream_processed(Audio_Stream stream); // Check if any audio stream buffers requires refill +RLAPI void play_audio_stream(Audio_Stream stream); // Play audio stream +RLAPI void pause_audio_stream(Audio_Stream stream); // Pause audio stream +RLAPI void resume_audio_stream(Audio_Stream stream); // Resume audio stream +RLAPI bool is_audio_stream_playing(Audio_Stream stream); // Check if audio stream is playing +RLAPI void stop_audio_stream(Audio_Stream stream); // Stop audio stream +RLAPI void set_audio_stream_volume(Audio_Stream stream, float volume); // Set volume for audio stream (1.0 is max level) +RLAPI void set_audio_stream_pitch(Audio_Stream stream, float pitch); // Set pitch for audio stream (1.0 is base level) +RLAPI void set_audio_stream_pan(Audio_Stream stream, float pan); // Set pan for audio stream (0.5 is centered) +RLAPI void set_audio_stream_buffer_size_default(int size); // Default size for new audio streams +RLAPI void set_audio_stream_callback(Audio_Stream stream, AudioCallback callback); // Audio thread callback to request new data -RLAPI void RL_AttachAudioStreamProcessor(RL_AudioStream stream, AudioCallback processor); // Attach audio stream processor to stream, receives the samples as s -RLAPI void RL_DetachAudioStreamProcessor(RL_AudioStream stream, AudioCallback processor); // Detach audio stream processor from stream +RLAPI void attach_audio_stream_processor(Audio_Stream stream, AudioCallback processor); // Attach audio stream processor to stream, receives the samples as s +RLAPI void detach_audio_stream_processor(Audio_Stream stream, AudioCallback processor); // Detach audio stream processor from stream -RLAPI void RL_AttachAudioMixedProcessor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline, receives the samples as s -RLAPI void RL_DetachAudioMixedProcessor(AudioCallback processor); // Detach audio stream processor from the entire audio pipeline +RLAPI void attach_audio_mixed_processor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline, receives the samples as s +RLAPI void detach_audio_mixed_processor(AudioCallback processor); // Detach audio stream processor from the entire audio pipeline -#if defined(__cplusplus) -} -#endif +RL_EXTERN_C_END +RL_NS_END #endif // RAYLIB_H diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/raymath.h b/project/auxillary/vis_ast/dependencies/raylib/include/raymath.h index 5178062..deca55d 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/raymath.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/raymath.h @@ -1,9 +1,9 @@ /********************************************************************************************** * -* raymath v1.5 - Math functions to work with RL_Vector2, RL_Vector3, RL_Matrix and Quaternions +* raymath v1.5 - Math functions to work with Vector2, Vector3, Matrix and Quaternions * * CONVENTIONS: -* - RL_Matrix structure is defined as row-major (memory layout) but parameters naming AND all +* - Matrix structure is defined as row-major (memory layout) but parameters naming AND all * math operations performed by the library consider the structure as it was column-major * It is like transposed versions of the matrices are used for all the maths * It benefits some functions making them cache-friendly and also avoids matrix @@ -94,83 +94,91 @@ #define RL_RAD2DEG (180.0f/RL_PI) #endif -// Get float vector for RL_Matrix -#ifndef RL_MatrixToFloat - #define RL_MatrixToFloat(mat) (RL_MatrixToFloatV(mat).v) +// Get float vector for Matrix +#ifndef MatrixToFloat + #define MatrixToFloat(mat) (RL_NS(matrix_to_float_v)(mat).v) #endif -// Get float vector for RL_Vector3 -#ifndef RL_Vector3ToFloat - #define RL_Vector3ToFloat(vec) (RL_Vector3ToFloatV(vec).v) +// Get float vector for Vector3 +#ifndef Vector3ToFloat + #define Vector3ToFloat(vec) (RL_NS(vector3_to_float_v)(vec).v) #endif +#include "config.h" + +RL_NS_BEGIN + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- #if !defined(RL_VECTOR2_TYPE) -// RL_Vector2 type -typedef struct RL_Vector2 { +// Vector2 type +typedef struct Vector2 { float x; float y; -} RL_Vector2; +} Vector2; #define RL_VECTOR2_TYPE #endif #if !defined(RL_VECTOR3_TYPE) -// RL_Vector3 type -typedef struct RL_Vector3 { +// Vector3 type +typedef struct Vector3 { float x; float y; float z; -} RL_Vector3; +} Vector3; #define RL_VECTOR3_TYPE #endif #if !defined(RL_VECTOR4_TYPE) -// RL_Vector4 type -typedef struct RL_Vector4 { +// Vector4 type +typedef struct Vector4 { float x; float y; float z; float w; -} RL_Vector4; +} Vector4; #define RL_VECTOR4_TYPE #endif #if !defined(RL_QUATERNION_TYPE) -// RL_Quaternion type -typedef RL_Vector4 RL_Quaternion; +// Quaternion type +typedef Vector4 Quaternion; #define RL_QUATERNION_TYPE #endif #if !defined(RL_MATRIX_TYPE) -// RL_Matrix type (OpenGL style 4x4 - right handed, column major) -typedef struct RL_Matrix { - float m0, m4, m8, m12; // RL_Matrix first row (4 components) - float m1, m5, m9, m13; // RL_Matrix second row (4 components) - float m2, m6, m10, m14; // RL_Matrix third row (4 components) - float m3, m7, m11, m15; // RL_Matrix fourth row (4 components) -} RL_Matrix; +// Matrix type (OpenGL style 4x4 - right handed, column major) +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; #define RL_MATRIX_TYPE #endif // NOTE: Helper types to be used instead of array return types for *ToFloat functions -typedef struct RL_float3 { +typedef struct float3 { float v[3]; -} RL_float3; +} float3; -typedef struct RL_float16 { +typedef struct float16 { float v[16]; -} RL_float16; +} float16; + +RL_NS_END #include // Required for: sinf(), cosf(), tan(), atan2f(), sqrtf(), floor(), fminf(), fmaxf(), fabs() +RL_NS_BEGIN + //---------------------------------------------------------------------------------- // Module Functions Definition - Utils math //---------------------------------------------------------------------------------- -// RL_Clamp float value -RMAPI float RL_Clamp(float value, float min, float max) +// clamp float value +RMAPI float clamp(float value, float min, float max) { float result = (value < min)? min : value; @@ -180,31 +188,31 @@ RMAPI float RL_Clamp(float value, float min, float max) } // Calculate linear interpolation between two floats -RMAPI float RL_Lerp(float start, float end, float amount) +RMAPI float lerp(float start, float end, float amount) { float result = start + amount*(end - start); return result; } -// RL_Normalize input value within input range -RMAPI float RL_Normalize(float value, float start, float end) +// normalize input value within input range +RMAPI float normalize(float value, float start, float end) { float result = (value - start)/(end - start); return result; } -// RL_Remap input value within input range to output range -RMAPI float RL_Remap(float value, float inputStart, float inputEnd, float outputStart, float outputEnd) +// remap input value within input range to output range +RMAPI float remap(float value, float inputStart, float inputEnd, float outputStart, float outputEnd) { float result = (value - inputStart)/(inputEnd - inputStart)*(outputEnd - outputStart) + outputStart; return result; } -// RL_Wrap input value from min to max -RMAPI float RL_Wrap(float value, float min, float max) +// wrap input value from min to max +RMAPI float wrap(float value, float min, float max) { float result = value - (max - min)*floorf((value - min)/(max - min)); @@ -212,7 +220,7 @@ RMAPI float RL_Wrap(float value, float min, float max) } // Check whether two given floats are almost equal -RMAPI int RL_FloatEquals(float x, float y) +RMAPI int float_equals(float x, float y) { #if !defined(EPSILON) #define EPSILON 0.000001f @@ -224,59 +232,59 @@ RMAPI int RL_FloatEquals(float x, float y) } //---------------------------------------------------------------------------------- -// Module Functions Definition - RL_Vector2 math +// Module Functions Definition - Vector2 math //---------------------------------------------------------------------------------- // Vector with components value 0.0f -RMAPI RL_Vector2 RL_Vector2Zero(void) +RMAPI Vector2 vector2_zero(void) { - RL_Vector2 result = { 0.0f, 0.0f }; + Vector2 result = { 0.0f, 0.0f }; return result; } // Vector with components value 1.0f -RMAPI RL_Vector2 RL_Vector2One(void) +RMAPI Vector2 vector2_one(void) { - RL_Vector2 result = { 1.0f, 1.0f }; + Vector2 result = { 1.0f, 1.0f }; return result; } // Add two vectors (v1 + v2) -RMAPI RL_Vector2 RL_Vector2Add(RL_Vector2 v1, RL_Vector2 v2) +RMAPI Vector2 vector2_add(Vector2 v1, Vector2 v2) { - RL_Vector2 result = { v1.x + v2.x, v1.y + v2.y }; + Vector2 result = { v1.x + v2.x, v1.y + v2.y }; return result; } // Add vector and float value -RMAPI RL_Vector2 RL_Vector2AddValue(RL_Vector2 v, float add) +RMAPI Vector2 vector2_add_value(Vector2 v, float add) { - RL_Vector2 result = { v.x + add, v.y + add }; + Vector2 result = { v.x + add, v.y + add }; return result; } // Subtract two vectors (v1 - v2) -RMAPI RL_Vector2 RL_Vector2Subtract(RL_Vector2 v1, RL_Vector2 v2) +RMAPI Vector2 vector2_subtract(Vector2 v1, Vector2 v2) { - RL_Vector2 result = { v1.x - v2.x, v1.y - v2.y }; + Vector2 result = { v1.x - v2.x, v1.y - v2.y }; return result; } // Subtract vector by float value -RMAPI RL_Vector2 RL_Vector2SubtractValue(RL_Vector2 v, float sub) +RMAPI Vector2 vector2_subtract_value(Vector2 v, float sub) { - RL_Vector2 result = { v.x - sub, v.y - sub }; + Vector2 result = { v.x - sub, v.y - sub }; return result; } // Calculate vector length -RMAPI float RL_Vector2Length(RL_Vector2 v) +RMAPI float vector2_length(Vector2 v) { float result = sqrtf((v.x*v.x) + (v.y*v.y)); @@ -284,7 +292,7 @@ RMAPI float RL_Vector2Length(RL_Vector2 v) } // Calculate vector square length -RMAPI float RL_Vector2LengthSqr(RL_Vector2 v) +RMAPI float vector2_length_sqr(Vector2 v) { float result = (v.x*v.x) + (v.y*v.y); @@ -292,7 +300,7 @@ RMAPI float RL_Vector2LengthSqr(RL_Vector2 v) } // Calculate two vectors dot product -RMAPI float RL_Vector2DotProduct(RL_Vector2 v1, RL_Vector2 v2) +RMAPI float vector2_dot_product(Vector2 v1, Vector2 v2) { float result = (v1.x*v2.x + v1.y*v2.y); @@ -300,7 +308,7 @@ RMAPI float RL_Vector2DotProduct(RL_Vector2 v1, RL_Vector2 v2) } // Calculate distance between two vectors -RMAPI float RL_Vector2Distance(RL_Vector2 v1, RL_Vector2 v2) +RMAPI float vector2_distance(Vector2 v1, Vector2 v2) { float result = sqrtf((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); @@ -308,7 +316,7 @@ RMAPI float RL_Vector2Distance(RL_Vector2 v1, RL_Vector2 v2) } // Calculate square distance between two vectors -RMAPI float RL_Vector2DistanceSqr(RL_Vector2 v1, RL_Vector2 v2) +RMAPI float vector2_distance_sqr(Vector2 v1, Vector2 v2) { float result = ((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); @@ -317,7 +325,7 @@ RMAPI float RL_Vector2DistanceSqr(RL_Vector2 v1, RL_Vector2 v2) // Calculate angle between two vectors // NOTE: Angle is calculated from origin point (0, 0) -RMAPI float RL_Vector2Angle(RL_Vector2 v1, RL_Vector2 v2) +RMAPI float vector2_angle(Vector2 v1, Vector2 v2) { float result = 0.0f; @@ -332,7 +340,7 @@ RMAPI float RL_Vector2Angle(RL_Vector2 v1, RL_Vector2 v2) // Calculate angle defined by a two vectors line // NOTE: Parameters need to be normalized // Current implementation should be aligned with glm::angle -RMAPI float RL_Vector2LineAngle(RL_Vector2 start, RL_Vector2 end) +RMAPI float vector2_line_angle(Vector2 start, Vector2 end) { float result = 0.0f; @@ -343,41 +351,41 @@ RMAPI float RL_Vector2LineAngle(RL_Vector2 start, RL_Vector2 end) } // Scale vector (multiply by value) -RMAPI RL_Vector2 RL_Vector2Scale(RL_Vector2 v, float scale) +RMAPI Vector2 vector2_scale(Vector2 v, float scale) { - RL_Vector2 result = { v.x*scale, v.y*scale }; + Vector2 result = { v.x*scale, v.y*scale }; return result; } // Multiply vector by vector -RMAPI RL_Vector2 RL_Vector2Multiply(RL_Vector2 v1, RL_Vector2 v2) +RMAPI Vector2 vector2_multiply(Vector2 v1, Vector2 v2) { - RL_Vector2 result = { v1.x*v2.x, v1.y*v2.y }; + Vector2 result = { v1.x*v2.x, v1.y*v2.y }; return result; } // Negate vector -RMAPI RL_Vector2 RL_Vector2Negate(RL_Vector2 v) +RMAPI Vector2 vector2_negate(Vector2 v) { - RL_Vector2 result = { -v.x, -v.y }; + Vector2 result = { -v.x, -v.y }; return result; } // Divide vector by vector -RMAPI RL_Vector2 RL_Vector2Divide(RL_Vector2 v1, RL_Vector2 v2) +RMAPI Vector2 vector2_divide(Vector2 v1, Vector2 v2) { - RL_Vector2 result = { v1.x/v2.x, v1.y/v2.y }; + Vector2 result = { v1.x/v2.x, v1.y/v2.y }; return result; } -// RL_Normalize provided vector -RMAPI RL_Vector2 RL_Vector2Normalize(RL_Vector2 v) +// normalize provided vector +RMAPI Vector2 vector2_normalize(Vector2 v) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; float length = sqrtf((v.x*v.x) + (v.y*v.y)); if (length > 0) @@ -390,10 +398,10 @@ RMAPI RL_Vector2 RL_Vector2Normalize(RL_Vector2 v) return result; } -// Transforms a RL_Vector2 by a given RL_Matrix -RMAPI RL_Vector2 RL_Vector2Transform(RL_Vector2 v, RL_Matrix mat) +// Transforms a Vector2 by a given Matrix +RMAPI Vector2 vector2_transform(Vector2 v, Matrix mat) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; float x = v.x; float y = v.y; @@ -406,9 +414,9 @@ RMAPI RL_Vector2 RL_Vector2Transform(RL_Vector2 v, RL_Matrix mat) } // Calculate linear interpolation between two vectors -RMAPI RL_Vector2 RL_Vector2Lerp(RL_Vector2 v1, RL_Vector2 v2, float amount) +RMAPI Vector2 vector2_lerp(Vector2 v1, Vector2 v2, float amount) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; result.x = v1.x + amount*(v2.x - v1.x); result.y = v1.y + amount*(v2.y - v1.y); @@ -417,9 +425,9 @@ RMAPI RL_Vector2 RL_Vector2Lerp(RL_Vector2 v1, RL_Vector2 v2, float amount) } // Calculate reflected vector to normal -RMAPI RL_Vector2 RL_Vector2Reflect(RL_Vector2 v, RL_Vector2 normal) +RMAPI Vector2 vector2_reflect(Vector2 v, Vector2 normal) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; float dotProduct = (v.x*normal.x + v.y*normal.y); // Dot product @@ -430,9 +438,9 @@ RMAPI RL_Vector2 RL_Vector2Reflect(RL_Vector2 v, RL_Vector2 normal) } // Rotate vector by angle -RMAPI RL_Vector2 RL_Vector2Rotate(RL_Vector2 v, float angle) +RMAPI Vector2 vector2_rotate(Vector2 v, float angle) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; float cosres = cosf(angle); float sinres = sinf(angle); @@ -444,9 +452,9 @@ RMAPI RL_Vector2 RL_Vector2Rotate(RL_Vector2 v, float angle) } // Move Vector towards target -RMAPI RL_Vector2 RL_Vector2MoveTowards(RL_Vector2 v, RL_Vector2 target, float maxDistance) +RMAPI Vector2 vector2_move_towards(Vector2 v, Vector2 target, float maxDistance) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; float dx = target.x - v.x; float dy = target.y - v.y; @@ -463,18 +471,18 @@ RMAPI RL_Vector2 RL_Vector2MoveTowards(RL_Vector2 v, RL_Vector2 target, float ma } // Invert the given vector -RMAPI RL_Vector2 RL_Vector2Invert(RL_Vector2 v) +RMAPI Vector2 vector2_invert(Vector2 v) { - RL_Vector2 result = { 1.0f/v.x, 1.0f/v.y }; + Vector2 result = { 1.0f/v.x, 1.0f/v.y }; return result; } -// RL_Clamp the components of the vector between +// clamp the components of the vector between // min and max values specified by the given vectors -RMAPI RL_Vector2 RL_Vector2Clamp(RL_Vector2 v, RL_Vector2 min, RL_Vector2 max) +RMAPI Vector2 vector2_clamp(Vector2 v, Vector2 min, Vector2 max) { - RL_Vector2 result = { 0 }; + Vector2 result = { 0 }; result.x = fminf(max.x, fmaxf(min.x, v.x)); result.y = fminf(max.y, fmaxf(min.y, v.y)); @@ -482,10 +490,10 @@ RMAPI RL_Vector2 RL_Vector2Clamp(RL_Vector2 v, RL_Vector2 min, RL_Vector2 max) return result; } -// RL_Clamp the magnitude of the vector between two min and max values -RMAPI RL_Vector2 RL_Vector2ClampValue(RL_Vector2 v, float min, float max) +// clamp the magnitude of the vector between two min and max values +RMAPI Vector2 vector2_clamp_value(Vector2 v, float min, float max) { - RL_Vector2 result = v; + Vector2 result = v; float length = (v.x*v.x) + (v.y*v.y); if (length > 0.0f) @@ -510,7 +518,7 @@ RMAPI RL_Vector2 RL_Vector2ClampValue(RL_Vector2 v, float min, float max) } // Check whether two given vectors are almost equal -RMAPI int RL_Vector2Equals(RL_Vector2 p, RL_Vector2 q) +RMAPI int vector2_equals(Vector2 p, Vector2 q) { #if !defined(EPSILON) #define EPSILON 0.000001f @@ -523,99 +531,99 @@ RMAPI int RL_Vector2Equals(RL_Vector2 p, RL_Vector2 q) } //---------------------------------------------------------------------------------- -// Module Functions Definition - RL_Vector3 math +// Module Functions Definition - Vector3 math //---------------------------------------------------------------------------------- // Vector with components value 0.0f -RMAPI RL_Vector3 RL_Vector3Zero(void) +RMAPI Vector3 vector3_zero(void) { - RL_Vector3 result = { 0.0f, 0.0f, 0.0f }; + Vector3 result = { 0.0f, 0.0f, 0.0f }; return result; } // Vector with components value 1.0f -RMAPI RL_Vector3 RL_Vector3One(void) +RMAPI Vector3 vector3_one(void) { - RL_Vector3 result = { 1.0f, 1.0f, 1.0f }; + Vector3 result = { 1.0f, 1.0f, 1.0f }; return result; } // Add two vectors -RMAPI RL_Vector3 RL_Vector3Add(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_add(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { v1.x + v2.x, v1.y + v2.y, v1.z + v2.z }; + Vector3 result = { v1.x + v2.x, v1.y + v2.y, v1.z + v2.z }; return result; } // Add vector and float value -RMAPI RL_Vector3 RL_Vector3AddValue(RL_Vector3 v, float add) +RMAPI Vector3 vector3_add_value(Vector3 v, float add) { - RL_Vector3 result = { v.x + add, v.y + add, v.z + add }; + Vector3 result = { v.x + add, v.y + add, v.z + add }; return result; } // Subtract two vectors -RMAPI RL_Vector3 RL_Vector3Subtract(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_subtract(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { v1.x - v2.x, v1.y - v2.y, v1.z - v2.z }; + Vector3 result = { v1.x - v2.x, v1.y - v2.y, v1.z - v2.z }; return result; } // Subtract vector by float value -RMAPI RL_Vector3 RL_Vector3SubtractValue(RL_Vector3 v, float sub) +RMAPI Vector3 vector3_subtract_value(Vector3 v, float sub) { - RL_Vector3 result = { v.x - sub, v.y - sub, v.z - sub }; + Vector3 result = { v.x - sub, v.y - sub, v.z - sub }; return result; } // Multiply vector by scalar -RMAPI RL_Vector3 RL_Vector3Scale(RL_Vector3 v, float scalar) +RMAPI Vector3 vector3_scale(Vector3 v, float scalar) { - RL_Vector3 result = { v.x*scalar, v.y*scalar, v.z*scalar }; + Vector3 result = { v.x*scalar, v.y*scalar, v.z*scalar }; return result; } // Multiply vector by vector -RMAPI RL_Vector3 RL_Vector3Multiply(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_multiply(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z }; + Vector3 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z }; return result; } // Calculate two vectors cross product -RMAPI RL_Vector3 RL_Vector3CrossProduct(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_cross_product(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + Vector3 result = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; return result; } // Calculate one vector perpendicular vector -RMAPI RL_Vector3 RL_Vector3Perpendicular(RL_Vector3 v) +RMAPI Vector3 vector3_perpendicular(Vector3 v) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; float min = (float) fabs(v.x); - RL_Vector3 cardinalAxis = {1.0f, 0.0f, 0.0f}; + Vector3 cardinalAxis = {1.0f, 0.0f, 0.0f}; if (fabsf(v.y) < min) { min = (float) fabs(v.y); - RL_Vector3 tmp = {0.0f, 1.0f, 0.0f}; + Vector3 tmp = {0.0f, 1.0f, 0.0f}; cardinalAxis = tmp; } if (fabsf(v.z) < min) { - RL_Vector3 tmp = {0.0f, 0.0f, 1.0f}; + Vector3 tmp = {0.0f, 0.0f, 1.0f}; cardinalAxis = tmp; } @@ -628,7 +636,7 @@ RMAPI RL_Vector3 RL_Vector3Perpendicular(RL_Vector3 v) } // Calculate vector length -RMAPI float RL_Vector3Length(const RL_Vector3 v) +RMAPI float vector3_length(const Vector3 v) { float result = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); @@ -636,7 +644,7 @@ RMAPI float RL_Vector3Length(const RL_Vector3 v) } // Calculate vector square length -RMAPI float RL_Vector3LengthSqr(const RL_Vector3 v) +RMAPI float vector3_length_sqr(const Vector3 v) { float result = v.x*v.x + v.y*v.y + v.z*v.z; @@ -644,7 +652,7 @@ RMAPI float RL_Vector3LengthSqr(const RL_Vector3 v) } // Calculate two vectors dot product -RMAPI float RL_Vector3DotProduct(RL_Vector3 v1, RL_Vector3 v2) +RMAPI float vector3_dot_product(Vector3 v1, Vector3 v2) { float result = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); @@ -652,7 +660,7 @@ RMAPI float RL_Vector3DotProduct(RL_Vector3 v1, RL_Vector3 v2) } // Calculate distance between two vectors -RMAPI float RL_Vector3Distance(RL_Vector3 v1, RL_Vector3 v2) +RMAPI float vector3_distance(Vector3 v1, Vector3 v2) { float result = 0.0f; @@ -665,7 +673,7 @@ RMAPI float RL_Vector3Distance(RL_Vector3 v1, RL_Vector3 v2) } // Calculate square distance between two vectors -RMAPI float RL_Vector3DistanceSqr(RL_Vector3 v1, RL_Vector3 v2) +RMAPI float vector3_distance_sqr(Vector3 v1, Vector3 v2) { float result = 0.0f; @@ -678,11 +686,11 @@ RMAPI float RL_Vector3DistanceSqr(RL_Vector3 v1, RL_Vector3 v2) } // Calculate angle between two vectors -RMAPI float RL_Vector3Angle(RL_Vector3 v1, RL_Vector3 v2) +RMAPI float vector3_angle(Vector3 v1, Vector3 v2) { float result = 0.0f; - RL_Vector3 cross = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + Vector3 cross = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; float len = sqrtf(cross.x*cross.x + cross.y*cross.y + cross.z*cross.z); float dot = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); result = atan2f(len, dot); @@ -691,25 +699,25 @@ RMAPI float RL_Vector3Angle(RL_Vector3 v1, RL_Vector3 v2) } // Negate provided vector (invert direction) -RMAPI RL_Vector3 RL_Vector3Negate(RL_Vector3 v) +RMAPI Vector3 vector3_negate(Vector3 v) { - RL_Vector3 result = { -v.x, -v.y, -v.z }; + Vector3 result = { -v.x, -v.y, -v.z }; return result; } // Divide vector by vector -RMAPI RL_Vector3 RL_Vector3Divide(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_divide(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z }; + Vector3 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z }; return result; } -// RL_Normalize provided vector -RMAPI RL_Vector3 RL_Vector3Normalize(RL_Vector3 v) +// normalize provided vector +RMAPI Vector3 vector3_normalize(Vector3 v) { - RL_Vector3 result = v; + Vector3 result = v; float length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length != 0.0f) @@ -725,10 +733,10 @@ RMAPI RL_Vector3 RL_Vector3Normalize(RL_Vector3 v) } //Calculate the projection of the vector v1 on to v2 -RMAPI RL_Vector3 RL_Vector3Project(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_project(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { 0 }; - + Vector3 result = { 0 }; + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); @@ -742,10 +750,10 @@ RMAPI RL_Vector3 RL_Vector3Project(RL_Vector3 v1, RL_Vector3 v2) } //Calculate the rejection of the vector v1 on to v2 -RMAPI RL_Vector3 RL_Vector3Reject(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_reject(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { 0 }; - + Vector3 result = { 0 }; + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); @@ -761,13 +769,13 @@ RMAPI RL_Vector3 RL_Vector3Reject(RL_Vector3 v1, RL_Vector3 v2) // Orthonormalize provided vectors // Makes vectors normalized and orthogonal to each other // Gram-Schmidt function implementation -RMAPI void RL_Vector3OrthoNormalize(RL_Vector3 *v1, RL_Vector3 *v2) +RMAPI void vector3_ortho_normalize(Vector3 *v1, Vector3 *v2) { float length = 0.0f; float ilength = 0.0f; - // RL_Vector3Normalize(*v1); - RL_Vector3 v = *v1; + // vector3_normalize(*v1); + Vector3 v = *v1; length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length == 0.0f) length = 1.0f; ilength = 1.0f/length; @@ -775,10 +783,10 @@ RMAPI void RL_Vector3OrthoNormalize(RL_Vector3 *v1, RL_Vector3 *v2) v1->y *= ilength; v1->z *= ilength; - // RL_Vector3CrossProduct(*v1, *v2) - RL_Vector3 vn1 = { v1->y*v2->z - v1->z*v2->y, v1->z*v2->x - v1->x*v2->z, v1->x*v2->y - v1->y*v2->x }; + // vector3_cross_product(*v1, *v2) + Vector3 vn1 = { v1->y*v2->z - v1->z*v2->y, v1->z*v2->x - v1->x*v2->z, v1->x*v2->y - v1->y*v2->x }; - // RL_Vector3Normalize(vn1); + // vector3_normalize(vn1); v = vn1; length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length == 0.0f) length = 1.0f; @@ -787,16 +795,16 @@ RMAPI void RL_Vector3OrthoNormalize(RL_Vector3 *v1, RL_Vector3 *v2) vn1.y *= ilength; vn1.z *= ilength; - // RL_Vector3CrossProduct(vn1, *v1) - RL_Vector3 vn2 = { vn1.y*v1->z - vn1.z*v1->y, vn1.z*v1->x - vn1.x*v1->z, vn1.x*v1->y - vn1.y*v1->x }; + // vector3_cross_product(vn1, *v1) + Vector3 vn2 = { vn1.y*v1->z - vn1.z*v1->y, vn1.z*v1->x - vn1.x*v1->z, vn1.x*v1->y - vn1.y*v1->x }; *v2 = vn2; } -// Transforms a RL_Vector3 by a given RL_Matrix -RMAPI RL_Vector3 RL_Vector3Transform(RL_Vector3 v, RL_Matrix mat) +// Transforms a Vector3 by a given Matrix +RMAPI Vector3 vector3_transform(Vector3 v, Matrix mat) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; float x = v.x; float y = v.y; @@ -809,10 +817,10 @@ RMAPI RL_Vector3 RL_Vector3Transform(RL_Vector3 v, RL_Matrix mat) return result; } -// RL_Transform a vector by quaternion rotation -RMAPI RL_Vector3 RL_Vector3RotateByQuaternion(RL_Vector3 v, RL_Quaternion q) +// Transform a vector by quaternion rotation +RMAPI Vector3 vector3_rotate_by_quaternion(Vector3 v, Quaternion q) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; result.x = v.x*(q.x*q.x + q.w*q.w - q.y*q.y - q.z*q.z) + v.y*(2*q.x*q.y - 2*q.w*q.z) + v.z*(2*q.x*q.z + 2*q.w*q.y); result.y = v.x*(2*q.w*q.z + 2*q.x*q.y) + v.y*(q.w*q.w - q.x*q.x + q.y*q.y - q.z*q.z) + v.z*(-2*q.w*q.x + 2*q.y*q.z); @@ -822,14 +830,14 @@ RMAPI RL_Vector3 RL_Vector3RotateByQuaternion(RL_Vector3 v, RL_Quaternion q) } // Rotates a vector around an axis -RMAPI RL_Vector3 RL_Vector3RotateByAxisAngle(RL_Vector3 v, RL_Vector3 axis, float angle) +RMAPI Vector3 vector3_rotate_by_axis_angle(Vector3 v, Vector3 axis, float angle) { // Using Euler-Rodrigues Formula // Ref.: https://en.wikipedia.org/w/index.php?title=Euler%E2%80%93Rodrigues_formula - RL_Vector3 result = v; + Vector3 result = v; - // RL_Vector3Normalize(axis); + // vector3_normalize(axis); float length = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); if (length == 0.0f) length = 1.0f; float ilength = 1.0f / length; @@ -843,21 +851,21 @@ RMAPI RL_Vector3 RL_Vector3RotateByAxisAngle(RL_Vector3 v, RL_Vector3 axis, floa float c = axis.y*a; float d = axis.z*a; a = cosf(angle); - RL_Vector3 w = { b, c, d }; + Vector3 w = { b, c, d }; - // RL_Vector3CrossProduct(w, v) - RL_Vector3 wv = { w.y*v.z - w.z*v.y, w.z*v.x - w.x*v.z, w.x*v.y - w.y*v.x }; + // vector3_cross_product(w, v) + Vector3 wv = { w.y*v.z - w.z*v.y, w.z*v.x - w.x*v.z, w.x*v.y - w.y*v.x }; - // RL_Vector3CrossProduct(w, wv) - RL_Vector3 wwv = { w.y*wv.z - w.z*wv.y, w.z*wv.x - w.x*wv.z, w.x*wv.y - w.y*wv.x }; + // vector3_cross_product(w, wv) + Vector3 wwv = { w.y*wv.z - w.z*wv.y, w.z*wv.x - w.x*wv.z, w.x*wv.y - w.y*wv.x }; - // RL_Vector3Scale(wv, 2*a) + // vector3_scale(wv, 2*a) a *= 2; wv.x *= a; wv.y *= a; wv.z *= a; - // RL_Vector3Scale(wwv, 2) + // vector3_scale(wwv, 2) wwv.x *= 2; wwv.y *= 2; wwv.z *= 2; @@ -874,9 +882,9 @@ RMAPI RL_Vector3 RL_Vector3RotateByAxisAngle(RL_Vector3 v, RL_Vector3 axis, floa } // Calculate linear interpolation between two vectors -RMAPI RL_Vector3 RL_Vector3Lerp(RL_Vector3 v1, RL_Vector3 v2, float amount) +RMAPI Vector3 vector3_lerp(Vector3 v1, Vector3 v2, float amount) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; result.x = v1.x + amount*(v2.x - v1.x); result.y = v1.y + amount*(v2.y - v1.y); @@ -886,9 +894,9 @@ RMAPI RL_Vector3 RL_Vector3Lerp(RL_Vector3 v1, RL_Vector3 v2, float amount) } // Calculate reflected vector to normal -RMAPI RL_Vector3 RL_Vector3Reflect(RL_Vector3 v, RL_Vector3 normal) +RMAPI Vector3 vector3_reflect(Vector3 v, Vector3 normal) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; // I is the original vector // N is the normal of the incident plane @@ -904,9 +912,9 @@ RMAPI RL_Vector3 RL_Vector3Reflect(RL_Vector3 v, RL_Vector3 normal) } // Get min value for each pair of components -RMAPI RL_Vector3 RL_Vector3Min(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_min(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; result.x = fminf(v1.x, v2.x); result.y = fminf(v1.y, v2.y); @@ -916,9 +924,9 @@ RMAPI RL_Vector3 RL_Vector3Min(RL_Vector3 v1, RL_Vector3 v2) } // Get max value for each pair of components -RMAPI RL_Vector3 RL_Vector3Max(RL_Vector3 v1, RL_Vector3 v2) +RMAPI Vector3 vector3_max(Vector3 v1, Vector3 v2) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; result.x = fmaxf(v1.x, v2.x); result.y = fmaxf(v1.y, v2.y); @@ -929,18 +937,18 @@ RMAPI RL_Vector3 RL_Vector3Max(RL_Vector3 v1, RL_Vector3 v2) // 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 -RMAPI RL_Vector3 RL_Vector3Barycenter(RL_Vector3 p, RL_Vector3 a, RL_Vector3 b, RL_Vector3 c) +RMAPI Vector3 vector3_barycenter(Vector3 p, Vector3 a, Vector3 b, Vector3 c) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; - RL_Vector3 v0 = { b.x - a.x, b.y - a.y, b.z - a.z }; // RL_Vector3Subtract(b, a) - RL_Vector3 v1 = { c.x - a.x, c.y - a.y, c.z - a.z }; // RL_Vector3Subtract(c, a) - RL_Vector3 v2 = { p.x - a.x, p.y - a.y, p.z - a.z }; // RL_Vector3Subtract(p, a) - float d00 = (v0.x*v0.x + v0.y*v0.y + v0.z*v0.z); // RL_Vector3DotProduct(v0, v0) - float d01 = (v0.x*v1.x + v0.y*v1.y + v0.z*v1.z); // RL_Vector3DotProduct(v0, v1) - float d11 = (v1.x*v1.x + v1.y*v1.y + v1.z*v1.z); // RL_Vector3DotProduct(v1, v1) - float d20 = (v2.x*v0.x + v2.y*v0.y + v2.z*v0.z); // RL_Vector3DotProduct(v2, v0) - float d21 = (v2.x*v1.x + v2.y*v1.y + v2.z*v1.z); // RL_Vector3DotProduct(v2, v1) + Vector3 v0 = { b.x - a.x, b.y - a.y, b.z - a.z }; // vector3_subtract(b, a) + Vector3 v1 = { c.x - a.x, c.y - a.y, c.z - a.z }; // vector3_subtract(c, a) + Vector3 v2 = { p.x - a.x, p.y - a.y, p.z - a.z }; // vector3_subtract(p, a) + float d00 = (v0.x*v0.x + v0.y*v0.y + v0.z*v0.z); // vector3_dot_product(v0, v0) + float d01 = (v0.x*v1.x + v0.y*v1.y + v0.z*v1.z); // vector3_dot_product(v0, v1) + float d11 = (v1.x*v1.x + v1.y*v1.y + v1.z*v1.z); // vector3_dot_product(v1, v1) + float d20 = (v2.x*v0.x + v2.y*v0.y + v2.z*v0.z); // vector3_dot_product(v2, v0) + float d21 = (v2.x*v1.x + v2.y*v1.y + v2.z*v1.z); // vector3_dot_product(v2, v1) float denom = d00*d11 - d01*d01; @@ -951,14 +959,14 @@ RMAPI RL_Vector3 RL_Vector3Barycenter(RL_Vector3 p, RL_Vector3 a, RL_Vector3 b, return result; } -// Projects a RL_Vector3 from screen space into object space +// Projects a Vector3 from screen space into object space // NOTE: We are avoiding calling other raymath functions despite available -RMAPI RL_Vector3 RL_Vector3Unproject(RL_Vector3 source, RL_Matrix projection, RL_Matrix view) +RMAPI Vector3 vector3_unproject(Vector3 source, Matrix projection, Matrix view) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; // Calculate unprojected matrix (multiply view matrix by projection matrix) and invert it - RL_Matrix matViewProj = { // RL_MatrixMultiply(view, projection); + Matrix matViewProj = { // matrix_multiply(view, projection); view.m0*projection.m0 + view.m1*projection.m4 + view.m2*projection.m8 + view.m3*projection.m12, view.m0*projection.m1 + view.m1*projection.m5 + view.m2*projection.m9 + view.m3*projection.m13, view.m0*projection.m2 + view.m1*projection.m6 + view.m2*projection.m10 + view.m3*projection.m14, @@ -976,7 +984,7 @@ RMAPI RL_Vector3 RL_Vector3Unproject(RL_Vector3 source, RL_Matrix projection, RL view.m12*projection.m2 + view.m13*projection.m6 + view.m14*projection.m10 + view.m15*projection.m14, view.m12*projection.m3 + view.m13*projection.m7 + view.m14*projection.m11 + view.m15*projection.m15 }; - // Calculate inverted matrix -> RL_MatrixInvert(matViewProj); + // Calculate inverted matrix -> matrix_invert(matViewProj); // Cache the matrix values (speed optimization) float a00 = matViewProj.m0, a01 = matViewProj.m1, a02 = matViewProj.m2, a03 = matViewProj.m3; float a10 = matViewProj.m4, a11 = matViewProj.m5, a12 = matViewProj.m6, a13 = matViewProj.m7; @@ -999,7 +1007,7 @@ RMAPI RL_Vector3 RL_Vector3Unproject(RL_Vector3 source, RL_Matrix projection, RL // Calculate the invert determinant (inlined to avoid double-caching) float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); - RL_Matrix matViewProjInv = { + Matrix matViewProjInv = { (a11*b11 - a12*b10 + a13*b09)*invDet, (-a01*b11 + a02*b10 - a03*b09)*invDet, (a31*b05 - a32*b04 + a33*b03)*invDet, @@ -1018,10 +1026,10 @@ RMAPI RL_Vector3 RL_Vector3Unproject(RL_Vector3 source, RL_Matrix projection, RL (a20*b03 - a21*b01 + a22*b00)*invDet }; // Create quaternion from source point - RL_Quaternion quat = { source.x, source.y, source.z, 1.0f }; + Quaternion quat = { source.x, source.y, source.z, 1.0f }; // Multiply quat point by unprojecte matrix - RL_Quaternion qtransformed = { // RL_QuaternionTransform(quat, matViewProjInv) + Quaternion qtransformed = { // quaternion_transform(quat, matViewProjInv) matViewProjInv.m0*quat.x + matViewProjInv.m4*quat.y + matViewProjInv.m8*quat.z + matViewProjInv.m12*quat.w, matViewProjInv.m1*quat.x + matViewProjInv.m5*quat.y + matViewProjInv.m9*quat.z + matViewProjInv.m13*quat.w, matViewProjInv.m2*quat.x + matViewProjInv.m6*quat.y + matViewProjInv.m10*quat.z + matViewProjInv.m14*quat.w, @@ -1035,10 +1043,10 @@ RMAPI RL_Vector3 RL_Vector3Unproject(RL_Vector3 source, RL_Matrix projection, RL return result; } -// Get RL_Vector3 as float array -RMAPI RL_float3 RL_Vector3ToFloatV(RL_Vector3 v) +// Get Vector3 as float array +RMAPI float3 vector3_to_float_v(Vector3 v) { - RL_float3 buffer = { 0 }; + float3 buffer = { 0 }; buffer.v[0] = v.x; buffer.v[1] = v.y; @@ -1048,18 +1056,18 @@ RMAPI RL_float3 RL_Vector3ToFloatV(RL_Vector3 v) } // Invert the given vector -RMAPI RL_Vector3 RL_Vector3Invert(RL_Vector3 v) +RMAPI Vector3 vector3_invert(Vector3 v) { - RL_Vector3 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z }; + Vector3 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z }; return result; } -// RL_Clamp the components of the vector between +// clamp the components of the vector between // min and max values specified by the given vectors -RMAPI RL_Vector3 RL_Vector3Clamp(RL_Vector3 v, RL_Vector3 min, RL_Vector3 max) +RMAPI Vector3 vector3_clamp(Vector3 v, Vector3 min, Vector3 max) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; result.x = fminf(max.x, fmaxf(min.x, v.x)); result.y = fminf(max.y, fmaxf(min.y, v.y)); @@ -1068,10 +1076,10 @@ RMAPI RL_Vector3 RL_Vector3Clamp(RL_Vector3 v, RL_Vector3 min, RL_Vector3 max) return result; } -// RL_Clamp the magnitude of the vector between two values -RMAPI RL_Vector3 RL_Vector3ClampValue(RL_Vector3 v, float min, float max) +// clamp the magnitude of the vector between two values +RMAPI Vector3 vector3_clamp_value(Vector3 v, float min, float max) { - RL_Vector3 result = v; + Vector3 result = v; float length = (v.x*v.x) + (v.y*v.y) + (v.z*v.z); if (length > 0.0f) @@ -1098,7 +1106,7 @@ RMAPI RL_Vector3 RL_Vector3ClampValue(RL_Vector3 v, float min, float max) } // Check whether two given vectors are almost equal -RMAPI int RL_Vector3Equals(RL_Vector3 p, RL_Vector3 q) +RMAPI int vector3_equals(Vector3 p, Vector3 q) { #if !defined(EPSILON) #define EPSILON 0.000001f @@ -1116,9 +1124,9 @@ RMAPI int RL_Vector3Equals(RL_Vector3 p, RL_Vector3 q) // 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 -RMAPI RL_Vector3 RL_Vector3Refract(RL_Vector3 v, RL_Vector3 n, float r) +RMAPI Vector3 vector3_refract(Vector3 v, Vector3 n, float r) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; float dot = v.x*n.x + v.y*n.y + v.z*n.z; float d = 1.0f - r*r*(1.0f - dot*dot); @@ -1137,11 +1145,11 @@ RMAPI RL_Vector3 RL_Vector3Refract(RL_Vector3 v, RL_Vector3 n, float r) } //---------------------------------------------------------------------------------- -// Module Functions Definition - RL_Matrix math +// Module Functions Definition - Matrix math //---------------------------------------------------------------------------------- // Compute matrix determinant -RMAPI float RL_MatrixDeterminant(RL_Matrix mat) +RMAPI float matrix_determinant(Matrix mat) { float result = 0.0f; @@ -1162,7 +1170,7 @@ RMAPI float RL_MatrixDeterminant(RL_Matrix mat) } // Get the trace of the matrix (sum of the values along the diagonal) -RMAPI float RL_MatrixTrace(RL_Matrix mat) +RMAPI float matrix_trace(Matrix mat) { float result = (mat.m0 + mat.m5 + mat.m10 + mat.m15); @@ -1170,9 +1178,9 @@ RMAPI float RL_MatrixTrace(RL_Matrix mat) } // Transposes provided matrix -RMAPI RL_Matrix RL_MatrixTranspose(RL_Matrix mat) +RMAPI Matrix matrix_transpose(Matrix mat) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; result.m0 = mat.m0; result.m1 = mat.m4; @@ -1195,9 +1203,9 @@ RMAPI RL_Matrix RL_MatrixTranspose(RL_Matrix mat) } // Invert provided matrix -RMAPI RL_Matrix RL_MatrixInvert(RL_Matrix mat) +RMAPI Matrix matrix_invert(Matrix mat) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; // Cache the matrix values (speed optimization) float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; @@ -1241,21 +1249,24 @@ RMAPI RL_Matrix RL_MatrixInvert(RL_Matrix mat) return result; } +// #if !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) || !defined(RLGL_H) +// #if !defined(RLGL_H) && !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) // Get identity matrix -RMAPI RL_Matrix RL_MatrixIdentity(void) +RMAPI Matrix matrix_identity(void) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f }; return result; } +// #endif // Add two matrices -RMAPI RL_Matrix RL_MatrixAdd(RL_Matrix left, RL_Matrix right) +RMAPI Matrix matrix_add(Matrix left, Matrix right) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; result.m0 = left.m0 + right.m0; result.m1 = left.m1 + right.m1; @@ -1278,9 +1289,9 @@ RMAPI RL_Matrix RL_MatrixAdd(RL_Matrix left, RL_Matrix right) } // Subtract two matrices (left - right) -RMAPI RL_Matrix RL_MatrixSubtract(RL_Matrix left, RL_Matrix right) +RMAPI Matrix matrix_subtract(Matrix left, Matrix right) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; result.m0 = left.m0 - right.m0; result.m1 = left.m1 - right.m1; @@ -1302,11 +1313,13 @@ RMAPI RL_Matrix RL_MatrixSubtract(RL_Matrix left, RL_Matrix right) return result; } +// #if !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) || !defined(RLGL_H) +// #if !defined(RLGL_H) && !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) // Get two matrix multiplication // NOTE: When multiplying matrices... the order matters! -RMAPI RL_Matrix RL_MatrixMultiply(RL_Matrix left, RL_Matrix right) +RMAPI Matrix matrix_multiply(Matrix left, Matrix right) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; @@ -1327,11 +1340,12 @@ RMAPI RL_Matrix RL_MatrixMultiply(RL_Matrix left, RL_Matrix right) return result; } +// #endif // Get translation matrix -RMAPI RL_Matrix RL_MatrixTranslate(float x, float y, float z) +RMAPI Matrix matrix_translate(float x, float y, float z) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, x, + Matrix result = { 1.0f, 0.0f, 0.0f, x, 0.0f, 1.0f, 0.0f, y, 0.0f, 0.0f, 1.0f, z, 0.0f, 0.0f, 0.0f, 1.0f }; @@ -1341,9 +1355,9 @@ RMAPI RL_Matrix RL_MatrixTranslate(float x, float y, float z) // Create rotation matrix from axis and angle // NOTE: Angle should be provided in radians -RMAPI RL_Matrix RL_MatrixRotate(RL_Vector3 axis, float angle) +RMAPI Matrix matrix_rotate(Vector3 axis, float angle) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; float x = axis.x, y = axis.y, z = axis.z; @@ -1386,12 +1400,12 @@ RMAPI RL_Matrix RL_MatrixRotate(RL_Vector3 axis, float angle) // Get x-rotation matrix // NOTE: Angle must be provided in radians -RMAPI RL_Matrix RL_MatrixRotateX(float angle) +RMAPI Matrix matrix_rotate_x(float angle) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; // RL_MatrixIdentity() + 0.0f, 0.0f, 0.0f, 1.0f }; // matrix_identity() float cosres = cosf(angle); float sinres = sinf(angle); @@ -1406,12 +1420,12 @@ RMAPI RL_Matrix RL_MatrixRotateX(float angle) // Get y-rotation matrix // NOTE: Angle must be provided in radians -RMAPI RL_Matrix RL_MatrixRotateY(float angle) +RMAPI Matrix matrix_rotate_y(float angle) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; // RL_MatrixIdentity() + 0.0f, 0.0f, 0.0f, 1.0f }; // matrix_identity() float cosres = cosf(angle); float sinres = sinf(angle); @@ -1426,12 +1440,12 @@ RMAPI RL_Matrix RL_MatrixRotateY(float angle) // Get z-rotation matrix // NOTE: Angle must be provided in radians -RMAPI RL_Matrix RL_MatrixRotateZ(float angle) +RMAPI Matrix matrix_rotate_z(float angle) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; // RL_MatrixIdentity() + 0.0f, 0.0f, 0.0f, 1.0f }; // matrix_identity() float cosres = cosf(angle); float sinres = sinf(angle); @@ -1447,12 +1461,12 @@ RMAPI RL_Matrix RL_MatrixRotateZ(float angle) // Get xyz-rotation matrix // NOTE: Angle must be provided in radians -RMAPI RL_Matrix RL_MatrixRotateXYZ(RL_Vector3 angle) +RMAPI Matrix matrix_rotate_xyz(Vector3 angle) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; // RL_MatrixIdentity() + 0.0f, 0.0f, 0.0f, 1.0f }; // matrix_identity() float cosz = cosf(-angle.z); float sinz = sinf(-angle.z); @@ -1478,9 +1492,9 @@ RMAPI RL_Matrix RL_MatrixRotateXYZ(RL_Vector3 angle) // Get zyx-rotation matrix // NOTE: Angle must be provided in radians -RMAPI RL_Matrix RL_MatrixRotateZYX(RL_Vector3 angle) +RMAPI Matrix matrix_rotate_zyx(Vector3 angle) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; float cz = cosf(angle.z); float sz = sinf(angle.z); @@ -1513,9 +1527,9 @@ RMAPI RL_Matrix RL_MatrixRotateZYX(RL_Vector3 angle) } // Get scaling matrix -RMAPI RL_Matrix RL_MatrixScale(float x, float y, float z) +RMAPI Matrix matrix_scale(float x, float y, float z) { - RL_Matrix result = { x, 0.0f, 0.0f, 0.0f, + Matrix result = { x, 0.0f, 0.0f, 0.0f, 0.0f, y, 0.0f, 0.0f, 0.0f, 0.0f, z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f }; @@ -1524,15 +1538,15 @@ RMAPI RL_Matrix RL_MatrixScale(float x, float y, float z) } // Get perspective projection matrix -RMAPI RL_Matrix RL_MatrixFrustum(double left, double right, double bottom, double top, double near, double far) +RMAPI Matrix matrix_frustum(double left, double right, double bottom, double top, double near, double far) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; - float RLGL_ = (float)(right - left); + float rl = (float)(right - left); float tb = (float)(top - bottom); float fn = (float)(far - near); - result.m0 = ((float)near*2.0f)/RLGL_; + result.m0 = ((float)near*2.0f)/rl; result.m1 = 0.0f; result.m2 = 0.0f; result.m3 = 0.0f; @@ -1542,7 +1556,7 @@ RMAPI RL_Matrix RL_MatrixFrustum(double left, double right, double bottom, doubl result.m6 = 0.0f; result.m7 = 0.0f; - result.m8 = ((float)right + (float)left)/RLGL_; + result.m8 = ((float)right + (float)left)/rl; result.m9 = ((float)top + (float)bottom)/tb; result.m10 = -((float)far + (float)near)/fn; result.m11 = -1.0f; @@ -1557,23 +1571,23 @@ RMAPI RL_Matrix RL_MatrixFrustum(double left, double right, double bottom, doubl // Get perspective projection matrix // NOTE: Fovy angle must be provided in radians -RMAPI RL_Matrix RL_MatrixPerspective(double fovY, double aspect, double nearPlane, double farPlane) +RMAPI Matrix matrix_perspective(double fovY, double aspect, double nearPlane, double farPlane) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; double top = nearPlane*tan(fovY*0.5); double bottom = -top; double right = top*aspect; double left = -right; - // RL_MatrixFrustum(-right, right, -top, top, near, far); - float RLGL_ = (float)(right - left); + // matrix_frustum(-right, right, -top, top, near, far); + float rl = (float)(right - left); float tb = (float)(top - bottom); float fn = (float)(farPlane - nearPlane); - result.m0 = ((float)nearPlane*2.0f)/RLGL_; + result.m0 = ((float)nearPlane*2.0f)/rl; result.m5 = ((float)nearPlane*2.0f)/tb; - result.m8 = ((float)right + (float)left)/RLGL_; + result.m8 = ((float)right + (float)left)/rl; result.m9 = ((float)top + (float)bottom)/tb; result.m10 = -((float)farPlane + (float)nearPlane)/fn; result.m11 = -1.0f; @@ -1583,15 +1597,15 @@ RMAPI RL_Matrix RL_MatrixPerspective(double fovY, double aspect, double nearPlan } // Get orthographic projection matrix -RMAPI RL_Matrix RL_MatrixOrtho(double left, double right, double bottom, double top, double nearPlane, double farPlane) +RMAPI Matrix matrix_ortho(double left, double right, double bottom, double top, double nearPlane, double farPlane) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; - float RLGL_ = (float)(right - left); + float rl = (float)(right - left); float tb = (float)(top - bottom); float fn = (float)(farPlane - nearPlane); - result.m0 = 2.0f/RLGL_; + result.m0 = 2.0f/rl; result.m1 = 0.0f; result.m2 = 0.0f; result.m3 = 0.0f; @@ -1603,7 +1617,7 @@ RMAPI RL_Matrix RL_MatrixOrtho(double left, double right, double bottom, double result.m9 = 0.0f; result.m10 = -2.0f/fn; result.m11 = 0.0f; - result.m12 = -((float)left + (float)right)/RLGL_; + result.m12 = -((float)left + (float)right)/rl; result.m13 = -((float)top + (float)bottom)/tb; result.m14 = -((float)farPlane + (float)nearPlane)/fn; result.m15 = 1.0f; @@ -1612,18 +1626,18 @@ RMAPI RL_Matrix RL_MatrixOrtho(double left, double right, double bottom, double } // Get camera look-at matrix (view matrix) -RMAPI RL_Matrix RL_MatrixLookAt(RL_Vector3 eye, RL_Vector3 target, RL_Vector3 up) +RMAPI Matrix matrix_look_at(Vector3 eye, Vector3 target, Vector3 up) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; float length = 0.0f; float ilength = 0.0f; - // RL_Vector3Subtract(eye, target) - RL_Vector3 vz = { eye.x - target.x, eye.y - target.y, eye.z - target.z }; + // vector3_subtract(eye, target) + Vector3 vz = { eye.x - target.x, eye.y - target.y, eye.z - target.z }; - // RL_Vector3Normalize(vz) - RL_Vector3 v = vz; + // vector3_normalize(vz) + Vector3 v = vz; length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length == 0.0f) length = 1.0f; ilength = 1.0f/length; @@ -1631,10 +1645,10 @@ RMAPI RL_Matrix RL_MatrixLookAt(RL_Vector3 eye, RL_Vector3 target, RL_Vector3 up vz.y *= ilength; vz.z *= ilength; - // RL_Vector3CrossProduct(up, vz) - RL_Vector3 vx = { up.y*vz.z - up.z*vz.y, up.z*vz.x - up.x*vz.z, up.x*vz.y - up.y*vz.x }; + // vector3_cross_product(up, vz) + Vector3 vx = { up.y*vz.z - up.z*vz.y, up.z*vz.x - up.x*vz.z, up.x*vz.y - up.y*vz.x }; - // RL_Vector3Normalize(x) + // vector3_normalize(x) v = vx; length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length == 0.0f) length = 1.0f; @@ -1643,8 +1657,8 @@ RMAPI RL_Matrix RL_MatrixLookAt(RL_Vector3 eye, RL_Vector3 target, RL_Vector3 up vx.y *= ilength; vx.z *= ilength; - // RL_Vector3CrossProduct(vz, vx) - RL_Vector3 vy = { vz.y*vx.z - vz.z*vx.y, vz.z*vx.x - vz.x*vx.z, vz.x*vx.y - vz.y*vx.x }; + // vector3_cross_product(vz, vx) + Vector3 vy = { vz.y*vx.z - vz.z*vx.y, vz.z*vx.x - vz.x*vx.z, vz.x*vx.y - vz.y*vx.x }; result.m0 = vx.x; result.m1 = vy.x; @@ -1658,18 +1672,18 @@ RMAPI RL_Matrix RL_MatrixLookAt(RL_Vector3 eye, RL_Vector3 target, RL_Vector3 up result.m9 = vy.z; result.m10 = vz.z; result.m11 = 0.0f; - result.m12 = -(vx.x*eye.x + vx.y*eye.y + vx.z*eye.z); // RL_Vector3DotProduct(vx, eye) - result.m13 = -(vy.x*eye.x + vy.y*eye.y + vy.z*eye.z); // RL_Vector3DotProduct(vy, eye) - result.m14 = -(vz.x*eye.x + vz.y*eye.y + vz.z*eye.z); // RL_Vector3DotProduct(vz, eye) + result.m12 = -(vx.x*eye.x + vx.y*eye.y + vx.z*eye.z); // vector3_dot_product(vx, eye) + result.m13 = -(vy.x*eye.x + vy.y*eye.y + vy.z*eye.z); // vector3_dot_product(vy, eye) + result.m14 = -(vz.x*eye.x + vz.y*eye.y + vz.z*eye.z); // vector3_dot_product(vz, eye) result.m15 = 1.0f; return result; } // Get float array of matrix data -RMAPI RL_float16 RL_MatrixToFloatV(RL_Matrix mat) +RMAPI float16 matrix_to_float_v(Matrix mat) { - RL_float16 result = { 0 }; + float16 result = { 0 }; result.v[0] = mat.m0; result.v[1] = mat.m1; @@ -1692,61 +1706,61 @@ RMAPI RL_float16 RL_MatrixToFloatV(RL_Matrix mat) } //---------------------------------------------------------------------------------- -// Module Functions Definition - RL_Quaternion math +// Module Functions Definition - Quaternion math //---------------------------------------------------------------------------------- // Add two quaternions -RMAPI RL_Quaternion RL_QuaternionAdd(RL_Quaternion q1, RL_Quaternion q2) +RMAPI Quaternion quaternion_add(Quaternion q1, Quaternion q2) { - RL_Quaternion result = {q1.x + q2.x, q1.y + q2.y, q1.z + q2.z, q1.w + q2.w}; + Quaternion result = {q1.x + q2.x, q1.y + q2.y, q1.z + q2.z, q1.w + q2.w}; return result; } // Add quaternion and float value -RMAPI RL_Quaternion RL_QuaternionAddValue(RL_Quaternion q, float add) +RMAPI Quaternion quaternion_add_value(Quaternion q, float add) { - RL_Quaternion result = {q.x + add, q.y + add, q.z + add, q.w + add}; + Quaternion result = {q.x + add, q.y + add, q.z + add, q.w + add}; return result; } // Subtract two quaternions -RMAPI RL_Quaternion RL_QuaternionSubtract(RL_Quaternion q1, RL_Quaternion q2) +RMAPI Quaternion quaternion_subtract(Quaternion q1, Quaternion q2) { - RL_Quaternion result = {q1.x - q2.x, q1.y - q2.y, q1.z - q2.z, q1.w - q2.w}; + Quaternion result = {q1.x - q2.x, q1.y - q2.y, q1.z - q2.z, q1.w - q2.w}; return result; } // Subtract quaternion and float value -RMAPI RL_Quaternion RL_QuaternionSubtractValue(RL_Quaternion q, float sub) +RMAPI Quaternion quaternion_subtract_value(Quaternion q, float sub) { - RL_Quaternion result = {q.x - sub, q.y - sub, q.z - sub, q.w - sub}; + Quaternion result = {q.x - sub, q.y - sub, q.z - sub, q.w - sub}; return result; } // Get identity quaternion -RMAPI RL_Quaternion RL_QuaternionIdentity(void) +RMAPI Quaternion quaternion_identity(void) { - RL_Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; return result; } // Computes the length of a quaternion -RMAPI float RL_QuaternionLength(RL_Quaternion q) +RMAPI float quaternion_length(Quaternion q) { float result = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); return result; } -// RL_Normalize provided quaternion -RMAPI RL_Quaternion RL_QuaternionNormalize(RL_Quaternion q) +// normalize provided quaternion +RMAPI Quaternion quaternion_normalize(Quaternion q) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); if (length == 0.0f) length = 1.0f; @@ -1761,9 +1775,9 @@ RMAPI RL_Quaternion RL_QuaternionNormalize(RL_Quaternion q) } // Invert provided quaternion -RMAPI RL_Quaternion RL_QuaternionInvert(RL_Quaternion q) +RMAPI Quaternion quaternion_invert(Quaternion q) { - RL_Quaternion result = q; + Quaternion result = q; float lengthSq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w; @@ -1781,9 +1795,9 @@ RMAPI RL_Quaternion RL_QuaternionInvert(RL_Quaternion q) } // Calculate two quaternion multiplication -RMAPI RL_Quaternion RL_QuaternionMultiply(RL_Quaternion q1, RL_Quaternion q2) +RMAPI Quaternion quaternion_multiply(Quaternion q1, Quaternion q2) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; float qax = q1.x, qay = q1.y, qaz = q1.z, qaw = q1.w; float qbx = q2.x, qby = q2.y, qbz = q2.z, qbw = q2.w; @@ -1797,9 +1811,9 @@ RMAPI RL_Quaternion RL_QuaternionMultiply(RL_Quaternion q1, RL_Quaternion q2) } // Scale quaternion by float value -RMAPI RL_Quaternion RL_QuaternionScale(RL_Quaternion q, float mul) +RMAPI Quaternion quaternion_scale(Quaternion q, float mul) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; result.x = q.x*mul; result.y = q.y*mul; @@ -1810,17 +1824,17 @@ RMAPI RL_Quaternion RL_QuaternionScale(RL_Quaternion q, float mul) } // Divide two quaternions -RMAPI RL_Quaternion RL_QuaternionDivide(RL_Quaternion q1, RL_Quaternion q2) +RMAPI Quaternion quaternion_divide(Quaternion q1, Quaternion q2) { - RL_Quaternion result = { q1.x/q2.x, q1.y/q2.y, q1.z/q2.z, q1.w/q2.w }; + Quaternion result = { q1.x/q2.x, q1.y/q2.y, q1.z/q2.z, q1.w/q2.w }; return result; } // Calculate linear interpolation between two quaternions -RMAPI RL_Quaternion RL_QuaternionLerp(RL_Quaternion q1, RL_Quaternion q2, float amount) +RMAPI Quaternion quaternion_lerp(Quaternion q1, Quaternion q2, float amount) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; result.x = q1.x + amount*(q2.x - q1.x); result.y = q1.y + amount*(q2.y - q1.y); @@ -1831,18 +1845,18 @@ RMAPI RL_Quaternion RL_QuaternionLerp(RL_Quaternion q1, RL_Quaternion q2, float } // Calculate slerp-optimized interpolation between two quaternions -RMAPI RL_Quaternion RL_QuaternionNlerp(RL_Quaternion q1, RL_Quaternion q2, float amount) +RMAPI Quaternion quaternion_nlerp(Quaternion q1, Quaternion q2, float amount) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; - // RL_QuaternionLerp(q1, q2, amount) + // quaternion_lerp(q1, q2, amount) result.x = q1.x + amount*(q2.x - q1.x); result.y = q1.y + amount*(q2.y - q1.y); result.z = q1.z + amount*(q2.z - q1.z); result.w = q1.w + amount*(q2.w - q1.w); - // RL_QuaternionNormalize(q); - RL_Quaternion q = result; + // quaternion_normalize(q); + Quaternion q = result; float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); if (length == 0.0f) length = 1.0f; float ilength = 1.0f/length; @@ -1856,9 +1870,9 @@ RMAPI RL_Quaternion RL_QuaternionNlerp(RL_Quaternion q1, RL_Quaternion q2, float } // Calculates spherical linear interpolation between two quaternions -RMAPI RL_Quaternion RL_QuaternionSlerp(RL_Quaternion q1, RL_Quaternion q2, float amount) +RMAPI Quaternion quaternion_slerp(Quaternion q1, Quaternion q2, float amount) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; #if !defined(EPSILON) #define EPSILON 0.000001f @@ -1873,7 +1887,7 @@ RMAPI RL_Quaternion RL_QuaternionSlerp(RL_Quaternion q1, RL_Quaternion q2, float } if (fabsf(cosHalfTheta) >= 1.0f) result = q1; - else if (cosHalfTheta > 0.95f) result = RL_QuaternionNlerp(q1, q2, amount); + else if (cosHalfTheta > 0.95f) result = quaternion_nlerp(q1, q2, amount); else { float halfTheta = acosf(cosHalfTheta); @@ -1902,21 +1916,21 @@ RMAPI RL_Quaternion RL_QuaternionSlerp(RL_Quaternion q1, RL_Quaternion q2, float } // Calculate quaternion based on the rotation from one vector to another -RMAPI RL_Quaternion RL_QuaternionFromVector3ToVector3(RL_Vector3 from, RL_Vector3 to) +RMAPI Quaternion quaternion_from_vector3_to_vector3(Vector3 from, Vector3 to) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; - float cos2Theta = (from.x*to.x + from.y*to.y + from.z*to.z); // RL_Vector3DotProduct(from, to) - RL_Vector3 cross = { from.y*to.z - from.z*to.y, from.z*to.x - from.x*to.z, from.x*to.y - from.y*to.x }; // RL_Vector3CrossProduct(from, to) + float cos2Theta = (from.x*to.x + from.y*to.y + from.z*to.z); // vector3_dot_product(from, to) + Vector3 cross = { from.y*to.z - from.z*to.y, from.z*to.x - from.x*to.z, from.x*to.y - from.y*to.x }; // vector3_cross_product(from, to) result.x = cross.x; result.y = cross.y; result.z = cross.z; result.w = 1.0f + cos2Theta; - // RL_QuaternionNormalize(q); - // NOTE: RL_Normalize to essentially nlerp the original and identity to 0.5 - RL_Quaternion q = result; + // quaternion_normalize(q); + // NOTE: normalize to essentially nlerp the original and identity to 0.5 + Quaternion q = result; float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); if (length == 0.0f) length = 1.0f; float ilength = 1.0f/length; @@ -1930,9 +1944,9 @@ RMAPI RL_Quaternion RL_QuaternionFromVector3ToVector3(RL_Vector3 from, RL_Vector } // Get a quaternion for a given rotation matrix -RMAPI RL_Quaternion RL_QuaternionFromMatrix(RL_Matrix mat) +RMAPI Quaternion quaternion_from_matrix(Matrix mat) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; float fourWSquaredMinus1 = mat.m0 + mat.m5 + mat.m10; float fourXSquaredMinus1 = mat.m0 - mat.m5 - mat.m10; @@ -1994,12 +2008,12 @@ RMAPI RL_Quaternion RL_QuaternionFromMatrix(RL_Matrix mat) } // Get a matrix for a given quaternion -RMAPI RL_Matrix RL_QuaternionToMatrix(RL_Quaternion q) +RMAPI Matrix quaternion_to_matrix(Quaternion q) { - RL_Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; // RL_MatrixIdentity() + 0.0f, 0.0f, 0.0f, 1.0f }; // matrix_identity() float a2 = q.x*q.x; float b2 = q.y*q.y; @@ -2028,9 +2042,9 @@ RMAPI RL_Matrix RL_QuaternionToMatrix(RL_Quaternion q) // Get rotation quaternion for an angle and axis // NOTE: Angle must be provided in radians -RMAPI RL_Quaternion RL_QuaternionFromAxisAngle(RL_Vector3 axis, float angle) +RMAPI Quaternion quaternion_from_axis_angle(Vector3 axis, float angle) { - RL_Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; float axisLength = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); @@ -2041,8 +2055,8 @@ RMAPI RL_Quaternion RL_QuaternionFromAxisAngle(RL_Vector3 axis, float angle) float length = 0.0f; float ilength = 0.0f; - // RL_Vector3Normalize(axis) - RL_Vector3 v = axis; + // vector3_normalize(axis) + Vector3 v = axis; length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); if (length == 0.0f) length = 1.0f; ilength = 1.0f/length; @@ -2058,8 +2072,8 @@ RMAPI RL_Quaternion RL_QuaternionFromAxisAngle(RL_Vector3 axis, float angle) result.z = axis.z*sinres; result.w = cosres; - // RL_QuaternionNormalize(q); - RL_Quaternion q = result; + // quaternion_normalize(q); + Quaternion q = result; length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); if (length == 0.0f) length = 1.0f; ilength = 1.0f/length; @@ -2073,11 +2087,11 @@ RMAPI RL_Quaternion RL_QuaternionFromAxisAngle(RL_Vector3 axis, float angle) } // Get the rotation angle and axis for a given quaternion -RMAPI void RL_QuaternionToAxisAngle(RL_Quaternion q, RL_Vector3 *outAxis, float *outAngle) +RMAPI void quaternion_to_axis_angle(Quaternion q, Vector3 *outAxis, float *outAngle) { if (fabsf(q.w) > 1.0f) { - // RL_QuaternionNormalize(q); + // quaternion_normalize(q); float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); if (length == 0.0f) length = 1.0f; float ilength = 1.0f/length; @@ -2088,7 +2102,7 @@ RMAPI void RL_QuaternionToAxisAngle(RL_Quaternion q, RL_Vector3 *outAxis, float q.w = q.w*ilength; } - RL_Vector3 resAxis = { 0.0f, 0.0f, 0.0f }; + Vector3 resAxis = { 0.0f, 0.0f, 0.0f }; float resAngle = 2.0f*acosf(q.w); float den = sqrtf(1.0f - q.w*q.w); @@ -2111,9 +2125,9 @@ RMAPI void RL_QuaternionToAxisAngle(RL_Quaternion q, RL_Vector3 *outAxis, float // Get the quaternion equivalent to Euler angles // NOTE: Rotation order is ZYX -RMAPI RL_Quaternion RL_QuaternionFromEuler(float pitch, float yaw, float roll) +RMAPI Quaternion quaternion_from_euler(float pitch, float yaw, float roll) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; float x0 = cosf(pitch*0.5f); float x1 = sinf(pitch*0.5f); @@ -2131,10 +2145,10 @@ RMAPI RL_Quaternion RL_QuaternionFromEuler(float pitch, float yaw, float roll) } // Get the Euler angles equivalent to quaternion (roll, pitch, yaw) -// NOTE: Angles are returned in a RL_Vector3 struct in radians -RMAPI RL_Vector3 RL_QuaternionToEuler(RL_Quaternion q) +// NOTE: Angles are returned in a Vector3 struct in radians +RMAPI Vector3 quaternion_to_euler(Quaternion q) { - RL_Vector3 result = { 0 }; + Vector3 result = { 0 }; // Roll (x-axis rotation) float x0 = 2.0f*(q.w*q.x + q.y*q.z); @@ -2155,10 +2169,10 @@ RMAPI RL_Vector3 RL_QuaternionToEuler(RL_Quaternion q) return result; } -// RL_Transform a quaternion given a transformation matrix -RMAPI RL_Quaternion RL_QuaternionTransform(RL_Quaternion q, RL_Matrix mat) +// Transform a quaternion given a transformation matrix +RMAPI Quaternion quaternion_transform(Quaternion q, Matrix mat) { - RL_Quaternion result = { 0 }; + Quaternion result = { 0 }; result.x = mat.m0*q.x + mat.m4*q.y + mat.m8*q.z + mat.m12*q.w; result.y = mat.m1*q.x + mat.m5*q.y + mat.m9*q.z + mat.m13*q.w; @@ -2169,7 +2183,7 @@ RMAPI RL_Quaternion RL_QuaternionTransform(RL_Quaternion q, RL_Matrix mat) } // Check whether two given quaternions are almost equal -RMAPI int RL_QuaternionEquals(RL_Quaternion p, RL_Quaternion q) +RMAPI int quaternion_equals(Quaternion p, Quaternion q) { #if !defined(EPSILON) #define EPSILON 0.000001f @@ -2187,4 +2201,6 @@ RMAPI int RL_QuaternionEquals(RL_Quaternion p, RL_Quaternion q) return result; } +RL_NS_END + #endif // RAYMATH_H diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/rcamera.h b/project/auxillary/vis_ast/dependencies/raylib/include/rcamera.h index d33aaa8..b0bea47 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/rcamera.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/rcamera.h @@ -72,57 +72,59 @@ #define RL_CAMERA_CULL_DISTANCE_FAR RL_CULL_DISTANCE_FAR #endif +RL_NS_BEGIN + //---------------------------------------------------------------------------------- // Types and Structures Definition // NOTE: Below types are required for standalone usage //---------------------------------------------------------------------------------- #if defined(RCAMERA_STANDALONE) - // RL_Vector2, 2 components - typedef struct RL_Vector2 { + // Vector2, 2 components + typedef struct Vector2 { float x; // Vector x component float y; // Vector y component - } RL_Vector2; + } Vector2; - // RL_Vector3, 3 components - typedef struct RL_Vector3 { + // Vector3, 3 components + typedef struct Vector3 { float x; // Vector x component float y; // Vector y component float z; // Vector z component - } RL_Vector3; + } Vector3; - // RL_Matrix, 4x4 components, column major, OpenGL style, right-handed - typedef struct RL_Matrix { - float m0, m4, m8, m12; // RL_Matrix first row (4 components) - float m1, m5, m9, m13; // RL_Matrix second row (4 components) - float m2, m6, m10, m14; // RL_Matrix third row (4 components) - float m3, m7, m11, m15; // RL_Matrix fourth row (4 components) - } RL_Matrix; + // Matrix, 4x4 components, column major, OpenGL style, right-handed + typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) + } Matrix; - // RL_Camera type, defines a camera position/orientation in 3d space - typedef struct RL_Camera3D { - RL_Vector3 position; // RL_Camera position - RL_Vector3 target; // RL_Camera target it looks-at - RL_Vector3 up; // RL_Camera up vector (rotation over its axis) - float fovy; // RL_Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic - int projection; // RL_Camera projection type: RL_CAMERA_PERSPECTIVE or RL_CAMERA_ORTHOGRAPHIC - } RL_Camera3D; + // Camera type, defines a camera position/orientation in 3d space + typedef struct Camera3D { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic + int projection; // Camera projection type: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC + } Camera3D; - typedef RL_Camera3D RL_Camera; // RL_Camera type fallback, defaults to RL_Camera3D + typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D - // RL_Camera projection + // Camera projection typedef enum { - RL_CAMERA_PERSPECTIVE = 0, // Perspective projection - RL_CAMERA_ORTHOGRAPHIC // Orthographic projection - } RL_CameraProjection; + CAMERA_PERSPECTIVE = 0, // Perspective projection + CAMERA_ORTHOGRAPHIC // Orthographic projection + } CameraProjection; - // RL_Camera system modes + // Camera system modes typedef enum { - RL_CAMERA_CUSTOM = 0, // RL_Camera custom, controlled by user (RL_UpdateCamera() does nothing) - RL_CAMERA_FREE, // RL_Camera free mode - RL_CAMERA_ORBITAL, // RL_Camera orbital, around target, zoom supported - RL_CAMERA_FIRST_PERSON, // RL_Camera first person - RL_CAMERA_THIRD_PERSON // RL_Camera third person - } RL_CameraMode; + CAMERA_CUSTOM = 0, // Camera custom, controlled by user (update_camera() does nothing) + CAMERA_FREE, // Camera free mode + CAMERA_ORBITAL, // Camera orbital, around target, zoom supported + CAMERA_FIRST_PERSON, // Camera first person + CAMERA_THIRD_PERSON // Camera third person + } CameraMode; #endif //---------------------------------------------------------------------------------- @@ -134,31 +136,29 @@ // Module Functions Declaration //---------------------------------------------------------------------------------- -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif +RL_EXTERN_C_BEGIN -RLAPI RL_Vector3 GetCameraForward(RL_Camera *camera); -RLAPI RL_Vector3 GetCameraUp(RL_Camera *camera); -RLAPI RL_Vector3 GetCameraRight(RL_Camera *camera); +RLAPI Vector3 get_camera_forward(Camera *camera); +RLAPI Vector3 get_camera_up(Camera *camera); +RLAPI Vector3 get_camera_right(Camera *camera); -// RL_Camera movement -RLAPI void CameraMoveForward(RL_Camera *camera, float distance, bool moveInWorldPlane); -RLAPI void CameraMoveUp(RL_Camera *camera, float distance); -RLAPI void CameraMoveRight(RL_Camera *camera, float distance, bool moveInWorldPlane); -RLAPI void CameraMoveToTarget(RL_Camera *camera, float delta); +// Camera movement +RLAPI void camera_move_forward(Camera *camera, float distance, bool moveInWorldPlane); +RLAPI void camera_move_up(Camera *camera, float distance); +RLAPI void camera_move_right(Camera *camera, float distance, bool moveInWorldPlane); +RLAPI void camera_move_to_target(Camera *camera, float delta); -// RL_Camera rotation -RLAPI void CameraYaw(RL_Camera *camera, float angle, bool rotateAroundTarget); -RLAPI void CameraPitch(RL_Camera *camera, float angle, bool lockView, bool rotateAroundTarget, bool rotateUp); -RLAPI void CameraRoll(RL_Camera *camera, float angle); +// Camera rotation +RLAPI void camera_yaw(Camera *camera, float angle, bool rotateAroundTarget); +RLAPI void camera_pitch(Camera *camera, float angle, bool lockView, bool rotateAroundTarget, bool rotateUp); +RLAPI void camera_roll(Camera *camera, float angle); -RLAPI RL_Matrix GetCameraViewMatrix(RL_Camera *camera); -RLAPI RL_Matrix GetCameraProjectionMatrix(RL_Camera* camera, float aspect); +RLAPI Matrix get_camera_view_matrix(Camera *camera); +RLAPI Matrix get_camera_projection_matrix(Camera* camera, float aspect); -#if defined(__cplusplus) -} -#endif +RL_EXTERN_C_END + +RL_NS_END #endif // RCAMERA_H @@ -172,47 +172,47 @@ RLAPI RL_Matrix GetCameraProjectionMatrix(RL_Camera* camera, float aspect); #if defined(RCAMERA_IMPLEMENTATION) #include "raymath.h" // Required for vector maths: - // RL_Vector3Add() - // RL_Vector3Subtract() - // RL_Vector3Scale() - // RL_Vector3Normalize() - // RL_Vector3Distance() - // RL_Vector3CrossProduct() - // RL_Vector3RotateByAxisAngle() - // RL_Vector3Angle() - // RL_Vector3Negate() - // RL_MatrixLookAt() - // RL_MatrixPerspective() - // RL_MatrixOrtho() - // RL_MatrixIdentity() + // vector3_add() + // vector3_subtract() + // vector3_scale() + // vector3_normalize() + // vector3_distance() + // vector3_cross_product() + // vector3_rotate_by_axis_angle() + // vector3_angle() + // vector3_negate() + // matrix_look_at() + // matrix_perspective() + // matrix_ortho() + // matrix_identity() // raylib required functionality: - // RL_GetMouseDelta() - // RL_GetMouseWheelMove() - // RL_IsKeyDown() - // RL_IsKeyPressed() - // RL_GetFrameTime() + // get_mouse_delta() + // get_mouse_wheel_move() + // is_key_down() + // is_key_pressed() + // get_frame_time() //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- -#define RL_CAMERA_MOVE_SPEED 0.09f -#define RL_CAMERA_ROTATION_SPEED 0.03f -#define RL_CAMERA_PAN_SPEED 0.2f +#define CAMERA_MOVE_SPEED 0.09f +#define CAMERA_ROTATION_SPEED 0.03f +#define CAMERA_PAN_SPEED 0.2f -// RL_Camera mouse movement sensitivity -#define RL_CAMERA_MOUSE_MOVE_SENSITIVITY 0.003f // TODO: it should be independant of framerate -#define RL_CAMERA_MOUSE_SCROLL_SENSITIVITY 1.5f +// Camera mouse movement sensitivity +#define CAMERA_MOUSE_MOVE_SENSITIVITY 0.003f // TODO: it should be independant of framerate +#define CAMERA_MOUSE_SCROLL_SENSITIVITY 1.5f -#define RL_CAMERA_ORBITAL_SPEED 0.5f // Radians per second +#define CAMERA_ORBITAL_SPEED 0.5f // Radians per second -#define RL_CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER 8.0f -#define RL_CAMERA_FIRST_PERSON_STEP_DIVIDER 30.0f -#define RL_CAMERA_FIRST_PERSON_WAVING_DIVIDER 200.0f +#define CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER 8.0f +#define CAMERA_FIRST_PERSON_STEP_DIVIDER 30.0f +#define CAMERA_FIRST_PERSON_WAVING_DIVIDER 200.0f // PLAYER (used by camera) -#define RL_PLAYER_MOVEMENT_SENSITIVITY 20.0f +#define PLAYER_MOVEMENT_SENSITIVITY 20.0f //---------------------------------------------------------------------------------- // Types and Structures Definition @@ -229,88 +229,90 @@ RLAPI RL_Matrix GetCameraProjectionMatrix(RL_Camera* camera, float aspect); //---------------------------------------------------------------------------------- //... +RL_NS_BEGIN + //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- // Returns the cameras forward vector (normalized) -RL_Vector3 GetCameraForward(RL_Camera *camera) +Vector3 get_camera_forward(Camera *camera) { - return RL_Vector3Normalize(RL_Vector3Subtract(camera->target, camera->position)); + return vector3_normalize(vector3_subtract(camera->target, camera->position)); } // Returns the cameras up vector (normalized) // Note: The up vector might not be perpendicular to the forward vector -RL_Vector3 GetCameraUp(RL_Camera *camera) +Vector3 get_camera_up(Camera *camera) { - return RL_Vector3Normalize(camera->up); + return vector3_normalize(camera->up); } // Returns the cameras right vector (normalized) -RL_Vector3 GetCameraRight(RL_Camera *camera) +Vector3 get_camera_right(Camera *camera) { - RL_Vector3 forward = GetCameraForward(camera); - RL_Vector3 up = GetCameraUp(camera); + Vector3 forward = get_camera_forward(camera); + Vector3 up = get_camera_up(camera); - return RL_Vector3CrossProduct(forward, up); + return vector3_cross_product(forward, up); } // Moves the camera in its forward direction -void CameraMoveForward(RL_Camera *camera, float distance, bool moveInWorldPlane) +void camera_move_forward(Camera *camera, float distance, bool moveInWorldPlane) { - RL_Vector3 forward = GetCameraForward(camera); + Vector3 forward = get_camera_forward(camera); if (moveInWorldPlane) { // Project vector onto world plane forward.y = 0; - forward = RL_Vector3Normalize(forward); + forward = vector3_normalize(forward); } // Scale by distance - forward = RL_Vector3Scale(forward, distance); + forward = vector3_scale(forward, distance); // Move position and target - camera->position = RL_Vector3Add(camera->position, forward); - camera->target = RL_Vector3Add(camera->target, forward); + camera->position = vector3_add(camera->position, forward); + camera->target = vector3_add(camera->target, forward); } // Moves the camera in its up direction -void CameraMoveUp(RL_Camera *camera, float distance) +void camera_move_up(Camera *camera, float distance) { - RL_Vector3 up = GetCameraUp(camera); + Vector3 up = get_camera_up(camera); // Scale by distance - up = RL_Vector3Scale(up, distance); + up = vector3_scale(up, distance); // Move position and target - camera->position = RL_Vector3Add(camera->position, up); - camera->target = RL_Vector3Add(camera->target, up); + camera->position = vector3_add(camera->position, up); + camera->target = vector3_add(camera->target, up); } // Moves the camera target in its current right direction -void CameraMoveRight(RL_Camera *camera, float distance, bool moveInWorldPlane) +void camera_move_right(Camera *camera, float distance, bool moveInWorldPlane) { - RL_Vector3 right = GetCameraRight(camera); + Vector3 right = get_camera_right(camera); if (moveInWorldPlane) { // Project vector onto world plane right.y = 0; - right = RL_Vector3Normalize(right); + right = vector3_normalize(right); } // Scale by distance - right = RL_Vector3Scale(right, distance); + right = vector3_scale(right, distance); // Move position and target - camera->position = RL_Vector3Add(camera->position, right); - camera->target = RL_Vector3Add(camera->target, right); + camera->position = vector3_add(camera->position, right); + camera->target = vector3_add(camera->target, right); } // Moves the camera position closer/farther to/from the camera target -void CameraMoveToTarget(RL_Camera *camera, float delta) +void camera_move_to_target(Camera *camera, float delta) { - float distance = RL_Vector3Distance(camera->position, camera->target); + float distance = vector3_distance(camera->position, camera->target); // Apply delta distance += delta; @@ -319,213 +321,213 @@ void CameraMoveToTarget(RL_Camera *camera, float delta) if (distance <= 0) distance = 0.001f; // Set new distance by moving the position along the forward vector - RL_Vector3 forward = GetCameraForward(camera); - camera->position = RL_Vector3Add(camera->target, RL_Vector3Scale(forward, -distance)); + Vector3 forward = get_camera_forward(camera); + camera->position = vector3_add(camera->target, vector3_scale(forward, -distance)); } // Rotates the camera around its up vector // Yaw is "looking left and right" // If rotateAroundTarget is false, the camera rotates around its position // Note: angle must be provided in radians -void CameraYaw(RL_Camera *camera, float angle, bool rotateAroundTarget) +void camera_yaw(Camera *camera, float angle, bool rotateAroundTarget) { // Rotation axis - RL_Vector3 up = GetCameraUp(camera); + Vector3 up = get_camera_up(camera); // View vector - RL_Vector3 targetPosition = RL_Vector3Subtract(camera->target, camera->position); + Vector3 targetPosition = vector3_subtract(camera->target, camera->position); // Rotate view vector around up axis - targetPosition = RL_Vector3RotateByAxisAngle(targetPosition, up, angle); + targetPosition = vector3_rotate_by_axis_angle(targetPosition, up, angle); if (rotateAroundTarget) { // Move position relative to target - camera->position = RL_Vector3Subtract(camera->target, targetPosition); + camera->position = vector3_subtract(camera->target, targetPosition); } else // rotate around camera.position { // Move target relative to position - camera->target = RL_Vector3Add(camera->position, targetPosition); + camera->target = vector3_add(camera->position, targetPosition); } } // Rotates the camera around its right vector, pitch is "looking up and down" // - lockView prevents camera overrotation (aka "somersaults") // - rotateAroundTarget defines if rotation is around target or around its position -// - rotateUp rotates the up direction as well (typically only usefull in RL_CAMERA_FREE) +// - rotateUp rotates the up direction as well (typically only usefull in CAMERA_FREE) // NOTE: angle must be provided in radians -void CameraPitch(RL_Camera *camera, float angle, bool lockView, bool rotateAroundTarget, bool rotateUp) +void camera_pitch(Camera *camera, float angle, bool lockView, bool rotateAroundTarget, bool rotateUp) { // Up direction - RL_Vector3 up = GetCameraUp(camera); + Vector3 up = get_camera_up(camera); // View vector - RL_Vector3 targetPosition = RL_Vector3Subtract(camera->target, camera->position); + Vector3 targetPosition = vector3_subtract(camera->target, camera->position); if (lockView) { // In these camera modes we clamp the Pitch angle // to allow only viewing straight up or down. - // RL_Clamp view up - float maxAngleUp = RL_Vector3Angle(up, targetPosition); + // clamp view up + float maxAngleUp = vector3_angle(up, targetPosition); maxAngleUp -= 0.001f; // avoid numerical errors if (angle > maxAngleUp) angle = maxAngleUp; - // RL_Clamp view down - float maxAngleDown = RL_Vector3Angle(RL_Vector3Negate(up), targetPosition); + // clamp view down + float maxAngleDown = vector3_angle(vector3_negate(up), targetPosition); maxAngleDown *= -1.0f; // downwards angle is negative maxAngleDown += 0.001f; // avoid numerical errors if (angle < maxAngleDown) angle = maxAngleDown; } // Rotation axis - RL_Vector3 right = GetCameraRight(camera); + Vector3 right = get_camera_right(camera); // Rotate view vector around right axis - targetPosition = RL_Vector3RotateByAxisAngle(targetPosition, right, angle); + targetPosition = vector3_rotate_by_axis_angle(targetPosition, right, angle); if (rotateAroundTarget) { // Move position relative to target - camera->position = RL_Vector3Subtract(camera->target, targetPosition); + camera->position = vector3_subtract(camera->target, targetPosition); } else // rotate around camera.position { // Move target relative to position - camera->target = RL_Vector3Add(camera->position, targetPosition); + camera->target = vector3_add(camera->position, targetPosition); } if (rotateUp) { // Rotate up direction around right axis - camera->up = RL_Vector3RotateByAxisAngle(camera->up, right, angle); + camera->up = vector3_rotate_by_axis_angle(camera->up, right, angle); } } // Rotates the camera around its forward vector // Roll is "turning your head sideways to the left or right" // Note: angle must be provided in radians -void CameraRoll(RL_Camera *camera, float angle) +void camera_roll(Camera *camera, float angle) { // Rotation axis - RL_Vector3 forward = GetCameraForward(camera); + Vector3 forward = get_camera_forward(camera); // Rotate up direction around forward axis - camera->up = RL_Vector3RotateByAxisAngle(camera->up, forward, angle); + camera->up = vector3_rotate_by_axis_angle(camera->up, forward, angle); } // Returns the camera view matrix -RL_Matrix GetCameraViewMatrix(RL_Camera *camera) +Matrix get_camera_view_matrix(Camera *camera) { - return RL_MatrixLookAt(camera->position, camera->target, camera->up); + return matrix_look_at(camera->position, camera->target, camera->up); } // Returns the camera projection matrix -RL_Matrix GetCameraProjectionMatrix(RL_Camera *camera, float aspect) +Matrix get_camera_projection_matrix(Camera *camera, float aspect) { - if (camera->projection == RL_CAMERA_PERSPECTIVE) + if (camera->projection == CAMERA_PERSPECTIVE) { - return RL_MatrixPerspective(camera->fovy*RL_DEG2RAD, aspect, RL_CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_FAR); + return matrix_perspective(camera->fovy*RL_DEG2RAD, aspect, RL_CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_FAR); } - else if (camera->projection == RL_CAMERA_ORTHOGRAPHIC) + else if (camera->projection == CAMERA_ORTHOGRAPHIC) { double top = camera->fovy/2.0; double right = top*aspect; - return RL_MatrixOrtho(-right, right, -top, top, RL_CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_FAR); + return matrix_ortho(-right, right, -top, top, RL_CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_FAR); } - return RL_MatrixIdentity(); + return matrix_identity(); } #if !defined(RCAMERA_STANDALONE) // Update camera position for selected mode -// RL_Camera mode: RL_CAMERA_FREE, RL_CAMERA_FIRST_PERSON, RL_CAMERA_THIRD_PERSON, RL_CAMERA_ORBITAL or CUSTOM -void RL_UpdateCamera(RL_Camera *camera, int mode) +// Camera mode: CAMERA_FREE, CAMERA_FIRST_PERSON, CAMERA_THIRD_PERSON, CAMERA_ORBITAL or CUSTOM +void update_camera(Camera *camera, int mode) { - RL_Vector2 mousePositionDelta = RL_GetMouseDelta(); + Vector2 mousePositionDelta = get_mouse_delta(); - bool moveInWorldPlane = ((mode == RL_CAMERA_FIRST_PERSON) || (mode == RL_CAMERA_THIRD_PERSON)); - bool rotateAroundTarget = ((mode == RL_CAMERA_THIRD_PERSON) || (mode == RL_CAMERA_ORBITAL)); - bool lockView = ((mode == RL_CAMERA_FIRST_PERSON) || (mode == RL_CAMERA_THIRD_PERSON) || (mode == RL_CAMERA_ORBITAL)); + bool moveInWorldPlane = ((mode == CAMERA_FIRST_PERSON) || (mode == CAMERA_THIRD_PERSON)); + bool rotateAroundTarget = ((mode == CAMERA_THIRD_PERSON) || (mode == CAMERA_ORBITAL)); + bool lockView = ((mode == CAMERA_FIRST_PERSON) || (mode == CAMERA_THIRD_PERSON) || (mode == CAMERA_ORBITAL)); bool rotateUp = false; - if (mode == RL_CAMERA_ORBITAL) + if (mode == CAMERA_ORBITAL) { // Orbital can just orbit - RL_Matrix rotation = RL_MatrixRotate(GetCameraUp(camera), RL_CAMERA_ORBITAL_SPEED*RL_GetFrameTime()); - RL_Vector3 view = RL_Vector3Subtract(camera->position, camera->target); - view = RL_Vector3Transform(view, rotation); - camera->position = RL_Vector3Add(camera->target, view); + Matrix rotation = matrix_rotate(get_camera_up(camera), CAMERA_ORBITAL_SPEED*get_frame_time()); + Vector3 view = vector3_subtract(camera->position, camera->target); + view = vector3_transform(view, rotation); + camera->position = vector3_add(camera->target, view); } else { - // RL_Camera rotation - if (RL_IsKeyDown(RL_KEY_DOWN)) CameraPitch(camera, -RL_CAMERA_ROTATION_SPEED, lockView, rotateAroundTarget, rotateUp); - if (RL_IsKeyDown(RL_KEY_UP)) CameraPitch(camera, RL_CAMERA_ROTATION_SPEED, lockView, rotateAroundTarget, rotateUp); - if (RL_IsKeyDown(RL_KEY_RIGHT)) CameraYaw(camera, -RL_CAMERA_ROTATION_SPEED, rotateAroundTarget); - if (RL_IsKeyDown(RL_KEY_LEFT)) CameraYaw(camera, RL_CAMERA_ROTATION_SPEED, rotateAroundTarget); - if (RL_IsKeyDown(RL_KEY_Q)) CameraRoll(camera, -RL_CAMERA_ROTATION_SPEED); - if (RL_IsKeyDown(RL_KEY_E)) CameraRoll(camera, RL_CAMERA_ROTATION_SPEED); + // Camera rotation + if (is_key_down(KEY_DOWN)) camera_pitch(camera, -CAMERA_ROTATION_SPEED, lockView, rotateAroundTarget, rotateUp); + if (is_key_down(KEY_UP)) camera_pitch(camera, CAMERA_ROTATION_SPEED, lockView, rotateAroundTarget, rotateUp); + if (is_key_down(KEY_RIGHT)) camera_yaw(camera, -CAMERA_ROTATION_SPEED, rotateAroundTarget); + if (is_key_down(KEY_LEFT)) camera_yaw(camera, CAMERA_ROTATION_SPEED, rotateAroundTarget); + if (is_key_down(KEY_Q)) camera_roll(camera, -CAMERA_ROTATION_SPEED); + if (is_key_down(KEY_E)) camera_roll(camera, CAMERA_ROTATION_SPEED); - // RL_Camera movement - if (!RL_IsGamepadAvailable(0)) + // Camera movement + if (!is_gamepad_available(0)) { - // RL_Camera pan (for RL_CAMERA_FREE) - if ((mode == RL_CAMERA_FREE) && (RL_IsMouseButtonDown(RL_MOUSE_BUTTON_MIDDLE))) + // Camera pan (for CAMERA_FREE) + if ((mode == CAMERA_FREE) && (is_mouse_button_down(MOUSE_BUTTON_MIDDLE))) { - const RL_Vector2 mouseDelta = RL_GetMouseDelta(); - if (mouseDelta.x > 0.0f) CameraMoveRight(camera, RL_CAMERA_PAN_SPEED, moveInWorldPlane); - if (mouseDelta.x < 0.0f) CameraMoveRight(camera, -RL_CAMERA_PAN_SPEED, moveInWorldPlane); - if (mouseDelta.y > 0.0f) CameraMoveUp(camera, -RL_CAMERA_PAN_SPEED); - if (mouseDelta.y < 0.0f) CameraMoveUp(camera, RL_CAMERA_PAN_SPEED); + const Vector2 mouseDelta = get_mouse_delta(); + if (mouseDelta.x > 0.0f) camera_move_right(camera, CAMERA_PAN_SPEED, moveInWorldPlane); + if (mouseDelta.x < 0.0f) camera_move_right(camera, -CAMERA_PAN_SPEED, moveInWorldPlane); + if (mouseDelta.y > 0.0f) camera_move_up(camera, -CAMERA_PAN_SPEED); + if (mouseDelta.y < 0.0f) camera_move_up(camera, CAMERA_PAN_SPEED); } else { // Mouse support - CameraYaw(camera, -mousePositionDelta.x*RL_CAMERA_MOUSE_MOVE_SENSITIVITY, rotateAroundTarget); - CameraPitch(camera, -mousePositionDelta.y*RL_CAMERA_MOUSE_MOVE_SENSITIVITY, lockView, rotateAroundTarget, rotateUp); + camera_yaw(camera, -mousePositionDelta.x*CAMERA_MOUSE_MOVE_SENSITIVITY, rotateAroundTarget); + camera_pitch(camera, -mousePositionDelta.y*CAMERA_MOUSE_MOVE_SENSITIVITY, lockView, rotateAroundTarget, rotateUp); } // Keyboard support - if (RL_IsKeyDown(RL_KEY_W)) CameraMoveForward(camera, RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_IsKeyDown(RL_KEY_A)) CameraMoveRight(camera, -RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_IsKeyDown(RL_KEY_S)) CameraMoveForward(camera, -RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_IsKeyDown(RL_KEY_D)) CameraMoveRight(camera, RL_CAMERA_MOVE_SPEED, moveInWorldPlane); + if (is_key_down(KEY_W)) camera_move_forward(camera, CAMERA_MOVE_SPEED, moveInWorldPlane); + if (is_key_down(KEY_A)) camera_move_right(camera, -CAMERA_MOVE_SPEED, moveInWorldPlane); + if (is_key_down(KEY_S)) camera_move_forward(camera, -CAMERA_MOVE_SPEED, moveInWorldPlane); + if (is_key_down(KEY_D)) camera_move_right(camera, CAMERA_MOVE_SPEED, moveInWorldPlane); } else { // Gamepad controller support - CameraYaw(camera, -(RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_RIGHT_X) * 2)*RL_CAMERA_MOUSE_MOVE_SENSITIVITY, rotateAroundTarget); - CameraPitch(camera, -(RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_RIGHT_Y) * 2)*RL_CAMERA_MOUSE_MOVE_SENSITIVITY, lockView, rotateAroundTarget, rotateUp); + camera_yaw(camera, -(get_gamepad_axis_movement(0, GAMEPAD_AXIS_RIGHT_X) * 2)*CAMERA_MOUSE_MOVE_SENSITIVITY, rotateAroundTarget); + camera_pitch(camera, -(get_gamepad_axis_movement(0, GAMEPAD_AXIS_RIGHT_Y) * 2)*CAMERA_MOUSE_MOVE_SENSITIVITY, lockView, rotateAroundTarget, rotateUp); - if (RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_LEFT_Y) <= -0.25f) CameraMoveForward(camera, RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_LEFT_X) <= -0.25f) CameraMoveRight(camera, -RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_LEFT_Y) >= 0.25f) CameraMoveForward(camera, -RL_CAMERA_MOVE_SPEED, moveInWorldPlane); - if (RL_GetGamepadAxisMovement(0, RL_GAMEPAD_AXIS_LEFT_X) >= 0.25f) CameraMoveRight(camera, RL_CAMERA_MOVE_SPEED, moveInWorldPlane); + if (get_gamepad_axis_movement(0, GAMEPAD_AXIS_LEFT_Y) <= -0.25f) camera_move_forward(camera, CAMERA_MOVE_SPEED, moveInWorldPlane); + if (get_gamepad_axis_movement(0, GAMEPAD_AXIS_LEFT_X) <= -0.25f) camera_move_right(camera, -CAMERA_MOVE_SPEED, moveInWorldPlane); + if (get_gamepad_axis_movement(0, GAMEPAD_AXIS_LEFT_Y) >= 0.25f) camera_move_forward(camera, -CAMERA_MOVE_SPEED, moveInWorldPlane); + if (get_gamepad_axis_movement(0, GAMEPAD_AXIS_LEFT_X) >= 0.25f) camera_move_right(camera, CAMERA_MOVE_SPEED, moveInWorldPlane); } - if (mode == RL_CAMERA_FREE) + if (mode == CAMERA_FREE) { - if (RL_IsKeyDown(RL_KEY_SPACE)) CameraMoveUp(camera, RL_CAMERA_MOVE_SPEED); - if (RL_IsKeyDown(RL_KEY_LEFT_CONTROL)) CameraMoveUp(camera, -RL_CAMERA_MOVE_SPEED); + if (is_key_down(KEY_SPACE)) camera_move_up(camera, CAMERA_MOVE_SPEED); + if (is_key_down(KEY_LEFT_CONTROL)) camera_move_up(camera, -CAMERA_MOVE_SPEED); } } - if ((mode == RL_CAMERA_THIRD_PERSON) || (mode == RL_CAMERA_ORBITAL) || (mode == RL_CAMERA_FREE)) + if ((mode == CAMERA_THIRD_PERSON) || (mode == CAMERA_ORBITAL) || (mode == CAMERA_FREE)) { // Zoom target distance - CameraMoveToTarget(camera, -RL_GetMouseWheelMove()); - if (RL_IsKeyPressed(RL_KEY_KP_SUBTRACT)) CameraMoveToTarget(camera, 2.0f); - if (RL_IsKeyPressed(RL_KEY_KP_ADD)) CameraMoveToTarget(camera, -2.0f); + camera_move_to_target(camera, -get_mouse_wheel_move()); + if (is_key_pressed(KEY_KP_SUBTRACT)) camera_move_to_target(camera, 2.0f); + if (is_key_pressed(KEY_KP_ADD)) camera_move_to_target(camera, -2.0f); } } #endif // !RCAMERA_STANDALONE // Update camera movement, movement/rotation values should be provided by user -void RL_UpdateCameraPro(RL_Camera *camera, RL_Vector3 movement, RL_Vector3 rotation, float zoom) +void update_camera_pro(Camera *camera, Vector3 movement, Vector3 rotation, float zoom) { // Required values // movement.x - Move forward/backward @@ -541,18 +543,20 @@ void RL_UpdateCameraPro(RL_Camera *camera, RL_Vector3 movement, RL_Vector3 rotat bool rotateUp = false; bool moveInWorldPlane = true; - // RL_Camera rotation - CameraPitch(camera, -rotation.y*RL_DEG2RAD, lockView, rotateAroundTarget, rotateUp); - CameraYaw(camera, -rotation.x*RL_DEG2RAD, rotateAroundTarget); - CameraRoll(camera, rotation.z*RL_DEG2RAD); + // Camera rotation + camera_pitch(camera, -rotation.y*RL_DEG2RAD, lockView, rotateAroundTarget, rotateUp); + camera_yaw(camera, -rotation.x*RL_DEG2RAD, rotateAroundTarget); + camera_roll(camera, rotation.z*RL_DEG2RAD); - // RL_Camera movement - CameraMoveForward(camera, movement.x, moveInWorldPlane); - CameraMoveRight(camera, movement.y, moveInWorldPlane); - CameraMoveUp(camera, movement.z); + // Camera movement + camera_move_forward(camera, movement.x, moveInWorldPlane); + camera_move_right(camera, movement.y, moveInWorldPlane); + camera_move_up(camera, movement.z); // Zoom target distance - CameraMoveToTarget(camera, zoom); + camera_move_to_target(camera, zoom); } +RL_NS_END + #endif // RCAMERA_IMPLEMENTATION diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/rgestures.h b/project/auxillary/vis_ast/dependencies/raylib/include/rgestures.h index 650cfbb..2e5aee6 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/rgestures.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/rgestures.h @@ -65,30 +65,34 @@ typedef enum bool { false = 0, true = !false } bool; #endif +#include "config.h" + +RL_NS_BEGIN + #if !defined(RL_VECTOR2_TYPE) -// RL_Vector2 type -typedef struct RL_Vector2 { +// Vector2 type +typedef struct Vector2 { float x; float y; -} RL_Vector2; +} Vector2; #endif #if defined(RGESTURES_STANDALONE) // Gestures type // NOTE: It could be used as flags to enable only some gestures typedef enum { - RL_GESTURE_NONE = 0, - RL_GESTURE_TAP = 1, - RL_GESTURE_DOUBLETAP = 2, - RL_GESTURE_HOLD = 4, - RL_GESTURE_DRAG = 8, - RL_GESTURE_SWIPE_RIGHT = 16, - RL_GESTURE_SWIPE_LEFT = 32, - RL_GESTURE_SWIPE_UP = 64, - RL_GESTURE_SWIPE_DOWN = 128, - RL_GESTURE_PINCH_IN = 256, - RL_GESTURE_PINCH_OUT = 512 -} RL_Gesture; + GESTURE_NONE = 0, + GESTURE_TAP = 1, + GESTURE_DOUBLETAP = 2, + GESTURE_HOLD = 4, + GESTURE_DRAG = 8, + GESTURE_SWIPE_RIGHT = 16, + GESTURE_SWIPE_LEFT = 32, + GESTURE_SWIPE_UP = 64, + GESTURE_SWIPE_DOWN = 128, + GESTURE_PINCH_IN = 256, + GESTURE_PINCH_OUT = 512 +} Gesture; #endif typedef enum { @@ -96,15 +100,15 @@ typedef enum { TOUCH_ACTION_DOWN, TOUCH_ACTION_MOVE, TOUCH_ACTION_CANCEL -} RL_TouchAction; +} TouchAction; -// RL_Gesture event +// Gesture event typedef struct { int touchAction; int pointCount; int pointId[RL_MAX_TOUCH_POINTS]; - RL_Vector2 position[RL_MAX_TOUCH_POINTS]; -} RL_GestureEvent; + Vector2 position[RL_MAX_TOUCH_POINTS]; +} GestureEvent; //---------------------------------------------------------------------------------- // Global Variables Definition @@ -115,28 +119,26 @@ typedef struct { // Module Functions Declaration //---------------------------------------------------------------------------------- -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif +RL_EXTERN_C_BEGIN -void RL_ProcessGestureEvent(RL_GestureEvent event); // Process gesture event and translate it into gestures -void RL_UpdateGestures(void); // Update gestures detected (must be called every frame) +void process_gesture_event(GestureEvent event); // Process gesture event and translate it into gestures +void update_gestures(void); // Update gestures detected (must be called every frame) #if defined(RGESTURES_STANDALONE) -void RL_SetGesturesEnabled(unsigned int flags); // Enable a set of gestures using flags -bool RL_IsGestureDetected(int gesture); // Check if a gesture have been detected -int RL_GetGestureDetected(void); // Get latest detected gesture +void set_gestures_enabled(unsigned int flags); // Enable a set of gestures using flags +bool is_gesture_detected(int gesture); // Check if a gesture have been detected +int get_gesture_detected(void); // Get latest detected gesture -float RL_GetGestureHoldDuration(void); // Get gesture hold time in seconds -RL_Vector2 RL_GetGestureDragVector(void); // Get gesture drag vector -float RL_GetGestureDragAngle(void); // Get gesture drag angle -RL_Vector2 RL_GetGesturePinchVector(void); // Get gesture pinch delta -float RL_GetGesturePinchAngle(void); // Get gesture pinch angle +float get_gesture_hold_duration(void); // Get gesture hold time in seconds +Vector2 get_gesture_drag_vector(void); // Get gesture drag vector +float get_gesture_drag_angle(void); // Get gesture drag angle +Vector2 get_gesture_pinch_vector(void); // Get gesture pinch delta +float get_gesture_pinch_angle(void); // Get gesture pinch angle #endif -#if defined(__cplusplus) -} -#endif +RL_EXTERN_C_END + +RL_NS_END #endif // RGESTURES_H @@ -154,8 +156,8 @@ float RL_GetGesturePinchAngle(void); // Get gesture pinch extern "C" { // Prevents name mangling of functions #endif // Functions required to query time on Windows - int __stdcall RL_QueryPerformanceCounter(unsigned long long int *lpPerformanceCount); - int __stdcall RL_QueryPerformanceFrequency(unsigned long long int *lpFrequency); + int __stdcall query_performance_counter(unsigned long long int *lpPerformanceCount); + int __stdcall query_performance_frequency(unsigned long long int *lpFrequency); #if defined(__cplusplus) } #endif @@ -186,6 +188,8 @@ float RL_GetGesturePinchAngle(void); // Get gesture pinch #define RL_PINCH_TIMEOUT 0.3f // Pinch minimum time, measured in seconds #define RL_DOUBLETAP_RANGE 0.03f // DoubleTap range, measured in normalized screen units (0.0f to 1.0f) +RL_NS_BEGIN + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- @@ -198,14 +202,14 @@ typedef struct { int firstId; // Touch id for first touch point int pointCount; // Touch points counter double eventTime; // Time stamp when an event happened - RL_Vector2 upPosition; // Touch up position - RL_Vector2 downPositionA; // First touch down position - RL_Vector2 downPositionB; // Second touch down position - RL_Vector2 downDragPosition; // Touch drag position - RL_Vector2 moveDownPositionA; // First touch down position on move - RL_Vector2 moveDownPositionB; // Second touch down position on move - RL_Vector2 previousPositionA; // Previous position A to compare for pinch gestures - RL_Vector2 previousPositionB; // Previous position B to compare for pinch gestures + Vector2 upPosition; // Touch up position + Vector2 downPositionA; // First touch down position + Vector2 downPositionB; // Second touch down position + Vector2 downDragPosition; // Touch drag position + Vector2 moveDownPositionA; // First touch down position on move + Vector2 moveDownPositionB; // Second touch down position on move + Vector2 previousPositionA; // Previous position A to compare for pinch gestures + Vector2 previousPositionB; // Previous position B to compare for pinch gestures int tapCounter; // TAP counter (one tap implies TOUCH_ACTION_DOWN and TOUCH_ACTION_UP actions) } Touch; struct { @@ -213,7 +217,7 @@ typedef struct { double timeDuration; // HOLD duration in seconds } Hold; struct { - RL_Vector2 vector; // DRAG vector (between initial and current position) + Vector2 vector; // DRAG vector (between initial and current position) float angle; // DRAG angle (relative to x-axis) float distance; // DRAG distance (from initial touch point to final) (normalized [0..1]) float intensity; // DRAG intensity, how far why did the DRAG (pixels per frame) @@ -222,269 +226,287 @@ typedef struct { double startTime; // SWIPE start time to calculate drag intensity } Swipe; struct { - RL_Vector2 vector; // PINCH vector (between first and second touch points) + Vector2 vector; // PINCH vector (between first and second touch points) float angle; // PINCH angle (relative to x-axis) float distance; // PINCH displacement distance (normalized [0..1]) } Pinch; -} RL_GesturesData; +} GesturesData; //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- -static RL_GesturesData RL_GESTURES = { +static GesturesData GESTURES = { +#ifdef __cplusplus + (unsigned int)-1, + GESTURE_NONE, + 0b0000001111111111 +#else .Touch.firstId = -1, - .current = RL_GESTURE_NONE, // No current gesture detected + .current = GESTURE_NONE, // No current gesture detected .enabledFlags = 0b0000001111111111 // All gestures supported by default +#endif }; //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static float rgVector2Angle(RL_Vector2 initialPosition, RL_Vector2 finalPosition); -static float rgVector2Distance(RL_Vector2 v1, RL_Vector2 v2); -static double rgGetCurrentTime(void); +static float rg_vector2_angle(Vector2 initialPosition, Vector2 finalPosition); +static float rg_vector2_distance(Vector2 v1, Vector2 v2); +static double rg_get_current_time(void); //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- // Enable only desired gestures to be detected -void RL_SetGesturesEnabled(unsigned int flags) +void set_gestures_enabled(unsigned int flags) { - RL_GESTURES.enabledFlags = flags; + GESTURES.enabledFlags = flags; } // Check if a gesture have been detected -bool RL_IsGestureDetected(unsigned int gesture) +bool is_gesture_detected(unsigned int gesture) { - if ((RL_GESTURES.enabledFlags & RL_GESTURES.current) == gesture) return true; + if ((GESTURES.enabledFlags & GESTURES.current) == gesture) return true; else return false; } // Process gesture event and translate it into gestures -void RL_ProcessGestureEvent(RL_GestureEvent event) +void process_gesture_event(GestureEvent event) { // Reset required variables - RL_GESTURES.Touch.pointCount = event.pointCount; // Required on RL_UpdateGestures() + GESTURES.Touch.pointCount = event.pointCount; // Required on update_gestures() - if (RL_GESTURES.Touch.pointCount == 1) // One touch point + if (GESTURES.Touch.pointCount == 1) // One touch point { if (event.touchAction == TOUCH_ACTION_DOWN) { - RL_GESTURES.Touch.tapCounter++; // Tap counter + GESTURES.Touch.tapCounter++; // Tap counter // Detect GESTURE_DOUBLE_TAP - if ((RL_GESTURES.current == RL_GESTURE_NONE) && (RL_GESTURES.Touch.tapCounter >= 2) && ((rgGetCurrentTime() - RL_GESTURES.Touch.eventTime) < RL_TAP_TIMEOUT) && (rgVector2Distance(RL_GESTURES.Touch.downPositionA, event.position[0]) < RL_DOUBLETAP_RANGE)) + if ((GESTURES.current == GESTURE_NONE) && (GESTURES.Touch.tapCounter >= 2) && ((rg_get_current_time() - GESTURES.Touch.eventTime) < RL_TAP_TIMEOUT) && (rg_vector2_distance(GESTURES.Touch.downPositionA, event.position[0]) < RL_DOUBLETAP_RANGE)) { - RL_GESTURES.current = RL_GESTURE_DOUBLETAP; - RL_GESTURES.Touch.tapCounter = 0; + GESTURES.current = GESTURE_DOUBLETAP; + GESTURES.Touch.tapCounter = 0; } - else // Detect RL_GESTURE_TAP + else // Detect GESTURE_TAP { - RL_GESTURES.Touch.tapCounter = 1; - RL_GESTURES.current = RL_GESTURE_TAP; + GESTURES.Touch.tapCounter = 1; + GESTURES.current = GESTURE_TAP; } - RL_GESTURES.Touch.downPositionA = event.position[0]; - RL_GESTURES.Touch.downDragPosition = event.position[0]; + GESTURES.Touch.downPositionA = event.position[0]; + GESTURES.Touch.downDragPosition = event.position[0]; - RL_GESTURES.Touch.upPosition = RL_GESTURES.Touch.downPositionA; - RL_GESTURES.Touch.eventTime = rgGetCurrentTime(); + GESTURES.Touch.upPosition = GESTURES.Touch.downPositionA; + GESTURES.Touch.eventTime = rg_get_current_time(); - RL_GESTURES.Swipe.startTime = rgGetCurrentTime(); + GESTURES.Swipe.startTime = rg_get_current_time(); - RL_GESTURES.Drag.vector = (RL_Vector2){ 0.0f, 0.0f }; + #ifdef __cplusplus + GESTURES.Drag.vector = Vector2{ 0.0f, 0.0f }; + #else + GESTURES.Drag.vector = (Vector2){ 0.0f, 0.0f }; + #endif } else if (event.touchAction == TOUCH_ACTION_UP) { // A swipe can happen while the current gesture is drag, but (specially for web) also hold, so set upPosition for both cases - if (RL_GESTURES.current == RL_GESTURE_DRAG || RL_GESTURES.current == RL_GESTURE_HOLD) RL_GESTURES.Touch.upPosition = event.position[0]; + if (GESTURES.current == GESTURE_DRAG || GESTURES.current == GESTURE_HOLD) GESTURES.Touch.upPosition = event.position[0]; - // NOTE: RL_GESTURES.Drag.intensity dependent on the resolution of the screen - RL_GESTURES.Drag.distance = rgVector2Distance(RL_GESTURES.Touch.downPositionA, RL_GESTURES.Touch.upPosition); - RL_GESTURES.Drag.intensity = RL_GESTURES.Drag.distance/(float)((rgGetCurrentTime() - RL_GESTURES.Swipe.startTime)); + // NOTE: GESTURES.Drag.intensity dependent on the resolution of the screen + GESTURES.Drag.distance = rg_vector2_distance(GESTURES.Touch.downPositionA, GESTURES.Touch.upPosition); + GESTURES.Drag.intensity = GESTURES.Drag.distance/(float)((rg_get_current_time() - GESTURES.Swipe.startTime)); // Detect GESTURE_SWIPE - if ((RL_GESTURES.Drag.intensity > RL_FORCE_TO_SWIPE) && (RL_GESTURES.current != RL_GESTURE_DRAG)) + if ((GESTURES.Drag.intensity > RL_FORCE_TO_SWIPE) && (GESTURES.current != GESTURE_DRAG)) { // NOTE: Angle should be inverted in Y - RL_GESTURES.Drag.angle = 360.0f - rgVector2Angle(RL_GESTURES.Touch.downPositionA, RL_GESTURES.Touch.upPosition); + GESTURES.Drag.angle = 360.0f - rg_vector2_angle(GESTURES.Touch.downPositionA, GESTURES.Touch.upPosition); - if ((RL_GESTURES.Drag.angle < 30) || (RL_GESTURES.Drag.angle > 330)) RL_GESTURES.current = RL_GESTURE_SWIPE_RIGHT; // Right - else if ((RL_GESTURES.Drag.angle >= 30) && (RL_GESTURES.Drag.angle <= 150)) RL_GESTURES.current = RL_GESTURE_SWIPE_UP; // Up - else if ((RL_GESTURES.Drag.angle > 150) && (RL_GESTURES.Drag.angle < 210)) RL_GESTURES.current = RL_GESTURE_SWIPE_LEFT; // Left - else if ((RL_GESTURES.Drag.angle >= 210) && (RL_GESTURES.Drag.angle <= 330)) RL_GESTURES.current = RL_GESTURE_SWIPE_DOWN; // Down - else RL_GESTURES.current = RL_GESTURE_NONE; + if ((GESTURES.Drag.angle < 30) || (GESTURES.Drag.angle > 330)) GESTURES.current = GESTURE_SWIPE_RIGHT; // Right + else if ((GESTURES.Drag.angle >= 30) && (GESTURES.Drag.angle <= 150)) GESTURES.current = GESTURE_SWIPE_UP; // Up + else if ((GESTURES.Drag.angle > 150) && (GESTURES.Drag.angle < 210)) GESTURES.current = GESTURE_SWIPE_LEFT; // Left + else if ((GESTURES.Drag.angle >= 210) && (GESTURES.Drag.angle <= 330)) GESTURES.current = GESTURE_SWIPE_DOWN; // Down + else GESTURES.current = GESTURE_NONE; } else { - RL_GESTURES.Drag.distance = 0.0f; - RL_GESTURES.Drag.intensity = 0.0f; - RL_GESTURES.Drag.angle = 0.0f; + GESTURES.Drag.distance = 0.0f; + GESTURES.Drag.intensity = 0.0f; + GESTURES.Drag.angle = 0.0f; - RL_GESTURES.current = RL_GESTURE_NONE; + GESTURES.current = GESTURE_NONE; } - RL_GESTURES.Touch.downDragPosition = (RL_Vector2){ 0.0f, 0.0f }; - RL_GESTURES.Touch.pointCount = 0; + #if __cplusplus + GESTURES.Touch.downDragPosition = Vector2{ 0.0f, 0.0f }; + #else + GESTURES.Touch.downDragPosition = (Vector2){ 0.0f, 0.0f }; + #endif + GESTURES.Touch.pointCount = 0; } else if (event.touchAction == TOUCH_ACTION_MOVE) { - RL_GESTURES.Touch.moveDownPositionA = event.position[0]; + GESTURES.Touch.moveDownPositionA = event.position[0]; - if (RL_GESTURES.current == RL_GESTURE_HOLD) + if (GESTURES.current == GESTURE_HOLD) { - if (RL_GESTURES.Hold.resetRequired) RL_GESTURES.Touch.downPositionA = event.position[0]; + if (GESTURES.Hold.resetRequired) GESTURES.Touch.downPositionA = event.position[0]; - RL_GESTURES.Hold.resetRequired = false; + GESTURES.Hold.resetRequired = false; - // Detect RL_GESTURE_DRAG - if ((rgGetCurrentTime() - RL_GESTURES.Touch.eventTime) > RL_DRAG_TIMEOUT) + // Detect GESTURE_DRAG + if ((rg_get_current_time() - GESTURES.Touch.eventTime) > RL_DRAG_TIMEOUT) { - RL_GESTURES.Touch.eventTime = rgGetCurrentTime(); - RL_GESTURES.current = RL_GESTURE_DRAG; + GESTURES.Touch.eventTime = rg_get_current_time(); + GESTURES.current = GESTURE_DRAG; } } - RL_GESTURES.Drag.vector.x = RL_GESTURES.Touch.moveDownPositionA.x - RL_GESTURES.Touch.downDragPosition.x; - RL_GESTURES.Drag.vector.y = RL_GESTURES.Touch.moveDownPositionA.y - RL_GESTURES.Touch.downDragPosition.y; + GESTURES.Drag.vector.x = GESTURES.Touch.moveDownPositionA.x - GESTURES.Touch.downDragPosition.x; + GESTURES.Drag.vector.y = GESTURES.Touch.moveDownPositionA.y - GESTURES.Touch.downDragPosition.y; } } - else if (RL_GESTURES.Touch.pointCount == 2) // Two touch points + else if (GESTURES.Touch.pointCount == 2) // Two touch points { if (event.touchAction == TOUCH_ACTION_DOWN) { - RL_GESTURES.Touch.downPositionA = event.position[0]; - RL_GESTURES.Touch.downPositionB = event.position[1]; + GESTURES.Touch.downPositionA = event.position[0]; + GESTURES.Touch.downPositionB = event.position[1]; - RL_GESTURES.Touch.previousPositionA = RL_GESTURES.Touch.downPositionA; - RL_GESTURES.Touch.previousPositionB = RL_GESTURES.Touch.downPositionB; + GESTURES.Touch.previousPositionA = GESTURES.Touch.downPositionA; + GESTURES.Touch.previousPositionB = GESTURES.Touch.downPositionB; - //RL_GESTURES.Pinch.distance = rgVector2Distance(RL_GESTURES.Touch.downPositionA, RL_GESTURES.Touch.downPositionB); + //GESTURES.Pinch.distance = rg_vector2_distance(GESTURES.Touch.downPositionA, GESTURES.Touch.downPositionB); - RL_GESTURES.Pinch.vector.x = RL_GESTURES.Touch.downPositionB.x - RL_GESTURES.Touch.downPositionA.x; - RL_GESTURES.Pinch.vector.y = RL_GESTURES.Touch.downPositionB.y - RL_GESTURES.Touch.downPositionA.y; + GESTURES.Pinch.vector.x = GESTURES.Touch.downPositionB.x - GESTURES.Touch.downPositionA.x; + GESTURES.Pinch.vector.y = GESTURES.Touch.downPositionB.y - GESTURES.Touch.downPositionA.y; - RL_GESTURES.current = RL_GESTURE_HOLD; - RL_GESTURES.Hold.timeDuration = rgGetCurrentTime(); + GESTURES.current = GESTURE_HOLD; + GESTURES.Hold.timeDuration = rg_get_current_time(); } else if (event.touchAction == TOUCH_ACTION_MOVE) { - RL_GESTURES.Pinch.distance = rgVector2Distance(RL_GESTURES.Touch.moveDownPositionA, RL_GESTURES.Touch.moveDownPositionB); + GESTURES.Pinch.distance = rg_vector2_distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB); - RL_GESTURES.Touch.moveDownPositionA = event.position[0]; - RL_GESTURES.Touch.moveDownPositionB = event.position[1]; + GESTURES.Touch.moveDownPositionA = event.position[0]; + GESTURES.Touch.moveDownPositionB = event.position[1]; - RL_GESTURES.Pinch.vector.x = RL_GESTURES.Touch.moveDownPositionB.x - RL_GESTURES.Touch.moveDownPositionA.x; - RL_GESTURES.Pinch.vector.y = RL_GESTURES.Touch.moveDownPositionB.y - RL_GESTURES.Touch.moveDownPositionA.y; + GESTURES.Pinch.vector.x = GESTURES.Touch.moveDownPositionB.x - GESTURES.Touch.moveDownPositionA.x; + GESTURES.Pinch.vector.y = GESTURES.Touch.moveDownPositionB.y - GESTURES.Touch.moveDownPositionA.y; - if ((rgVector2Distance(RL_GESTURES.Touch.previousPositionA, RL_GESTURES.Touch.moveDownPositionA) >= RL_MINIMUM_PINCH) || (rgVector2Distance(RL_GESTURES.Touch.previousPositionB, RL_GESTURES.Touch.moveDownPositionB) >= RL_MINIMUM_PINCH)) + if ((rg_vector2_distance(GESTURES.Touch.previousPositionA, GESTURES.Touch.moveDownPositionA) >= RL_MINIMUM_PINCH) || (rg_vector2_distance(GESTURES.Touch.previousPositionB, GESTURES.Touch.moveDownPositionB) >= RL_MINIMUM_PINCH)) { - if ( rgVector2Distance(RL_GESTURES.Touch.previousPositionA, RL_GESTURES.Touch.previousPositionB) > rgVector2Distance(RL_GESTURES.Touch.moveDownPositionA, RL_GESTURES.Touch.moveDownPositionB) ) RL_GESTURES.current = RL_GESTURE_PINCH_IN; - else RL_GESTURES.current = RL_GESTURE_PINCH_OUT; + if ( rg_vector2_distance(GESTURES.Touch.previousPositionA, GESTURES.Touch.previousPositionB) > rg_vector2_distance(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB) ) GESTURES.current = GESTURE_PINCH_IN; + else GESTURES.current = GESTURE_PINCH_OUT; } else { - RL_GESTURES.current = RL_GESTURE_HOLD; - RL_GESTURES.Hold.timeDuration = rgGetCurrentTime(); + GESTURES.current = GESTURE_HOLD; + GESTURES.Hold.timeDuration = rg_get_current_time(); } // NOTE: Angle should be inverted in Y - RL_GESTURES.Pinch.angle = 360.0f - rgVector2Angle(RL_GESTURES.Touch.moveDownPositionA, RL_GESTURES.Touch.moveDownPositionB); + GESTURES.Pinch.angle = 360.0f - rg_vector2_angle(GESTURES.Touch.moveDownPositionA, GESTURES.Touch.moveDownPositionB); } else if (event.touchAction == TOUCH_ACTION_UP) { - RL_GESTURES.Pinch.distance = 0.0f; - RL_GESTURES.Pinch.angle = 0.0f; - RL_GESTURES.Pinch.vector = (RL_Vector2){ 0.0f, 0.0f }; - RL_GESTURES.Touch.pointCount = 0; + GESTURES.Pinch.distance = 0.0f; + GESTURES.Pinch.angle = 0.0f; + #if __cplusplus + GESTURES.Pinch.vector = Vector2{ 0.0f, 0.0f }; + #else + GESTURES.Pinch.vector = (Vector2){ 0.0f, 0.0f }; + #endif + GESTURES.Touch.pointCount = 0; - RL_GESTURES.current = RL_GESTURE_NONE; + GESTURES.current = GESTURE_NONE; } } - else if (RL_GESTURES.Touch.pointCount > 2) // More than two touch points + else if (GESTURES.Touch.pointCount > 2) // More than two touch points { // TODO: Process gesture events for more than two points } } // Update gestures detected (must be called every frame) -void RL_UpdateGestures(void) +void update_gestures(void) { // NOTE: Gestures are processed through system callbacks on touch events - // Detect RL_GESTURE_HOLD - if (((RL_GESTURES.current == RL_GESTURE_TAP) || (RL_GESTURES.current == RL_GESTURE_DOUBLETAP)) && (RL_GESTURES.Touch.pointCount < 2)) + // Detect GESTURE_HOLD + if (((GESTURES.current == GESTURE_TAP) || (GESTURES.current == GESTURE_DOUBLETAP)) && (GESTURES.Touch.pointCount < 2)) { - RL_GESTURES.current = RL_GESTURE_HOLD; - RL_GESTURES.Hold.timeDuration = rgGetCurrentTime(); + GESTURES.current = GESTURE_HOLD; + GESTURES.Hold.timeDuration = rg_get_current_time(); } - // Detect RL_GESTURE_NONE - if ((RL_GESTURES.current == RL_GESTURE_SWIPE_RIGHT) || (RL_GESTURES.current == RL_GESTURE_SWIPE_UP) || (RL_GESTURES.current == RL_GESTURE_SWIPE_LEFT) || (RL_GESTURES.current == RL_GESTURE_SWIPE_DOWN)) + // Detect GESTURE_NONE + if ((GESTURES.current == GESTURE_SWIPE_RIGHT) || (GESTURES.current == GESTURE_SWIPE_UP) || (GESTURES.current == GESTURE_SWIPE_LEFT) || (GESTURES.current == GESTURE_SWIPE_DOWN)) { - RL_GESTURES.current = RL_GESTURE_NONE; + GESTURES.current = GESTURE_NONE; } } // Get latest detected gesture -int RL_GetGestureDetected(void) +int get_gesture_detected(void) { // Get current gesture only if enabled - return (RL_GESTURES.enabledFlags & RL_GESTURES.current); + return (GESTURES.enabledFlags & GESTURES.current); } // Hold time measured in ms -float RL_GetGestureHoldDuration(void) +float get_gesture_hold_duration(void) { // NOTE: time is calculated on current gesture HOLD double time = 0.0; - if (RL_GESTURES.current == RL_GESTURE_HOLD) time = rgGetCurrentTime() - RL_GESTURES.Hold.timeDuration; + if (GESTURES.current == GESTURE_HOLD) time = rg_get_current_time() - GESTURES.Hold.timeDuration; return (float)time; } // Get drag vector (between initial touch point to current) -RL_Vector2 RL_GetGestureDragVector(void) +Vector2 get_gesture_drag_vector(void) { // NOTE: drag vector is calculated on one touch points TOUCH_ACTION_MOVE - return RL_GESTURES.Drag.vector; + return GESTURES.Drag.vector; } // Get drag angle // NOTE: Angle in degrees, horizontal-right is 0, counterclockwise -float RL_GetGestureDragAngle(void) +float get_gesture_drag_angle(void) { // NOTE: drag angle is calculated on one touch points TOUCH_ACTION_UP - return RL_GESTURES.Drag.angle; + return GESTURES.Drag.angle; } // Get distance between two pinch points -RL_Vector2 RL_GetGesturePinchVector(void) +Vector2 get_gesture_pinch_vector(void) { // NOTE: Pinch distance is calculated on two touch points TOUCH_ACTION_MOVE - return RL_GESTURES.Pinch.vector; + return GESTURES.Pinch.vector; } // Get angle between two pinch points // NOTE: Angle in degrees, horizontal-right is 0, counterclockwise -float RL_GetGesturePinchAngle(void) +float get_gesture_pinch_angle(void) { // NOTE: pinch angle is calculated on two touch points TOUCH_ACTION_MOVE - return RL_GESTURES.Pinch.angle; + return GESTURES.Pinch.angle; } //---------------------------------------------------------------------------------- // Module specific Functions Definition //---------------------------------------------------------------------------------- // Get angle from two-points vector with X-axis -static float rgVector2Angle(RL_Vector2 v1, RL_Vector2 v2) +static float rg_vector2_angle(Vector2 v1, Vector2 v2) { float angle = atan2f(v2.y - v1.y, v2.x - v1.x)*(180.0f/RL_PI); @@ -493,8 +515,8 @@ static float rgVector2Angle(RL_Vector2 v1, RL_Vector2 v2) return angle; } -// Calculate distance between two RL_Vector2 -static float rgVector2Distance(RL_Vector2 v1, RL_Vector2 v2) +// Calculate distance between two Vector2 +static float rg_vector2_distance(Vector2 v1, Vector2 v2) { float result; @@ -507,18 +529,18 @@ static float rgVector2Distance(RL_Vector2 v1, RL_Vector2 v2) } // Time measure returned are seconds -static double rgGetCurrentTime(void) +static double rg_get_current_time(void) { double time = 0; #if !defined(RGESTURES_STANDALONE) - time = RL_GetTime(); + time = get_time(); #else #if defined(_WIN32) unsigned long long int clockFrequency, currentTime; - RL_QueryPerformanceFrequency(&clockFrequency); // BE CAREFUL: Costly operation! - RL_QueryPerformanceCounter(¤tTime); + query_performance_frequency(&clockFrequency); // BE CAREFUL: Costly operation! + query_performance_counter(¤tTime); time = (double)currentTime/clockFrequency; // Time in seconds #endif @@ -552,4 +574,6 @@ static double rgGetCurrentTime(void) return time; } +RL_NS_END + #endif // RGESTURES_IMPLEMENTATION diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/rlgl.h b/project/auxillary/vis_ast/dependencies/raylib/include/rlgl.h index b68a608..193ba05 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/rlgl.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/rlgl.h @@ -1,24 +1,24 @@ /********************************************************************************************** * -* RLGL_gl 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 * * DESCRIPTION: * 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 (RLGL_Vertex, RLGL_Translate, RLGL_Rotate...) +* that provides a pseudo-OpenGL 1.1 immediate-mode style API (Vertex, Translate, Rotate...) * * ADDITIONAL NOTES: * When choosing an OpenGL backend different than OpenGL 1.1, some internal buffer are -* initialized on RLGL_Init() to accumulate vertex data. +* initialized on init() to accumulate vertex data. * * When an internal state change is required all the stored vertex data is renderer in batch, -* additionally, RLGL_DrawRenderBatchActive() could be called to force flushing of the batch. +* additionally, draw_render_batch_active() could be called to force flushing of the batch. * * Some resources are also loaded for convenience, here the complete list: -* - Default batch (RLGL_GLOBAL_DATA.defaultBatch): RenderBatch system to accumulate vertex data -* - Default texture (RLGL_GLOBAL_DATA.defaultTextureId): 1x1 white pixel R8G8B8A8 -* - Default shader (RLGL_GLOBAL_DATA.State.defaultShaderId, RLGL_GLOBAL_DATA.State.defaultShaderLocs) +* - Default batch (GLOBAL_DATA.defaultBatch): RenderBatch system to accumulate vertex data +* - Default texture (GLOBAL_DATA.defaultTextureId): 1x1 white pixel R8G8B8A8 +* - Default shader (GLOBAL_DATA.State.defaultShaderId, GLOBAL_DATA.State.defaultShaderLocs) * -* Internal buffer (and resources) must be manually unloaded calling RLGL_Close(). +* Internal buffer (and resources) must be manually unloaded calling close(). * * CONFIGURATION: * #define GRAPHICS_API_OPENGL_11 @@ -28,8 +28,8 @@ * #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_gl module, if OpenGL version is -* required by any other module, use RLGL_GetVersion() to check it +* Those preprocessor defines are only used on rlgl module, if OpenGL version is +* required by any other module, use get_version() to check it * * #define RLGL_IMPLEMENTATION * Generates the implementation of the library into the included file. @@ -46,7 +46,7 @@ * #define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT * Enable debug context (only available on OpenGL 4.3) * -* RLGL_gl capabilities could be customized just defining some internal +* rlgl capabilities could be customized just defining some internal * values before library inclusion (default values listed): * * #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 // Default internal render batch elements limits @@ -54,10 +54,10 @@ * #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_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal RL_Matrix stack +* #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack * #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported -* #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 +* #define CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance +* #define CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance * * When loading a shader, the following vertex attributes and uniform * location names are tried to be set automatically: @@ -126,6 +126,38 @@ #endif #endif +// Indicates of raylib has been refactored +#ifndef RL_REFACTORED_CPP +#define RL_REFACTORED_CPP +#endif + +#define RLGL_USE_CPP_NAMESPACE 1 +#define RLGL_USE_CPP_MANGLING 1 + +#if RLGL_USE_CPP_NAMESPACE && defined(__cplusplus) + #pragma message("USING CPP MANGLING") + #define RLGL_NS_BEGIN namespace rl { + #define RLGL_NS_END } +#else + #define RLGL_NS_BEGIN + #define RLGL_NS_END +#endif + +#if RLGL_USE_CPP_MANGLING && defined(__cplusplus) + #pragma message("USING CPP MANGALING") + #define RLGL_EXTERN_C_BEGIN + #define RLGL_EXTERN_C_END +#else + #ifdef __cplusplus + #define RLGL_EXTERN_C_BEGIN extern "C" { + #define RLGL_EXTERN_C_END } + #else + #define RLGL_EXTERN_C_BEGIN + #define RLGL_EXTERN_C_END + #endif +#endif + + // Support RL_TRACELOG macros #ifndef RL_TRACELOG #define RL_TRACELOG(level, ...) (void)0 @@ -220,9 +252,9 @@ #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) #endif -// Internal RL_Matrix stack +// Internal Matrix stack #ifndef RL_MAX_MATRIX_STACK_SIZE - #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of RL_Matrix stack + #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of Matrix stack #endif // Shader limits @@ -231,34 +263,34 @@ #endif // Projection matrix culling -#ifndef RL_CULL_DISTANCE_NEAR - #define RL_CULL_DISTANCE_NEAR 0.01 // Default near cull distance +#ifndef CULL_DISTANCE_NEAR + #define CULL_DISTANCE_NEAR 0.01 // Default near cull distance #endif -#ifndef RL_CULL_DISTANCE_FAR - #define RL_CULL_DISTANCE_FAR 1000.0 // Default far cull distance +#ifndef CULL_DISTANCE_FAR + #define CULL_DISTANCE_FAR 1000.0 // Default far cull distance #endif // Texture parameters (equivalent to OpenGL defines) -#define RL_TEXTURE_WRAP_S 0x2802 // GL_TEXTURE_WRAP_S -#define RL_TEXTURE_WRAP_T 0x2803 // GL_TEXTURE_WRAP_T -#define RL_TEXTURE_MAG_FILTER 0x2800 // GL_TEXTURE_MAG_FILTER -#define RL_TEXTURE_MIN_FILTER 0x2801 // GL_TEXTURE_MIN_FILTER +#define TEXTURE_WRAP_S 0x2802 // GL_TEXTURE_WRAP_S +#define TEXTURE_WRAP_T 0x2803 // GL_TEXTURE_WRAP_T +#define TEXTURE_MAG_FILTER 0x2800 // GL_TEXTURE_MAG_FILTER +#define TEXTURE_MIN_FILTER 0x2801 // GL_TEXTURE_MIN_FILTER -#define RL_TEXTURE_FILTER_NEAREST 0x2600 // GL_NEAREST -#define RL_TEXTURE_FILTER_LINEAR 0x2601 // GL_LINEAR -#define RL_TEXTURE_FILTER_MIP_NEAREST 0x2700 // GL_NEAREST_MIPMAP_NEAREST -#define RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR 0x2702 // GL_NEAREST_MIPMAP_LINEAR -#define RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST 0x2701 // GL_LINEAR_MIPMAP_NEAREST -#define RL_TEXTURE_FILTER_MIP_LINEAR 0x2703 // GL_LINEAR_MIPMAP_LINEAR -#define RL_TEXTURE_FILTER_ANISOTROPIC 0x3000 // Anisotropic filter (custom identifier) -#define RL_TEXTURE_MIPMAP_BIAS_RATIO 0x4000 // Texture mipmap bias, percentage ratio (custom identifier) +#define TEXTURE_FILTER_NEAREST 0x2600 // GL_NEAREST +#define TEXTURE_FILTER_LINEAR 0x2601 // GL_LINEAR +#define TEXTURE_FILTER_MIP_NEAREST 0x2700 // GL_NEAREST_MIPMAP_NEAREST +#define TEXTURE_FILTER_NEAREST_MIP_LINEAR 0x2702 // GL_NEAREST_MIPMAP_LINEAR +#define TEXTURE_FILTER_LINEAR_MIP_NEAREST 0x2701 // GL_LINEAR_MIPMAP_NEAREST +#define TEXTURE_FILTER_MIP_LINEAR 0x2703 // GL_LINEAR_MIPMAP_LINEAR +#define TEXTURE_FILTER_ANISOTROPIC 0x3000 // Anisotropic filter (custom identifier) +#define TEXTURE_MIPMAP_BIAS_RATIO 0x4000 // Texture mipmap bias, percentage ratio (custom identifier) -#define RL_TEXTURE_WRAP_REPEAT 0x2901 // GL_REPEAT -#define RL_TEXTURE_WRAP_CLAMP 0x812F // GL_CLAMP_TO_EDGE -#define RL_TEXTURE_WRAP_MIRROR_REPEAT 0x8370 // GL_MIRRORED_REPEAT -#define RL_TEXTURE_WRAP_MIRROR_CLAMP 0x8742 // GL_MIRROR_CLAMP_EXT +#define TEXTURE_WRAP_REPEAT 0x2901 // GL_REPEAT +#define TEXTURE_WRAP_CLAMP 0x812F // GL_CLAMP_TO_EDGE +#define TEXTURE_WRAP_MIRROR_REPEAT 0x8370 // GL_MIRRORED_REPEAT +#define TEXTURE_WRAP_MIRROR_CLAMP 0x8742 // GL_MIRROR_CLAMP_EXT -// RL_Matrix modes (equivalent to OpenGL) +// Matrix modes (equivalent to OpenGL) #define RL_MODELVIEW 0x1700 // GL_MODELVIEW #define RL_PROJECTION 0x1701 // GL_PROJECTION #define RL_TEXTURE 0x1702 // GL_TEXTURE @@ -311,14 +343,14 @@ #define RL_MAX 0x8008 // GL_MAX #define RL_FUNC_SUBTRACT 0x800A // GL_FUNC_SUBTRACT #define RL_FUNC_REVERSE_SUBTRACT 0x800B // GL_FUNC_REVERSE_SUBTRACT -#define RL_BLEND_EQUATION 0x8009 // GL_BLEND_EQUATION -#define RL_BLEND_EQUATION_RGB 0x8009 // GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION) -#define RL_BLEND_EQUATION_ALPHA 0x883D // GL_BLEND_EQUATION_ALPHA -#define RL_BLEND_DST_RGB 0x80C8 // GL_BLEND_DST_RGB -#define RL_BLEND_SRC_RGB 0x80C9 // GL_BLEND_SRC_RGB -#define RL_BLEND_DST_ALPHA 0x80CA // GL_BLEND_DST_ALPHA -#define RL_BLEND_SRC_ALPHA 0x80CB // GL_BLEND_SRC_ALPHA -#define RL_BLEND_COLOR 0x8005 // GL_BLEND_COLOR +#define BLEND_EQUATION 0x8009 // GL_BLEND_EQUATION +#define BLEND_EQUATION_RGB 0x8009 // GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION) +#define BLEND_EQUATION_ALPHA 0x883D // GL_BLEND_EQUATION_ALPHA +#define BLEND_DST_RGB 0x80C8 // GL_BLEND_DST_RGB +#define BLEND_SRC_RGB 0x80C9 // GL_BLEND_SRC_RGB +#define BLEND_DST_ALPHA 0x80CA // GL_BLEND_DST_ALPHA +#define BLEND_SRC_ALPHA 0x80CB // GL_BLEND_SRC_ALPHA +#define BLEND_COLOR 0x8005 // GL_BLEND_COLOR //---------------------------------------------------------------------------------- @@ -331,19 +363,21 @@ typedef enum bool { false = 0, true = !false } bool; #endif +RLGL_NS_BEGIN + #if !defined(RL_MATRIX_TYPE) -// RL_Matrix, 4x4 components, column major, OpenGL style, right handed -typedef struct RL_Matrix { - float m0, m4, m8, m12; // RL_Matrix first row (4 components) - float m1, m5, m9, m13; // RL_Matrix second row (4 components) - float m2, m6, m10, m14; // RL_Matrix third row (4 components) - float m3, m7, m11, m15; // RL_Matrix fourth row (4 components) -} RL_Matrix; +// Matrix, 4x4 components, column major, OpenGL style, right handed +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; #define RL_MATRIX_TYPE #endif // Dynamic vertex buffers (position + texcoords + colors + indices arrays) -typedef struct RLGL_VertexBuffer { +typedef struct vertex_buffer { int elementCount; // Number of elements in the buffer (QUADS) float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) @@ -357,234 +391,233 @@ typedef struct RLGL_VertexBuffer { #endif unsigned int vaoId; // OpenGL Vertex Array Object id unsigned int vboId[4]; // OpenGL Vertex Buffer Objects id (4 types of vertex data) -} RLGL_VertexBuffer; +} vertex_buffer; // 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) -typedef struct RLGL_DrawCall { +typedef struct draw_call { int mode; // Drawing mode: LINES, TRIANGLES, QUADS int vertexCount; // Number of vertex of the draw int vertexAlignment; // Number of vertex required for index alignment (LINES, TRIANGLES) - //unsigned int vaoId; // Vertex array id to be used on the draw -> Using RLGL_GLOBAL_DATA.currentBatch->vertexBuffer.vaoId - //unsigned int shaderId; // Shader id to be used on the draw -> Using RLGL_GLOBAL_DATA.currentShaderId + //unsigned int vaoId; // Vertex array id to be used on the draw -> Using GLOBAL_DATA.currentBatch->vertexBuffer.vaoId + //unsigned int shaderId; // Shader id to be used on the draw -> Using GLOBAL_DATA.currentShaderId unsigned int textureId; // Texture id to be used on the draw -> Use to create new draw call if changes - //RL_Matrix projection; // Projection matrix for this draw -> Using RLGL_GLOBAL_DATA.projection by default - //RL_Matrix modelview; // Modelview matrix for this draw -> Using RLGL_GLOBAL_DATA.modelview by default -} RLGL_DrawCall; + //Matrix projection; // Projection matrix for this draw -> Using GLOBAL_DATA.projection by default + //Matrix modelview; // Modelview matrix for this draw -> Using GLOBAL_DATA.modelview by default +} draw_call; -// RLGL_RenderBatch type -typedef struct RLGL_RenderBatch { +// render_batch type +typedef struct render_batch { int bufferCount; // Number of vertex buffers (multi-buffering support) int currentBuffer; // Current buffer tracking in case of multi-buffering - RLGL_VertexBuffer *vertexBuffer; // Dynamic buffer(s) for vertex data + vertex_buffer *vertexBuffer; // Dynamic buffer(s) for vertex data - RLGL_DrawCall *draws; // Draw calls array, depends on textureId + draw_call *draws; // Draw calls array, depends on textureId int drawCounter; // Draw calls counter float currentDepth; // Current depth value for next draw -} RLGL_RenderBatch; +} render_batch; // OpenGL version typedef enum { - RLGL_OPENGL_11 = 1, // OpenGL 1.1 - RLGL_OPENGL_21, // OpenGL 2.1 (GLSL 120) - RLGL_OPENGL_33, // OpenGL 3.3 (GLSL 330) - RLGL_OPENGL_43, // OpenGL 4.3 (using GLSL 330) - RLGL_OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100) - RLGL_OPENGL_ES_30 // OpenGL ES 3.0 (GLSL 300 es) -} RLGL_GlVersion; + RL_OPENGL_11 = 1, // OpenGL 1.1 + RL_OPENGL_21, // OpenGL 2.1 (GLSL 120) + RL_OPENGL_33, // OpenGL 3.3 (GLSL 330) + RL_OPENGL_43, // OpenGL 4.3 (using GLSL 330) + RL_OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100) + RL_OPENGL_ES_30 // OpenGL ES 3.0 (GLSL 300 es) +} gl_version; -#ifndef RAYLIB_H +// Will not define these if not built standalone OR RLAPI is defined which means this file was not refactored +#if !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) // Trace log level // NOTE: Organized by priority level typedef enum { - RL_LOG_ALL = 0, // Display all logs - RL_LOG_TRACE, // Trace logging, intended for internal use only - RL_LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds - RL_LOG_INFO, // Info logging, used for program execution info - RL_LOG_WARNING, // Warning logging, used on recoverable failures - RL_LOG_ERROR, // Error logging, used on unrecoverable failures - RL_LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) - RL_LOG_NONE // Disable logging -} RLGL_TraceLogLevel; + LOG_ALL = 0, // Display all logs + LOG_TRACE, // Trace logging, intended for internal use only + LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds + LOG_INFO, // Info logging, used for program execution info + LOG_WARNING, // Warning logging, used on recoverable failures + LOG_ERROR, // Error logging, used on unrecoverable failures + LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) + LOG_NONE // Disable logging +} trace_log_level; // Texture pixel formats // NOTE: Support depends on OpenGL version typedef enum { - RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) - RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) - RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) - RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp - RL_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) - RL_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) - RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) - RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) - RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp - RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp -} RLGL_PixelFormat; + PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} pixel_format; // Texture parameters: filter mode // NOTE 1: Filtering considers mipmaps if available in the texture // NOTE 2: Filter is accordingly set for minification and magnification typedef enum { - RL_TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation - RL_TEXTURE_FILTER_BILINEAR, // Linear filtering - RL_TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) - RL_TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x - RL_TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x - RL_TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x -} RLGL_TextureFilter; + TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation + TEXTURE_FILTER_BILINEAR, // Linear filtering + TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} texture_filter; // Shader location point type typedef enum { - RL_SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position - RL_SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 - RL_SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 - RL_SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal - RL_SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent - RL_SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color - RL_SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection - RL_SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) - RL_SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection - RL_SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) - RL_SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal - RL_SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view - RL_SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color - RL_SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color - RL_SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color - RL_SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: RL_SHADER_LOC_MAP_DIFFUSE) - RL_SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: RL_SHADER_LOC_MAP_SPECULAR) - RL_SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal - RL_SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness - RL_SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion - RL_SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission - RL_SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height - RL_SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap - RL_SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance - RL_SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter - RL_SHADER_LOC_MAP_BRDF // Shader location: sampler2d texture: brdf -} RLGL_ShaderLocationIndex; + SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position + SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 + SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 + SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal + SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent + SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color + SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection + SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) + SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection + SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) + SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal + SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view + SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color + SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color + SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color + SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE) + SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR) + SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal + SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness + SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion + SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission + SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height + SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap + SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance + SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter + SHADER_LOC_MAP_BRDF // Shader location: sampler2d texture: brdf +} shader_location_index; -#define RL_SHADER_LOC_MAP_DIFFUSE RL_SHADER_LOC_MAP_ALBEDO -#define RL_SHADER_LOC_MAP_SPECULAR RL_SHADER_LOC_MAP_METALNESS +#define SHADER_LOC_MAP_DIFFUSE RL_NS(SHADER_LOC_MAP_ALBEDO) +#define SHADER_LOC_MAP_SPECULAR RL_NS(SHADER_LOC_MAP_METALNESS) // Shader uniform data type typedef enum { - RL_SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float - RL_SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) - RL_SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) - RL_SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) - RL_SHADER_UNIFORM_INT, // Shader uniform type: int - RL_SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) - RL_SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) - RL_SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) - RL_SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d -} RLGL_ShaderUniformDataType; + SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float + SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) + SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) + SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) + SHADER_UNIFORM_INT, // Shader uniform type: int + SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) + SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) + SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) + SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d +} shader_uniform_data_type; // Shader attribute data types typedef enum { - RL_SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float - RL_SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) - RL_SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) - RL_SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) -} RLGL_ShaderAttributeDataType; + SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float + SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) + SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) + SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) +} shader_attribute_data_type; // Color blending modes (pre-defined) typedef enum { - RL_BLEND_ALPHA = 0, // Blend textures considering alpha (default) - RL_BLEND_ADDITIVE, // Blend textures adding colors - RL_BLEND_MULTIPLIED, // Blend textures multiplying colors - RL_BLEND_ADD_COLORS, // Blend textures adding colors (alternative) - RL_BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) - RL_BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha - RL_BLEND_CUSTOM, // Blend textures using custom src/dst factors (use RLGL_SetBlendFactors()) - RL_BLEND_CUSTOM_SEPARATE // Blend textures using custom src/dst factors (use RLGL_SetBlendFactorsSeparate()) -} RLGL_BlendMode; + BLEND_ALPHA = 0, // Blend textures considering alpha (default) + BLEND_ADDITIVE, // Blend textures adding colors + BLEND_MULTIPLIED, // Blend textures multiplying colors + BLEND_ADD_COLORS, // Blend textures adding colors (alternative) + BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) + BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha + BLEND_CUSTOM, // Blend textures using custom src/dst factors (use set_blend_factors()) + BLEND_CUSTOM_SEPARATE // Blend textures using custom src/dst factors (use set_blend_factors_separate()) +} blend_mode; #endif //ifndef RAYLIB_H // Framebuffer attachment type // NOTE: By default up to 8 color channels defined, but it can be more typedef enum { - RL_ATTACHMENT_COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0 - RL_ATTACHMENT_COLOR_CHANNEL1 = 1, // Framebuffer attachment type: color 1 - RL_ATTACHMENT_COLOR_CHANNEL2 = 2, // Framebuffer attachment type: color 2 - RL_ATTACHMENT_COLOR_CHANNEL3 = 3, // Framebuffer attachment type: color 3 - RL_ATTACHMENT_COLOR_CHANNEL4 = 4, // Framebuffer attachment type: color 4 - RL_ATTACHMENT_COLOR_CHANNEL5 = 5, // Framebuffer attachment type: color 5 - RL_ATTACHMENT_COLOR_CHANNEL6 = 6, // Framebuffer attachment type: color 6 - RL_ATTACHMENT_COLOR_CHANNEL7 = 7, // Framebuffer attachment type: color 7 - RL_ATTACHMENT_DEPTH = 100, // Framebuffer attachment type: depth - RL_ATTACHMENT_STENCIL = 200, // Framebuffer attachment type: stencil -} RLGL_FramebufferAttachType; + ATTACHMENT_COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0 + ATTACHMENT_COLOR_CHANNEL1 = 1, // Framebuffer attachment type: color 1 + ATTACHMENT_COLOR_CHANNEL2 = 2, // Framebuffer attachment type: color 2 + ATTACHMENT_COLOR_CHANNEL3 = 3, // Framebuffer attachment type: color 3 + ATTACHMENT_COLOR_CHANNEL4 = 4, // Framebuffer attachment type: color 4 + ATTACHMENT_COLOR_CHANNEL5 = 5, // Framebuffer attachment type: color 5 + ATTACHMENT_COLOR_CHANNEL6 = 6, // Framebuffer attachment type: color 6 + ATTACHMENT_COLOR_CHANNEL7 = 7, // Framebuffer attachment type: color 7 + ATTACHMENT_DEPTH = 100, // Framebuffer attachment type: depth + ATTACHMENT_STENCIL = 200, // Framebuffer attachment type: stencil +} framebuffer_attach_type; // Framebuffer texture attachment type typedef enum { - RL_ATTACHMENT_CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_X = 1, // Framebuffer texture attachment type: cubemap, -X side - RL_ATTACHMENT_CUBEMAP_POSITIVE_Y = 2, // Framebuffer texture attachment type: cubemap, +Y side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3, // Framebuffer texture attachment type: cubemap, -Y side - RL_ATTACHMENT_CUBEMAP_POSITIVE_Z = 4, // Framebuffer texture attachment type: cubemap, +Z side - RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5, // Framebuffer texture attachment type: cubemap, -Z side - RL_ATTACHMENT_TEXTURE2D = 100, // Framebuffer texture attachment type: texture2d - RL_ATTACHMENT_RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer -} RLGL_FramebufferAttachTextureType; + ATTACHMENT_CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side + ATTACHMENT_CUBEMAP_NEGATIVE_X = 1, // Framebuffer texture attachment type: cubemap, -X side + ATTACHMENT_CUBEMAP_POSITIVE_Y = 2, // Framebuffer texture attachment type: cubemap, +Y side + ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3, // Framebuffer texture attachment type: cubemap, -Y side + ATTACHMENT_CUBEMAP_POSITIVE_Z = 4, // Framebuffer texture attachment type: cubemap, +Z side + ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5, // Framebuffer texture attachment type: cubemap, -Z side + ATTACHMENT_TEXTURE2D = 100, // Framebuffer texture attachment type: texture2d + ATTACHMENT_RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer +} framebuffer_attach_texture_type; // Face culling mode typedef enum { - RL_CULL_FACE_FRONT = 0, - RL_CULL_FACE_BACK -} RLGL_CullMode; + CULL_FACE_FRONT = 0, + CULL_FACE_BACK +} cull_mode; //------------------------------------------------------------------------------------ -// Functions Declaration - RL_Matrix operations +// Functions Declaration - Matrix operations //------------------------------------------------------------------------------------ -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif +RLGL_EXTERN_C_BEGIN -RLAPI void RLGL_MatrixMode(int mode); // Choose the current matrix to be transformed -RLAPI void RLGL_PushMatrix(void); // Push the current matrix to stack -RLAPI void RLGL_PopMatrix(void); // Pop latest inserted matrix from stack -RLAPI void RLGL_LoadIdentity(void); // Reset current matrix to identity matrix -RLAPI void RLGL_Translatef(float x, float y, float z); // Multiply the current matrix by a translation matrix -RLAPI void RLGL_Rotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix -RLAPI void RLGL_Scalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix -RLAPI void RLGL_MultMatrixf(const float *matf); // Multiply the current matrix by another matrix -RLAPI void RLGL_Frustum(double left, double right, double bottom, double top, double znear, double zfar); -RLAPI void RLGL_Ortho(double left, double right, double bottom, double top, double znear, double zfar); -RLAPI void RLGL_Viewport(int x, int y, int width, int height); // Set the viewport area +RLAPI void matrix_mode(int mode); // Choose the current matrix to be transformed +RLAPI void push_matrix(void); // Push the current matrix to stack +RLAPI void pop_matrix(void); // Pop latest inserted matrix from stack +RLAPI void load_identity(void); // Reset current matrix to identity matrix +RLAPI void translatef(float x, float y, float z); // Multiply the current matrix by a translation matrix +RLAPI void rotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix +RLAPI void scalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix +RLAPI void mult_matrixf(const float *matf); // Multiply the current matrix by another matrix +RLAPI void frustum(double left, double right, double bottom, double top, double znear, double zfar); +RLAPI void ortho(double left, double right, double bottom, double top, double znear, double zfar); +RLAPI void viewport(int x, int y, int width, int height); // Set the viewport area //------------------------------------------------------------------------------------ // Functions Declaration - Vertex level operations //------------------------------------------------------------------------------------ -RLAPI void RLGL_Begin(int mode); // Initialize drawing mode (how to organize vertex) -RLAPI void RLGL_End(void); // Finish vertex providing -RLAPI void RLGL_Vertex2i(int x, int y); // Define one vertex (position) - 2 int -RLAPI void RLGL_Vertex2f(float x, float y); // Define one vertex (position) - 2 float -RLAPI void RLGL_Vertex3f(float x, float y, float z); // Define one vertex (position) - 3 float -RLAPI void RLGL_TexCoord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float -RLAPI void RLGL_Normal3f(float x, float y, float z); // Define one vertex (normal) - 3 float -RLAPI void RLGL_Color4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte -RLAPI void RLGL_Color3f(float x, float y, float z); // Define one vertex (color) - 3 float -RLAPI void RLGL_Color4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float +RLAPI void begin(int mode); // Initialize drawing mode (how to organize vertex) +RLAPI void end(void); // Finish vertex providing +RLAPI void vertex2i(int x, int y); // Define one vertex (position) - 2 int +RLAPI void vertex2f(float x, float y); // Define one vertex (position) - 2 float +RLAPI void vertex3f(float x, float y, float z); // Define one vertex (position) - 3 float +RLAPI void tex_coord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float +RLAPI void normal3f(float x, float y, float z); // Define one vertex (normal) - 3 float +RLAPI void color4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte +RLAPI void color3f(float x, float y, float z); // Define one vertex (color) - 3 float +RLAPI void color4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float //------------------------------------------------------------------------------------ // Functions Declaration - OpenGL style functions (common to 1.1, 3.3+, ES2) @@ -593,186 +626,186 @@ RLAPI void RLGL_Color4f(float x, float y, float z, float w); // Define one verte //------------------------------------------------------------------------------------ // Vertex buffers state -RLAPI bool RLGL_EnableVertexArray(unsigned int vaoId); // Enable vertex array (VAO, if supported) -RLAPI void RLGL_DisableVertexArray(void); // Disable vertex array (VAO, if supported) -RLAPI void RLGL_EnableVertexBuffer(unsigned int id); // Enable vertex buffer (VBO) -RLAPI void RLGL_DisableVertexBuffer(void); // Disable vertex buffer (VBO) -RLAPI void RLGL_EnableVertexBufferElement(unsigned int id);// Enable vertex buffer element (VBO element) -RLAPI void RLGL_DisableVertexBufferElement(void); // Disable vertex buffer element (VBO element) -RLAPI void RLGL_EnableVertexAttribute(unsigned int index); // Enable vertex attribute index -RLAPI void RLGL_DisableVertexAttribute(unsigned int index);// Disable vertex attribute index +RLAPI bool enable_vertex_array(unsigned int vaoId); // Enable vertex array (VAO, if supported) +RLAPI void disable_vertex_array(void); // Disable vertex array (VAO, if supported) +RLAPI void enable_vertex_buffer(unsigned int id); // Enable vertex buffer (VBO) +RLAPI void disable_vertex_buffer(void); // Disable vertex buffer (VBO) +RLAPI void enable_vertex_buffer_element(unsigned int id);// Enable vertex buffer element (VBO element) +RLAPI void disable_vertex_buffer_element(void); // Disable vertex buffer element (VBO element) +RLAPI void enable_vertex_attribute(unsigned int index); // Enable vertex attribute index +RLAPI void disable_vertex_attribute(unsigned int index);// Disable vertex attribute index #if defined(GRAPHICS_API_OPENGL_11) -RLAPI void RLGL_EnableStatePointer(int vertexAttribType, void *buffer); // Enable attribute state pointer -RLAPI void RLGL_DisableStatePointer(int vertexAttribType); // Disable attribute state pointer +RLAPI void enable_state_pointer(int vertexAttribType, void *buffer); // Enable attribute state pointer +RLAPI void disable_state_pointer(int vertexAttribType); // Disable attribute state pointer #endif // Textures state -RLAPI void RLGL_ActiveTextureSlot(int slot); // Select and active a texture slot -RLAPI void RLGL_EnableTexture(unsigned int id); // Enable texture -RLAPI void RLGL_DisableTexture(void); // Disable texture -RLAPI void RLGL_EnableTextureCubemap(unsigned int id); // Enable texture cubemap -RLAPI void RLGL_DisableTextureCubemap(void); // Disable texture cubemap -RLAPI void RLGL_TextureParameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap) -RLAPI void RLGL_CubemapParameters(unsigned int id, int param, int value); // Set cubemap parameters (filter, wrap) +RLAPI void active_texture_slot(int slot); // Select and active a texture slot +RLAPI void enable_texture(unsigned int id); // Enable texture +RLAPI void disable_texture(void); // Disable texture +RLAPI void enable_texture_cubemap(unsigned int id); // Enable texture cubemap +RLAPI void disable_texture_cubemap(void); // Disable texture cubemap +RLAPI void texture_parameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap) +RLAPI void cubemap_parameters(unsigned int id, int param, int value); // Set cubemap parameters (filter, wrap) // Shader state -RLAPI void RLGL_EnableShader(unsigned int id); // Enable shader program -RLAPI void RLGL_DisableShader(void); // Disable shader program +RLAPI void enable_shader(unsigned int id); // Enable shader program +RLAPI void disable_shader(void); // Disable shader program // Framebuffer state -RLAPI void RLGL_EnableFramebuffer(unsigned int id); // Enable render texture (fbo) -RLAPI void RLGL_DisableFramebuffer(void); // Disable render texture (fbo), return to default framebuffer -RLAPI void RLGL_ActiveDrawBuffers(int count); // Activate multiple draw color buffers -RLAPI void RLGL_BlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask); // Blit active framebuffer to main framebuffer +RLAPI void enable_framebuffer(unsigned int id); // Enable render texture (fbo) +RLAPI void disable_framebuffer(void); // Disable render texture (fbo), return to default framebuffer +RLAPI void active_draw_buffers(int count); // Activate multiple draw color buffers +RLAPI void blit_framebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask); // Blit active framebuffer to main framebuffer // General render state -RLAPI void RLGL_EnableColorBlend(void); // Enable color blending -RLAPI void RLGL_DisableColorBlend(void); // Disable color blending -RLAPI void RLGL_EnableDepthTest(void); // Enable depth test -RLAPI void RLGL_DisableDepthTest(void); // Disable depth test -RLAPI void RLGL_EnableDepthMask(void); // Enable depth write -RLAPI void RLGL_DisableDepthMask(void); // Disable depth write -RLAPI void RLGL_EnableBackfaceCulling(void); // Enable backface culling -RLAPI void RLGL_DisableBackfaceCulling(void); // Disable backface culling -RLAPI void RLGL_SetCullFace(int mode); // Set face culling mode -RLAPI void RLGL_EnableScissorTest(void); // Enable scissor test -RLAPI void RLGL_DisableScissorTest(void); // Disable scissor test -RLAPI void RLGL_Scissor(int x, int y, int width, int height); // Scissor test -RLAPI void RLGL_EnableWireMode(void); // Enable wire mode -RLAPI void RLGL_EnablePointMode(void); // Enable point mode -RLAPI void RLGL_DisableWireMode(void); // Disable wire mode ( and point ) maybe rename -RLAPI void RLGL_SetLineWidth(float width); // Set the line drawing width -RLAPI float RLGL_GetLineWidth(void); // Get the line drawing width -RLAPI void RLGL_EnableSmoothLines(void); // Enable line aliasing -RLAPI void RLGL_DisableSmoothLines(void); // Disable line aliasing -RLAPI void RLGL_EnableStereoRender(void); // Enable stereo rendering -RLAPI void RLGL_DisableStereoRender(void); // Disable stereo rendering -RLAPI bool RLGL_IsStereoRenderEnabled(void); // Check if stereo render is enabled +RLAPI void enable_color_blend(void); // Enable color blending +RLAPI void disable_color_blend(void); // Disable color blending +RLAPI void enable_depth_test(void); // Enable depth test +RLAPI void disable_depth_test(void); // Disable depth test +RLAPI void enable_depth_mask(void); // Enable depth write +RLAPI void disable_depth_mask(void); // Disable depth write +RLAPI void enable_backface_culling(void); // Enable backface culling +RLAPI void disable_backface_culling(void); // Disable backface culling +RLAPI void set_cull_face(int mode); // Set face culling mode +RLAPI void enable_scissor_test(void); // Enable scissor test +RLAPI void disable_scissor_test(void); // Disable scissor test +RLAPI void scissor(int x, int y, int width, int height); // Scissor test +RLAPI void enable_wire_mode(void); // Enable wire mode +RLAPI void enable_point_mode(void); // Enable point mode +RLAPI void disable_wire_mode(void); // Disable wire mode ( and point ) maybe rename +RLAPI void set_line_width(float width); // Set the line drawing width +RLAPI float get_line_width(void); // Get the line drawing width +RLAPI void enable_smooth_lines(void); // Enable line aliasing +RLAPI void disable_smooth_lines(void); // Disable line aliasing +RLAPI void enable_stereo_render(void); // Enable stereo rendering +RLAPI void disable_stereo_render(void); // Disable stereo rendering +RLAPI bool is_stereo_render_enabled(void); // Check if stereo render is enabled -RLAPI void RLGL_ClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Clear color buffer with color -RLAPI void RLGL_ClearScreenBuffers(void); // Clear used screen buffers (color and depth) -RLAPI void RLGL_CheckErrors(void); // Check and log OpenGL error codes -RLAPI void RLGL_SetBlendMode(int mode); // Set blending mode -RLAPI void RLGL_SetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation); // Set blending mode factor and equation (using OpenGL factors) -RLAPI void RLGL_SetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha); // Set blending mode factors and equations separately (using OpenGL factors) +RLAPI void clear_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Clear color buffer with color +RLAPI void clear_screen_buffers(void); // Clear used screen buffers (color and depth) +RLAPI void check_errors(void); // Check and log OpenGL error codes +RLAPI void set_blend_mode(int mode); // Set blending mode +RLAPI void set_blend_factors(int glSrcFactor, int glDstFactor, int glEquation); // Set blending mode factor and equation (using OpenGL factors) +RLAPI void set_blend_factors_separate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha); // Set blending mode factors and equations separately (using OpenGL factors) //------------------------------------------------------------------------------------ -// Functions Declaration - RLGL_gl functionality +// Functions Declaration - rlgl functionality //------------------------------------------------------------------------------------ -// RLGL_gl initialization functions -RLAPI void RLGL_Init(int width, int height); // Initialize RLGL_gl (buffers, shaders, textures, states) -RLAPI void RLGL_Close(void); // De-initialize RLGL_gl (buffers, shaders, textures) -RLAPI void RLGL_LoadExtensions(void *loader); // Load OpenGL extensions (loader function required) -RLAPI int RLGL_GetVersion(void); // Get current OpenGL version -RLAPI void RLGL_SetFramebufferWidth(int width); // Set current framebuffer width -RLAPI int RLGL_GetFramebufferWidth(void); // Get default framebuffer width -RLAPI void RLGL_SetFramebufferHeight(int height); // Set current framebuffer height -RLAPI int RLGL_GetFramebufferHeight(void); // Get default framebuffer height +// rlgl initialization functions +RLAPI void init(int width, int height); // Initialize rlgl (buffers, shaders, textures, states) +RLAPI void close(void); // De-initialize rlgl (buffers, shaders, textures) +RLAPI void load_extensions(void *loader); // Load OpenGL extensions (loader function required) +RLAPI int get_version(void); // Get current OpenGL version +RLAPI void set_framebuffer_width(int width); // Set current framebuffer width +RLAPI int get_framebuffer_width(void); // Get default framebuffer width +RLAPI void set_framebuffer_height(int height); // Set current framebuffer height +RLAPI int get_framebuffer_height(void); // Get default framebuffer height -RLAPI unsigned int RLGL_GetTextureIdDefault(void); // Get default texture id -RLAPI unsigned int RLGL_GetShaderIdDefault(void); // Get default shader id -RLAPI int *RLGL_GetShaderLocsDefault(void); // Get default shader locations +RLAPI unsigned int get_texture_id_default(void); // Get default texture id +RLAPI unsigned int get_shader_id_default(void); // Get default shader id +RLAPI int *get_shader_locs_default(void); // Get default shader locations // Render batch management -// NOTE: RLGL_gl provides a default render batch to behave like OpenGL 1.1 immediate mode +// 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 -RLAPI RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements); // Load a render batch system -RLAPI void RLGL_UnloadRenderBatch(RLGL_RenderBatch batch); // Unload render batch system -RLAPI void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch); // Draw render batch data (Update->Draw->Reset) -RLAPI void RLGL_SetRenderBatchActive(RLGL_RenderBatch *batch); // Set the active render batch for RLGL_gl (NULL for default internal) -RLAPI void RLGL_DrawRenderBatchActive(void); // Update and draw internal render batch -RLAPI bool RLGL_CheckRenderBatchLimit(int vCount); // Check internal buffer overflow for a given number of vertex +RLAPI render_batch load_render_batch(int numBuffers, int bufferElements); // Load a render batch system +RLAPI void unload_render_batch(render_batch batch); // Unload render batch system +RLAPI void draw_render_batch(render_batch *batch); // Draw render batch data (Update->Draw->Reset) +RLAPI void set_render_batch_active(render_batch *batch); // Set the active render batch for rlgl (NULL for default internal) +RLAPI void draw_render_batch_active(void); // Update and draw internal render batch +RLAPI bool check_render_batch_limit(int vCount); // Check internal buffer overflow for a given number of vertex -RLAPI void RLGL_SetTexture(unsigned int id); // Set current texture for render batch and check buffers limits +RLAPI void set_texture(unsigned int id); // Set current texture for render batch and check buffers limits //------------------------------------------------------------------------------------------------------------------------ // Vertex buffers management -RLAPI unsigned int RLGL_LoadVertexArray(void); // Load vertex array (vao) if supported -RLAPI unsigned int RLGL_LoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer attribute -RLAPI unsigned int RLGL_LoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load a new attributes element buffer -RLAPI void RLGL_UpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update GPU buffer with new data -RLAPI void RLGL_UpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements with new data -RLAPI void RLGL_UnloadVertexArray(unsigned int vaoId); -RLAPI void RLGL_UnloadVertexBuffer(unsigned int vboId); -RLAPI void RLGL_SetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer); -RLAPI void RLGL_SetVertexAttributeDivisor(unsigned int index, int divisor); -RLAPI void RLGL_SetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value -RLAPI void RLGL_DrawVertexArray(int offset, int count); -RLAPI void RLGL_DrawVertexArrayElements(int offset, int count, const void *buffer); -RLAPI void RLGL_DrawVertexArrayInstanced(int offset, int count, int instances); -RLAPI void RLGL_DrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances); +RLAPI unsigned int load_vertex_array(void); // Load vertex array (vao) if supported +RLAPI unsigned int load_vertex_buffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer attribute +RLAPI unsigned int load_vertex_buffer_element(const void *buffer, int size, bool dynamic); // Load a new attributes element buffer +RLAPI void update_vertex_buffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update GPU buffer with new data +RLAPI void update_vertex_buffer_elements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements with new data +RLAPI void unload_vertex_array(unsigned int vaoId); +RLAPI void unload_vertex_buffer(unsigned int vboId); +RLAPI void set_vertex_attribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer); +RLAPI void set_vertex_attribute_divisor(unsigned int index, int divisor); +RLAPI void set_vertex_attribute_default(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value +RLAPI void draw_vertex_array(int offset, int count); +RLAPI void draw_vertex_array_elements(int offset, int count, const void *buffer); +RLAPI void draw_vertex_array_instanced(int offset, int count, int instances); +RLAPI void draw_vertex_array_elements_instanced(int offset, int count, const void *buffer, int instances); // Textures management -RLAPI unsigned int RLGL_LoadTexture(const void *data, int width, int height, int format, int mipmapCount); // Load texture in GPU -RLAPI unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) -RLAPI unsigned int RLGL_LoadTextureCubemap(const void *data, int size, int format); // Load texture cubemap -RLAPI void RLGL_UpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update GPU texture with new data -RLAPI void RLGL_GetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats -RLAPI const char *RLGL_GetPixelFormatName(unsigned int format); // Get name string for pixel format -RLAPI void RLGL_UnloadTexture(unsigned int id); // Unload texture from GPU memory -RLAPI void RLGL_GenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps); // Generate mipmap data for selected texture -RLAPI void *RLGL_ReadTexturePixels(unsigned int id, int width, int height, int format); // Read texture pixel data -RLAPI unsigned char *RLGL_ReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) +RLAPI unsigned int load_texture(const void *data, int width, int height, int format, int mipmapCount); // Load texture in GPU +RLAPI unsigned int load_texture_depth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) +RLAPI unsigned int load_texture_cubemap(const void *data, int size, int format); // Load texture cubemap +RLAPI void update_texture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update GPU texture with new data +RLAPI void get_gl_texture_formats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats +RLAPI const char *get_pixel_format_name(unsigned int format); // Get name string for pixel format +RLAPI void unload_texture(unsigned int id); // Unload texture from GPU memory +RLAPI void gen_texture_mipmaps(unsigned int id, int width, int height, int format, int *mipmaps); // Generate mipmap data for selected texture +RLAPI void *read_texture_pixels(unsigned int id, int width, int height, int format); // Read texture pixel data +RLAPI unsigned char *read_screen_pixels(int width, int height); // Read screen pixel data (color buffer) // Framebuffer management (fbo) -RLAPI unsigned int RLGL_LoadFramebuffer(int width, int height); // Load an empty framebuffer -RLAPI void RLGL_FramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer -RLAPI bool RLGL_FramebufferComplete(unsigned int id); // Verify framebuffer is complete -RLAPI void RLGL_UnloadFramebuffer(unsigned int id); // Delete framebuffer from GPU +RLAPI unsigned int load_framebuffer(int width, int height); // Load an empty framebuffer +RLAPI void framebuffer_attach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer +RLAPI bool framebuffer_complete(unsigned int id); // Verify framebuffer is complete +RLAPI void unload_framebuffer(unsigned int id); // Delete framebuffer from GPU // Shaders management -RLAPI unsigned int RLGL_LoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings -RLAPI unsigned int RLGL_CompileShader(const char *shaderCode, int type); // Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) -RLAPI unsigned int RLGL_LoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId); // Load custom shader program -RLAPI void RLGL_UnloadShaderProgram(unsigned int id); // Unload shader program -RLAPI int RLGL_GetLocationUniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform -RLAPI int RLGL_GetLocationAttrib(unsigned int shaderId, const char *attribName); // Get shader location attribute -RLAPI void RLGL_SetUniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform -RLAPI void RLGL_SetUniformMatrix(int locIndex, RL_Matrix mat); // Set shader value matrix -RLAPI void RLGL_SetUniformSampler(int locIndex, unsigned int textureId); // Set shader value sampler -RLAPI void RLGL_SetShader(unsigned int id, int *locs); // Set shader currently active (id and locations) +RLAPI unsigned int load_shader_code(const char *vsCode, const char *fsCode); // Load shader from code strings +RLAPI unsigned int compile_shader(const char *shaderCode, int type); // Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) +RLAPI unsigned int load_shader_program(unsigned int vShaderId, unsigned int fShaderId); // Load custom shader program +RLAPI void unload_shader_program(unsigned int id); // Unload shader program +RLAPI int get_location_uniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform +RLAPI int get_location_attrib(unsigned int shaderId, const char *attribName); // Get shader location attribute +RLAPI void set_uniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform +RLAPI void set_uniform_matrix(int locIndex, Matrix mat); // Set shader value matrix +RLAPI void set_uniform_sampler(int locIndex, unsigned int textureId); // Set shader value sampler +RLAPI void set_shader(unsigned int id, int *locs); // Set shader currently active (id and locations) // Compute shader management -RLAPI unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId); // Load compute shader program -RLAPI void RLGL_ComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) +RLAPI unsigned int load_compute_shader_program(unsigned int shaderId); // Load compute shader program +RLAPI void compute_shader_dispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) // Shader buffer storage object management (ssbo) -RLAPI unsigned int RLGL_LoadShaderBuffer(unsigned int size, const void *data, int usageHint); // Load shader storage buffer object (SSBO) -RLAPI void RLGL_UnloadShaderBuffer(unsigned int ssboId); // Unload shader storage buffer object (SSBO) -RLAPI void RLGL_UpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset); // Update SSBO buffer data -RLAPI void RLGL_BindShaderBuffer(unsigned int id, unsigned int index); // Bind SSBO buffer -RLAPI void RLGL_ReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset); // Read SSBO buffer data (GPU->CPU) -RLAPI void RLGL_CopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count); // Copy SSBO data between buffers -RLAPI unsigned int RLGL_GetShaderBufferSize(unsigned int id); // Get SSBO buffer size +RLAPI unsigned int load_shader_buffer(unsigned int size, const void *data, int usageHint); // Load shader storage buffer object (SSBO) +RLAPI void unload_shader_buffer(unsigned int ssboId); // Unload shader storage buffer object (SSBO) +RLAPI void update_shader_buffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset); // Update SSBO buffer data +RLAPI void bind_shader_buffer(unsigned int id, unsigned int index); // Bind SSBO buffer +RLAPI void read_shader_buffer(unsigned int id, void *dest, unsigned int count, unsigned int offset); // Read SSBO buffer data (GPU->CPU) +RLAPI void copy_shader_buffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count); // Copy SSBO data between buffers +RLAPI unsigned int get_shader_buffer_size(unsigned int id); // Get SSBO buffer size // Buffer management -RLAPI void RLGL_BindImageTexture(unsigned int id, unsigned int index, int format, bool readonly); // Bind image texture +RLAPI void bind_image_texture(unsigned int id, unsigned int index, int format, bool readonly); // Bind image texture -// RL_Matrix state management -RLAPI RL_Matrix RLGL_GetMatrixModelview(void); // Get internal modelview matrix -RLAPI RL_Matrix RLGL_GetMatrixProjection(void); // Get internal projection matrix -RLAPI RL_Matrix RLGL_GetMatrixTransform(void); // Get internal accumulated transform matrix -RLAPI RL_Matrix RLGL_GetMatrixProjectionStereo(int eye); // Get internal projection matrix for stereo render (selected eye) -RLAPI RL_Matrix RLGL_GetMatrixViewOffsetStereo(int eye); // Get internal view offset matrix for stereo render (selected eye) -RLAPI void RLGL_SetMatrixProjection(RL_Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) -RLAPI void RLGL_SetMatrixModelview(RL_Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) -RLAPI void RLGL_SetMatrixProjectionStereo(RL_Matrix right, RL_Matrix left); // Set eyes projection matrices for stereo rendering -RLAPI void RLGL_SetMatrixViewOffsetStereo(RL_Matrix right, RL_Matrix left); // Set eyes view offsets matrices for stereo rendering +// Matrix state management +RLAPI Matrix get_matrix_modelview(void); // Get internal modelview matrix +RLAPI Matrix get_matrix_projection(void); // Get internal projection matrix +RLAPI Matrix get_matrix_transform(void); // Get internal accumulated transform matrix +RLAPI Matrix get_matrix_projection_stereo(int eye); // Get internal projection matrix for stereo render (selected eye) +RLAPI Matrix get_matrix_view_offset_stereo(int eye); // Get internal view offset matrix for stereo render (selected eye) +RLAPI void set_matrix_projection(Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) +RLAPI void set_matrix_modelview(Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) +RLAPI void set_matrix_projection_stereo(Matrix right, Matrix left); // Set eyes projection matrices for stereo rendering +RLAPI void set_matrix_view_offset_stereo(Matrix right, Matrix left); // Set eyes view offsets matrices for stereo rendering // Quick and dirty cube/quad buffers load->draw->unload -RLAPI void RLGL_LoadDrawCube(void); // Load and draw a cube -RLAPI void RLGL_LoadDrawQuad(void); // Load and draw a quad +RLAPI void load_draw_cube(void); // Load and draw a cube +RLAPI void load_draw_quad(void); // Load and draw a quad -#if defined(__cplusplus) -} -#endif +RLGL_EXTERN_C_END + +RLGL_NS_END #endif // RLGL_H /*********************************************************************************** * -* RLGL_GLOBAL_DATA IMPLEMENTATION +* GLOBAL_DATA IMPLEMENTATION * ************************************************************************************/ @@ -835,7 +868,7 @@ RLAPI void RLGL_LoadDrawQuad(void); // Load and draw a quad #endif #include // Required for: malloc(), free() -#include // Required for: strcmp(), strlen() [Used in RLGL_Init(), on extensions loading] +#include // Required for: strcmp(), strlen() [Used in init(), on extensions loading] #include // Required for: sqrtf(), sinf(), cosf(), floor(), log() //---------------------------------------------------------------------------------- @@ -963,13 +996,15 @@ RLAPI void RLGL_LoadDrawQuad(void); // Load and draw a quad #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2) #endif +RLGL_NS_BEGIN + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) -typedef struct RLGL_glData { - RLGL_RenderBatch *currentBatch; // Current render batch - RLGL_RenderBatch defaultBatch; // Default internal render batch +typedef struct glData { + render_batch *currentBatch; // Current render batch + render_batch defaultBatch; // Default internal render batch struct { int vertexCounter; // Current active render batch vertex counter (generic, used for all batches) @@ -978,13 +1013,13 @@ typedef struct RLGL_glData { unsigned char colorr, colorg, colorb, colora; // Current active color (added on glVertex*()) int currentMatrixMode; // Current matrix mode - RL_Matrix *currentMatrix; // Current matrix pointer - RL_Matrix modelview; // Default modelview matrix - RL_Matrix projection; // Default projection matrix - RL_Matrix transform; // Transform matrix to be used with RLGL_Translate, RLGL_Rotate, RLGL_Scale + Matrix *currentMatrix; // Current matrix pointer + Matrix modelview; // Default modelview matrix + Matrix projection; // Default projection matrix + Matrix transform; // Transform matrix to be used with Translate, Rotate, Scale bool transformRequired; // Require transform matrix application to current draw-call vertex (if required) - RL_Matrix stack[RL_MAX_MATRIX_STACK_SIZE];// RL_Matrix stack for push/pop - int stackCounter; // RL_Matrix stack counter + Matrix stack[RL_MAX_MATRIX_STACK_SIZE];// Matrix stack for push/pop + int stackCounter; // Matrix stack counter unsigned int defaultTextureId; // Default texture used on shapes/poly drawing (required by shader) unsigned int activeTextureId[RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS]; // Active texture ids to be enabled on batch drawing (0 active by default) @@ -996,8 +1031,8 @@ typedef struct RLGL_glData { int *currentShaderLocs; // Current shader locations pointer to be used on rendering (by default, defaultShaderLocs) bool stereoRender; // Stereo rendering flag - RL_Matrix projectionStereo[2]; // VR stereo rendering eyes projection matrices - RL_Matrix viewOffsetStereo[2]; // VR stereo rendering eyes view offset matrices + Matrix projectionStereo[2]; // VR stereo rendering eyes projection matrices + Matrix viewOffsetStereo[2]; // VR stereo rendering eyes view offset matrices // Blending variables int currentBlendMode; // Blending mode active @@ -1038,9 +1073,9 @@ typedef struct RLGL_glData { int maxDepthBits; // Maximum bits for depth component } ExtSupported; // Extensions supported flags -} RLGL_glData; +} glData; -typedef void *(*RLGL_glLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc) +typedef void *(*glLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc) #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 @@ -1048,7 +1083,7 @@ typedef void *(*RLGL_glLoadProc)(const char *name); // OpenGL extension functi // Global Variables Definition //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) -static RLGL_glData RLGL_GLOBAL_DATA = { 0 }; +static glData GLOBAL_DATA = { 0 }; #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 #if defined(GRAPHICS_API_OPENGL_ES2) && !defined(GRAPHICS_API_OPENGL_ES3) @@ -1063,31 +1098,35 @@ static PFNGLDRAWELEMENTSINSTANCEDEXTPROC glDrawElementsInstanced = NULL; static PFNGLVERTEXATTRIBDIVISOREXTPROC glVertexAttribDivisor = NULL; #endif +RLGL_EXTERN_C_BEGIN + //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) -static void RLGL_LoadShaderDefault(void); // Load default shader -static void RLGL_UnloadShaderDefault(void); // Unload default shader +static void load_shader_default(void); // Load default shader +static void unload_shader_default(void); // Unload default shader #if defined(RLGL_SHOW_GL_DETAILS_INFO) -static const char *RLGL_GetCompressedFormatName(int format); // Get compressed format official GL identifier name +static const char *GetCompressedFormatName(int format); // Get compressed format official GL identifier name #endif // RLGL_SHOW_GL_DETAILS_INFO #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 -static int RLGL_GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes (image or texture) +static int internal_get_pixel_data_size(int width, int height, int format); // Get pixel data size in bytes (image or texture) +#if !defined(RAYMATH_H) // Auxiliar matrix math functions -static RL_Matrix RLGL_MatrixIdentity(void); // Get identity matrix -static RL_Matrix RLGL_MatrixMultiply(RL_Matrix left, RL_Matrix right); // Multiply two matrices +static Matrix internal_matrix_identity(void); // Get identity matrix +static Matrix internal_matrix_multiply(Matrix left, Matrix right); // Multiply two matrices +#endif //---------------------------------------------------------------------------------- -// Module Functions Definition - RL_Matrix operations +// Module Functions Definition - Matrix operations //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_11) // Fallback to OpenGL 1.1 function calls //--------------------------------------- -void RLGL_MatrixMode(int mode) +void matrix_mode(int mode) { switch (mode) { @@ -1098,77 +1137,77 @@ void RLGL_MatrixMode(int mode) } } -void RLGL_Frustum(double left, double right, double bottom, double top, double znear, double zfar) +void frustum(double left, double right, double bottom, double top, double znear, double zfar) { glFrustum(left, right, bottom, top, znear, zfar); } -void RLGL_Ortho(double left, double right, double bottom, double top, double znear, double zfar) +void ortho(double left, double right, double bottom, double top, double znear, double zfar) { glOrtho(left, right, bottom, top, znear, zfar); } -void RLGL_PushMatrix(void) { glPushMatrix(); } -void RLGL_PopMatrix(void) { glPopMatrix(); } -void RLGL_LoadIdentity(void) { glLoadIdentity(); } -void RLGL_Translatef(float x, float y, float z) { glTranslatef(x, y, z); } -void RLGL_Rotatef(float angle, float x, float y, float z) { glRotatef(angle, x, y, z); } -void RLGL_Scalef(float x, float y, float z) { glScalef(x, y, z); } -void RLGL_MultMatrixf(const float *matf) { glMultMatrixf(matf); } +void push_matrix(void) { glPushMatrix(); } +void pop_matrix(void) { glPopMatrix(); } +void load_identity(void) { glLoadIdentity(); } +void translatef(float x, float y, float z) { glTranslatef(x, y, z); } +void rotatef(float angle, float x, float y, float z) { glRotatef(angle, x, y, z); } +void scalef(float x, float y, float z) { glScalef(x, y, z); } +void mult_matrixf(const float *matf) { glMultMatrixf(matf); } #endif #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Choose the current matrix to be transformed -void RLGL_MatrixMode(int mode) +void matrix_mode(int mode) { - if (mode == RL_PROJECTION) RLGL_GLOBAL_DATA.State.currentMatrix = &RLGL_GLOBAL_DATA.State.projection; - else if (mode == RL_MODELVIEW) RLGL_GLOBAL_DATA.State.currentMatrix = &RLGL_GLOBAL_DATA.State.modelview; + if (mode == RL_PROJECTION) GLOBAL_DATA.State.currentMatrix = &GLOBAL_DATA.State.projection; + else if (mode == RL_MODELVIEW) GLOBAL_DATA.State.currentMatrix = &GLOBAL_DATA.State.modelview; //else if (mode == RL_TEXTURE) // Not supported - RLGL_GLOBAL_DATA.State.currentMatrixMode = mode; + GLOBAL_DATA.State.currentMatrixMode = mode; } -// Push the current matrix into RLGL_GLOBAL_DATA.State.stack -void RLGL_PushMatrix(void) +// Push the current matrix into GLOBAL_DATA.State.stack +void push_matrix(void) { - if (RLGL_GLOBAL_DATA.State.stackCounter >= RL_MAX_MATRIX_STACK_SIZE) RL_TRACELOG(RL_LOG_ERROR, "RLGL_GLOBAL_DATA: RL_Matrix stack overflow (RL_MAX_MATRIX_STACK_SIZE)"); + if (GLOBAL_DATA.State.stackCounter >= RL_MAX_MATRIX_STACK_SIZE) RL_TRACELOG(LOG_ERROR, "GLOBAL_DATA: Matrix stack overflow (RL_MAX_MATRIX_STACK_SIZE)"); - if (RLGL_GLOBAL_DATA.State.currentMatrixMode == RL_MODELVIEW) + if (GLOBAL_DATA.State.currentMatrixMode == RL_MODELVIEW) { - RLGL_GLOBAL_DATA.State.transformRequired = true; - RLGL_GLOBAL_DATA.State.currentMatrix = &RLGL_GLOBAL_DATA.State.transform; + GLOBAL_DATA.State.transformRequired = true; + GLOBAL_DATA.State.currentMatrix = &GLOBAL_DATA.State.transform; } - RLGL_GLOBAL_DATA.State.stack[RLGL_GLOBAL_DATA.State.stackCounter] = *RLGL_GLOBAL_DATA.State.currentMatrix; - RLGL_GLOBAL_DATA.State.stackCounter++; + GLOBAL_DATA.State.stack[GLOBAL_DATA.State.stackCounter] = *GLOBAL_DATA.State.currentMatrix; + GLOBAL_DATA.State.stackCounter++; } -// Pop lattest inserted matrix from RLGL_GLOBAL_DATA.State.stack -void RLGL_PopMatrix(void) +// Pop lattest inserted matrix from GLOBAL_DATA.State.stack +void pop_matrix(void) { - if (RLGL_GLOBAL_DATA.State.stackCounter > 0) + if (GLOBAL_DATA.State.stackCounter > 0) { - RL_Matrix mat = RLGL_GLOBAL_DATA.State.stack[RLGL_GLOBAL_DATA.State.stackCounter - 1]; - *RLGL_GLOBAL_DATA.State.currentMatrix = mat; - RLGL_GLOBAL_DATA.State.stackCounter--; + Matrix mat = GLOBAL_DATA.State.stack[GLOBAL_DATA.State.stackCounter - 1]; + *GLOBAL_DATA.State.currentMatrix = mat; + GLOBAL_DATA.State.stackCounter--; } - if ((RLGL_GLOBAL_DATA.State.stackCounter == 0) && (RLGL_GLOBAL_DATA.State.currentMatrixMode == RL_MODELVIEW)) + if ((GLOBAL_DATA.State.stackCounter == 0) && (GLOBAL_DATA.State.currentMatrixMode == RL_MODELVIEW)) { - RLGL_GLOBAL_DATA.State.currentMatrix = &RLGL_GLOBAL_DATA.State.modelview; - RLGL_GLOBAL_DATA.State.transformRequired = false; + GLOBAL_DATA.State.currentMatrix = &GLOBAL_DATA.State.modelview; + GLOBAL_DATA.State.transformRequired = false; } } // Reset current matrix to identity matrix -void RLGL_LoadIdentity(void) +void load_identity(void) { - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixIdentity(); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_identity(); } // Multiply the current matrix by a translation matrix -void RLGL_Translatef(float x, float y, float z) +void translatef(float x, float y, float z) { - RL_Matrix matTranslation = { + Matrix matTranslation = { 1.0f, 0.0f, 0.0f, x, 0.0f, 1.0f, 0.0f, y, 0.0f, 0.0f, 1.0f, z, @@ -1176,14 +1215,14 @@ void RLGL_Translatef(float x, float y, float z) }; // NOTE: We transpose matrix with multiplication order - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(matTranslation, *RLGL_GLOBAL_DATA.State.currentMatrix); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(matTranslation, *GLOBAL_DATA.State.currentMatrix); } // Multiply the current matrix by a rotation matrix // NOTE: The provided angle must be in degrees -void RLGL_Rotatef(float angle, float x, float y, float z) +void rotatef(float angle, float x, float y, float z) { - RL_Matrix matRotation = RLGL_MatrixIdentity(); + Matrix matRotation = internal_matrix_identity(); // Axis vector (x, y, z) normalization float lengthSquared = x*x + y*y + z*z; @@ -1221,13 +1260,13 @@ void RLGL_Rotatef(float angle, float x, float y, float z) matRotation.m15 = 1.0f; // NOTE: We transpose matrix with multiplication order - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(matRotation, *RLGL_GLOBAL_DATA.State.currentMatrix); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(matRotation, *GLOBAL_DATA.State.currentMatrix); } // Multiply the current matrix by a scaling matrix -void RLGL_Scalef(float x, float y, float z) +void scalef(float x, float y, float z) { - RL_Matrix matScale = { + Matrix matScale = { x, 0.0f, 0.0f, 0.0f, 0.0f, y, 0.0f, 0.0f, 0.0f, 0.0f, z, 0.0f, @@ -1235,31 +1274,31 @@ void RLGL_Scalef(float x, float y, float z) }; // NOTE: We transpose matrix with multiplication order - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(matScale, *RLGL_GLOBAL_DATA.State.currentMatrix); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(matScale, *GLOBAL_DATA.State.currentMatrix); } // Multiply the current matrix by another matrix -void RLGL_MultMatrixf(const float *matf) +void mult_matrixf(const float *matf) { - // RL_Matrix creation from array - RL_Matrix mat = { matf[0], matf[4], matf[8], matf[12], + // Matrix creation from array + Matrix mat = { matf[0], matf[4], matf[8], matf[12], matf[1], matf[5], matf[9], matf[13], matf[2], matf[6], matf[10], matf[14], matf[3], matf[7], matf[11], matf[15] }; - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(*RLGL_GLOBAL_DATA.State.currentMatrix, mat); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(*GLOBAL_DATA.State.currentMatrix, mat); } // Multiply the current matrix by a perspective matrix generated by parameters -void RLGL_Frustum(double left, double right, double bottom, double top, double znear, double zfar) +void frustum(double left, double right, double bottom, double top, double znear, double zfar) { - RL_Matrix matFrustum = { 0 }; + Matrix matFrustum = { 0 }; - float RLGL_ = (float)(right - left); + float rl = (float)(right - left); float tb = (float)(top - bottom); float fn = (float)(zfar - znear); - matFrustum.m0 = ((float) znear*2.0f)/RLGL_; + matFrustum.m0 = ((float) znear*2.0f)/rl; matFrustum.m1 = 0.0f; matFrustum.m2 = 0.0f; matFrustum.m3 = 0.0f; @@ -1269,7 +1308,7 @@ void RLGL_Frustum(double left, double right, double bottom, double top, double z matFrustum.m6 = 0.0f; matFrustum.m7 = 0.0f; - matFrustum.m8 = ((float)right + (float)left)/RLGL_; + matFrustum.m8 = ((float)right + (float)left)/rl; matFrustum.m9 = ((float)top + (float)bottom)/tb; matFrustum.m10 = -((float)zfar + (float)znear)/fn; matFrustum.m11 = -1.0f; @@ -1279,21 +1318,21 @@ void RLGL_Frustum(double left, double right, double bottom, double top, double z matFrustum.m14 = -((float)zfar*(float)znear*2.0f)/fn; matFrustum.m15 = 0.0f; - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(*RLGL_GLOBAL_DATA.State.currentMatrix, matFrustum); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(*GLOBAL_DATA.State.currentMatrix, matFrustum); } // Multiply the current matrix by an orthographic matrix generated by parameters -void RLGL_Ortho(double left, double right, double bottom, double top, double znear, double zfar) +void ortho(double left, double right, double bottom, double top, double znear, double zfar) { // NOTE: If left-right and top-botton values are equal it could create a division by zero, // response to it is platform/compiler dependant - RL_Matrix matOrtho = { 0 }; + Matrix matOrtho = { 0 }; - float RLGL_ = (float)(right - left); + float rl = (float)(right - left); float tb = (float)(top - bottom); float fn = (float)(zfar - znear); - matOrtho.m0 = 2.0f/RLGL_; + matOrtho.m0 = 2.0f/rl; matOrtho.m1 = 0.0f; matOrtho.m2 = 0.0f; matOrtho.m3 = 0.0f; @@ -1305,18 +1344,18 @@ void RLGL_Ortho(double left, double right, double bottom, double top, double zne matOrtho.m9 = 0.0f; matOrtho.m10 = -2.0f/fn; matOrtho.m11 = 0.0f; - matOrtho.m12 = -((float)left + (float)right)/RLGL_; + matOrtho.m12 = -((float)left + (float)right)/rl; matOrtho.m13 = -((float)top + (float)bottom)/tb; matOrtho.m14 = -((float)zfar + (float)znear)/fn; matOrtho.m15 = 1.0f; - *RLGL_GLOBAL_DATA.State.currentMatrix = RLGL_MatrixMultiply(*RLGL_GLOBAL_DATA.State.currentMatrix, matOrtho); + *GLOBAL_DATA.State.currentMatrix = internal_matrix_multiply(*GLOBAL_DATA.State.currentMatrix, matOrtho); } #endif // Set the viewport area (transformation from normalized device coordinates to window coordinates) // NOTE: We store current viewport dimensions -void RLGL_Viewport(int x, int y, int width, int height) +void viewport(int x, int y, int width, int height) { glViewport(x, y, width, height); } @@ -1327,7 +1366,7 @@ void RLGL_Viewport(int x, int y, int width, int height) #if defined(GRAPHICS_API_OPENGL_11) // Fallback to OpenGL 1.1 function calls //--------------------------------------- -void RLGL_Begin(int mode) +void begin(int mode) { switch (mode) { @@ -1338,169 +1377,169 @@ void RLGL_Begin(int mode) } } -void RLGL_End() { glEnd(); } -void RLGL_Vertex2i(int x, int y) { glVertex2i(x, y); } -void RLGL_Vertex2f(float x, float y) { glVertex2f(x, y); } -void RLGL_Vertex3f(float x, float y, float z) { glVertex3f(x, y, z); } -void RLGL_TexCoord2f(float x, float y) { glTexCoord2f(x, y); } -void RLGL_Normal3f(float x, float y, float z) { glNormal3f(x, y, z); } -void RLGL_Color4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { glColor4ub(r, g, b, a); } -void RLGL_Color3f(float x, float y, float z) { glColor3f(x, y, z); } -void RLGL_Color4f(float x, float y, float z, float w) { glColor4f(x, y, z, w); } +void end() { glEnd(); } +void vertex2i(int x, int y) { glVertex2i(x, y); } +void vertex2f(float x, float y) { glVertex2f(x, y); } +void vertex3f(float x, float y, float z) { glVertex3f(x, y, z); } +void tex_coord2f(float x, float y) { glTexCoord2f(x, y); } +void normal3f(float x, float y, float z) { glNormal3f(x, y, z); } +void color4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { glColor4ub(r, g, b, a); } +void color3f(float x, float y, float z) { glColor3f(x, y, z); } +void color4f(float x, float y, float z, float w) { glColor4f(x, y, z, w); } #endif #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Initialize drawing mode (how to organize vertex) -void RLGL_Begin(int mode) +void begin(int mode) { // Draw mode can be RL_LINES, RL_TRIANGLES and RL_QUADS // NOTE: In all three cases, vertex are accumulated over default internal vertex buffer - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode != mode) + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode != mode) { - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount > 0) + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount > 0) { - // Make sure current RLGL_GLOBAL_DATA.currentBatch->draws[i].vertexCount is aligned a multiple of 4, + // Make sure current GLOBAL_DATA.currentBatch->draws[i].vertexCount is aligned a multiple of 4, // that way, following QUADS drawing will keep aligned with index processing // It implies adding some extra alignment vertex at the end of the draw, // those vertex are not processed but they are considered as an additional offset // for the next set of vertex to be drawn - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount : RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4); - else if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4))); - else RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = 0; + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount : GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4); + else if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4))); + else GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = 0; - if (!RLGL_CheckRenderBatchLimit(RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment)) + if (!check_render_batch_limit(GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment)) { - RLGL_GLOBAL_DATA.State.vertexCounter += RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment; - RLGL_GLOBAL_DATA.currentBatch->drawCounter++; + GLOBAL_DATA.State.vertexCounter += GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment; + GLOBAL_DATA.currentBatch->drawCounter++; } } - if (RLGL_GLOBAL_DATA.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); + if (GLOBAL_DATA.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) draw_render_batch(GLOBAL_DATA.currentBatch); - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode = mode; - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount = 0; - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = RLGL_GLOBAL_DATA.State.defaultTextureId; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode = mode; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount = 0; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = GLOBAL_DATA.State.defaultTextureId; } } // Finish vertex providing -void RLGL_End(void) +void end(void) { - // NOTE: Depth increment is dependant on RLGL_Ortho(): z-near and z-far values, + // NOTE: Depth increment is dependant on ortho(): z-near and z-far values, // as well as depth buffer bit-depth (16bit or 24bit or 32bit) // Correct increment formula would be: depthInc = (zfar - znear)/pow(2, bits) - RLGL_GLOBAL_DATA.currentBatch->currentDepth += (1.0f/20000.0f); + GLOBAL_DATA.currentBatch->currentDepth += (1.0f/20000.0f); } // Define one vertex (position) // NOTE: Vertex position data is the basic information required for drawing -void RLGL_Vertex3f(float x, float y, float z) +void vertex3f(float x, float y, float z) { float tx = x; float ty = y; float tz = z; // Transform provided vector if required - if (RLGL_GLOBAL_DATA.State.transformRequired) + if (GLOBAL_DATA.State.transformRequired) { - tx = RLGL_GLOBAL_DATA.State.transform.m0*x + RLGL_GLOBAL_DATA.State.transform.m4*y + RLGL_GLOBAL_DATA.State.transform.m8*z + RLGL_GLOBAL_DATA.State.transform.m12; - ty = RLGL_GLOBAL_DATA.State.transform.m1*x + RLGL_GLOBAL_DATA.State.transform.m5*y + RLGL_GLOBAL_DATA.State.transform.m9*z + RLGL_GLOBAL_DATA.State.transform.m13; - tz = RLGL_GLOBAL_DATA.State.transform.m2*x + RLGL_GLOBAL_DATA.State.transform.m6*y + RLGL_GLOBAL_DATA.State.transform.m10*z + RLGL_GLOBAL_DATA.State.transform.m14; + tx = GLOBAL_DATA.State.transform.m0*x + GLOBAL_DATA.State.transform.m4*y + GLOBAL_DATA.State.transform.m8*z + GLOBAL_DATA.State.transform.m12; + ty = GLOBAL_DATA.State.transform.m1*x + GLOBAL_DATA.State.transform.m5*y + GLOBAL_DATA.State.transform.m9*z + GLOBAL_DATA.State.transform.m13; + tz = GLOBAL_DATA.State.transform.m2*x + GLOBAL_DATA.State.transform.m6*y + GLOBAL_DATA.State.transform.m10*z + GLOBAL_DATA.State.transform.m14; } // WARNING: We can't break primitives when launching a new batch. // RL_LINES comes in pairs, RL_TRIANGLES come in groups of 3 vertices and RL_QUADS come in groups of 4 vertices. // We must check current draw.mode when a new vertex is required and finish the batch only if the draw.mode draw.vertexCount is %2, %3 or %4 - if (RLGL_GLOBAL_DATA.State.vertexCounter > (RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4 - 4)) + if (GLOBAL_DATA.State.vertexCounter > (GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4 - 4)) { - if ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) && - (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%2 == 0)) + if ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) && + (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%2 == 0)) { // Reached the maximum number of vertices for RL_LINES drawing // Launch a draw call but keep current state for next vertices comming // NOTE: We add +1 vertex to the check for security - RLGL_CheckRenderBatchLimit(2 + 1); + check_render_batch_limit(2 + 1); } - else if ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) && - (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%3 == 0)) + else if ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) && + (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%3 == 0)) { - RLGL_CheckRenderBatchLimit(3 + 1); + check_render_batch_limit(3 + 1); } - else if ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_QUADS) && - (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4 == 0)) + else if ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_QUADS) && + (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4 == 0)) { - RLGL_CheckRenderBatchLimit(4 + 1); + check_render_batch_limit(4 + 1); } } // Add vertices - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*RLGL_GLOBAL_DATA.State.vertexCounter] = tx; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*RLGL_GLOBAL_DATA.State.vertexCounter + 1] = ty; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*RLGL_GLOBAL_DATA.State.vertexCounter + 2] = tz; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*GLOBAL_DATA.State.vertexCounter] = tx; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*GLOBAL_DATA.State.vertexCounter + 1] = ty; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].vertices[3*GLOBAL_DATA.State.vertexCounter + 2] = tz; // Add current texcoord - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].texcoords[2*RLGL_GLOBAL_DATA.State.vertexCounter] = RLGL_GLOBAL_DATA.State.texcoordx; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].texcoords[2*RLGL_GLOBAL_DATA.State.vertexCounter + 1] = RLGL_GLOBAL_DATA.State.texcoordy; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].texcoords[2*GLOBAL_DATA.State.vertexCounter] = GLOBAL_DATA.State.texcoordx; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].texcoords[2*GLOBAL_DATA.State.vertexCounter + 1] = GLOBAL_DATA.State.texcoordy; - // WARNING: By default RLGL_VertexBuffer struct does not store normals + // WARNING: By default vertex_buffer struct does not store normals // Add current color - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].colors[4*RLGL_GLOBAL_DATA.State.vertexCounter] = RLGL_GLOBAL_DATA.State.colorr; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].colors[4*RLGL_GLOBAL_DATA.State.vertexCounter + 1] = RLGL_GLOBAL_DATA.State.colorg; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].colors[4*RLGL_GLOBAL_DATA.State.vertexCounter + 2] = RLGL_GLOBAL_DATA.State.colorb; - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].colors[4*RLGL_GLOBAL_DATA.State.vertexCounter + 3] = RLGL_GLOBAL_DATA.State.colora; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].colors[4*GLOBAL_DATA.State.vertexCounter] = GLOBAL_DATA.State.colorr; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].colors[4*GLOBAL_DATA.State.vertexCounter + 1] = GLOBAL_DATA.State.colorg; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].colors[4*GLOBAL_DATA.State.vertexCounter + 2] = GLOBAL_DATA.State.colorb; + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].colors[4*GLOBAL_DATA.State.vertexCounter + 3] = GLOBAL_DATA.State.colora; - RLGL_GLOBAL_DATA.State.vertexCounter++; - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount++; + GLOBAL_DATA.State.vertexCounter++; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount++; } // Define one vertex (position) -void RLGL_Vertex2f(float x, float y) +void vertex2f(float x, float y) { - RLGL_Vertex3f(x, y, RLGL_GLOBAL_DATA.currentBatch->currentDepth); + vertex3f(x, y, GLOBAL_DATA.currentBatch->currentDepth); } // Define one vertex (position) -void RLGL_Vertex2i(int x, int y) +void vertex2i(int x, int y) { - RLGL_Vertex3f((float)x, (float)y, RLGL_GLOBAL_DATA.currentBatch->currentDepth); + vertex3f((float)x, (float)y, GLOBAL_DATA.currentBatch->currentDepth); } // Define one vertex (texture coordinate) // NOTE: Texture coordinates are limited to QUADS only -void RLGL_TexCoord2f(float x, float y) +void tex_coord2f(float x, float y) { - RLGL_GLOBAL_DATA.State.texcoordx = x; - RLGL_GLOBAL_DATA.State.texcoordy = y; + GLOBAL_DATA.State.texcoordx = x; + GLOBAL_DATA.State.texcoordy = y; } // Define one vertex (normal) // NOTE: Normals limited to TRIANGLES only? -void RLGL_Normal3f(float x, float y, float z) +void normal3f(float x, float y, float z) { - RLGL_GLOBAL_DATA.State.normalx = x; - RLGL_GLOBAL_DATA.State.normaly = y; - RLGL_GLOBAL_DATA.State.normalz = z; + GLOBAL_DATA.State.normalx = x; + GLOBAL_DATA.State.normaly = y; + GLOBAL_DATA.State.normalz = z; } // Define one vertex (color) -void RLGL_Color4ub(unsigned char x, unsigned char y, unsigned char z, unsigned char w) +void color4ub(unsigned char x, unsigned char y, unsigned char z, unsigned char w) { - RLGL_GLOBAL_DATA.State.colorr = x; - RLGL_GLOBAL_DATA.State.colorg = y; - RLGL_GLOBAL_DATA.State.colorb = z; - RLGL_GLOBAL_DATA.State.colora = w; + GLOBAL_DATA.State.colorr = x; + GLOBAL_DATA.State.colorg = y; + GLOBAL_DATA.State.colorb = z; + GLOBAL_DATA.State.colora = w; } // Define one vertex (color) -void RLGL_Color4f(float r, float g, float b, float a) +void color4f(float r, float g, float b, float a) { - RLGL_Color4ub((unsigned char)(r*255), (unsigned char)(g*255), (unsigned char)(b*255), (unsigned char)(a*255)); + color4ub((unsigned char)(r*255), (unsigned char)(g*255), (unsigned char)(b*255), (unsigned char)(a*255)); } // Define one vertex (color) -void RLGL_Color3f(float x, float y, float z) +void color3f(float x, float y, float z) { - RLGL_Color4ub((unsigned char)(x*255), (unsigned char)(y*255), (unsigned char)(z*255), 255); + color4ub((unsigned char)(x*255), (unsigned char)(y*255), (unsigned char)(z*255), 255); } #endif @@ -1510,58 +1549,58 @@ void RLGL_Color3f(float x, float y, float z) //-------------------------------------------------------------------------------------- // Set current texture to use -void RLGL_SetTexture(unsigned int id) +void set_texture(unsigned int id) { if (id == 0) { #if defined(GRAPHICS_API_OPENGL_11) - RLGL_DisableTexture(); + disable_texture(); #else // NOTE: If quads batch limit is reached, we force a draw call and next batch starts - if (RLGL_GLOBAL_DATA.State.vertexCounter >= - RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4) + if (GLOBAL_DATA.State.vertexCounter >= + GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4) { - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); + draw_render_batch(GLOBAL_DATA.currentBatch); } #endif } else { #if defined(GRAPHICS_API_OPENGL_11) - RLGL_EnableTexture(id); + enable_texture(id); #else - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].textureId != id) + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].textureId != id) { - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount > 0) + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount > 0) { - // Make sure current RLGL_GLOBAL_DATA.currentBatch->draws[i].vertexCount is aligned a multiple of 4, + // Make sure current GLOBAL_DATA.currentBatch->draws[i].vertexCount is aligned a multiple of 4, // that way, following QUADS drawing will keep aligned with index processing // It implies adding some extra alignment vertex at the end of the draw, // those vertex are not processed but they are considered as an additional offset // for the next set of vertex to be drawn - if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount : RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4); - else if (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4))); - else RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = 0; + if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_LINES) GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount : GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4); + else if (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = ((GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount%4))); + else GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment = 0; - if (!RLGL_CheckRenderBatchLimit(RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment)) + if (!check_render_batch_limit(GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment)) { - RLGL_GLOBAL_DATA.State.vertexCounter += RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment; + GLOBAL_DATA.State.vertexCounter += GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexAlignment; - RLGL_GLOBAL_DATA.currentBatch->drawCounter++; + GLOBAL_DATA.currentBatch->drawCounter++; } } - if (RLGL_GLOBAL_DATA.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); + if (GLOBAL_DATA.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) draw_render_batch(GLOBAL_DATA.currentBatch); - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = id; - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount = 0; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = id; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].vertexCount = 0; } #endif } } // Select and active a texture slot -void RLGL_ActiveTextureSlot(int slot) +void active_texture_slot(int slot) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glActiveTexture(GL_TEXTURE0 + slot); @@ -1569,7 +1608,7 @@ void RLGL_ActiveTextureSlot(int slot) } // Enable texture -void RLGL_EnableTexture(unsigned int id) +void enable_texture(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_11) glEnable(GL_TEXTURE_2D); @@ -1578,7 +1617,7 @@ void RLGL_EnableTexture(unsigned int id) } // Disable texture -void RLGL_DisableTexture(void) +void disable_texture(void) { #if defined(GRAPHICS_API_OPENGL_11) glDisable(GL_TEXTURE_2D); @@ -1587,7 +1626,7 @@ void RLGL_DisableTexture(void) } // Enable texture cubemap -void RLGL_EnableTextureCubemap(unsigned int id) +void enable_texture_cubemap(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindTexture(GL_TEXTURE_CUBE_MAP, id); @@ -1595,7 +1634,7 @@ void RLGL_EnableTextureCubemap(unsigned int id) } // Disable texture cubemap -void RLGL_DisableTextureCubemap(void) +void disable_texture_cubemap(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); @@ -1603,7 +1642,7 @@ void RLGL_DisableTextureCubemap(void) } // Set texture parameters (wrap mode/filter mode) -void RLGL_TextureParameters(unsigned int id, int param, int value) +void texture_parameters(unsigned int id, int param, int value) { glBindTexture(GL_TEXTURE_2D, id); @@ -1614,35 +1653,35 @@ void RLGL_TextureParameters(unsigned int id, int param, int value) switch (param) { - case RL_TEXTURE_WRAP_S: - case RL_TEXTURE_WRAP_T: + case TEXTURE_WRAP_S: + case TEXTURE_WRAP_T: { - if (value == RL_TEXTURE_WRAP_MIRROR_CLAMP) + if (value == TEXTURE_WRAP_MIRROR_CLAMP) { #if !defined(GRAPHICS_API_OPENGL_11) - if (RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_2D, param, value); - else RL_TRACELOG(RL_LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); + if (GLOBAL_DATA.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_2D, param, value); + else RL_TRACELOG(LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); #endif } else glTexParameteri(GL_TEXTURE_2D, param, value); } break; - case RL_TEXTURE_MAG_FILTER: - case RL_TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_2D, param, value); break; - case RL_TEXTURE_FILTER_ANISOTROPIC: + case TEXTURE_MAG_FILTER: + case TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_2D, param, value); break; + case TEXTURE_FILTER_ANISOTROPIC: { #if !defined(GRAPHICS_API_OPENGL_11) - if (value <= RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); - else if (RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel > 0.0f) + if (value <= GLOBAL_DATA.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + else if (GLOBAL_DATA.ExtSupported.maxAnisotropyLevel > 0.0f) { - RL_TRACELOG(RL_LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); + RL_TRACELOG(LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); } - else RL_TRACELOG(RL_LOG_WARNING, "GL: Anisotropic filtering not supported"); + else RL_TRACELOG(LOG_WARNING, "GL: Anisotropic filtering not supported"); #endif } break; #if defined(GRAPHICS_API_OPENGL_33) - case RL_TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, value/100.0f); + case TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, value/100.0f); #endif default: break; } @@ -1651,7 +1690,7 @@ void RLGL_TextureParameters(unsigned int id, int param, int value) } // Set cubemap parameters (wrap mode/filter mode) -void RLGL_CubemapParameters(unsigned int id, int param, int value) +void cubemap_parameters(unsigned int id, int param, int value) { #if !defined(GRAPHICS_API_OPENGL_11) glBindTexture(GL_TEXTURE_CUBE_MAP, id); @@ -1661,31 +1700,31 @@ void RLGL_CubemapParameters(unsigned int id, int param, int value) switch (param) { - case RL_TEXTURE_WRAP_S: - case RL_TEXTURE_WRAP_T: + case TEXTURE_WRAP_S: + case TEXTURE_WRAP_T: { - if (value == RL_TEXTURE_WRAP_MIRROR_CLAMP) + if (value == TEXTURE_WRAP_MIRROR_CLAMP) { - if (RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); - else RL_TRACELOG(RL_LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); + if (GLOBAL_DATA.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); + else RL_TRACELOG(LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); } else glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); } break; - case RL_TEXTURE_MAG_FILTER: - case RL_TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); break; - case RL_TEXTURE_FILTER_ANISOTROPIC: + case TEXTURE_MAG_FILTER: + case TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); break; + case TEXTURE_FILTER_ANISOTROPIC: { - if (value <= RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); - else if (RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel > 0.0f) + if (value <= GLOBAL_DATA.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + else if (GLOBAL_DATA.ExtSupported.maxAnisotropyLevel > 0.0f) { - RL_TRACELOG(RL_LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); + RL_TRACELOG(LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); } - else RL_TRACELOG(RL_LOG_WARNING, "GL: Anisotropic filtering not supported"); + else RL_TRACELOG(LOG_WARNING, "GL: Anisotropic filtering not supported"); } break; #if defined(GRAPHICS_API_OPENGL_33) - case RL_TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_LOD_BIAS, value/100.0f); + case TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_LOD_BIAS, value/100.0f); #endif default: break; } @@ -1695,7 +1734,7 @@ void RLGL_CubemapParameters(unsigned int id, int param, int value) } // Enable shader program -void RLGL_EnableShader(unsigned int id) +void enable_shader(unsigned int id) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) glUseProgram(id); @@ -1703,7 +1742,7 @@ void RLGL_EnableShader(unsigned int id) } // Disable shader program -void RLGL_DisableShader(void) +void disable_shader(void) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) glUseProgram(0); @@ -1711,7 +1750,7 @@ void RLGL_DisableShader(void) } // Enable rendering to texture (fbo) -void RLGL_EnableFramebuffer(unsigned int id) +void enable_framebuffer(unsigned int id) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) glBindFramebuffer(GL_FRAMEBUFFER, id); @@ -1719,7 +1758,7 @@ void RLGL_EnableFramebuffer(unsigned int id) } // Disable rendering to texture -void RLGL_DisableFramebuffer(void) +void disable_framebuffer(void) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) glBindFramebuffer(GL_FRAMEBUFFER, 0); @@ -1727,7 +1766,7 @@ void RLGL_DisableFramebuffer(void) } // Blit active framebuffer to main framebuffer -void RLGL_BlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask) +void blit_framebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT) glBlitFramebuffer(srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, bufferMask, GL_NEAREST); @@ -1736,7 +1775,7 @@ void RLGL_BlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int d // Activate multiple draw color buffers // NOTE: One color buffer is always active by default -void RLGL_ActiveDrawBuffers(int count) +void active_draw_buffers(int count) { #if ((defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT)) // NOTE: Maximum number of draw buffers supported is implementation dependant, @@ -1746,7 +1785,7 @@ void RLGL_ActiveDrawBuffers(int count) if (count > 0) { - if (count > 8) RL_TRACELOG(RL_LOG_WARNING, "GL: Max color buffers limited to 8"); + if (count > 8) RL_TRACELOG(LOG_WARNING, "GL: Max color buffers limited to 8"); else { unsigned int buffers[8] = { @@ -1778,7 +1817,7 @@ void RLGL_ActiveDrawBuffers(int count) #endif } } - else RL_TRACELOG(RL_LOG_WARNING, "GL: One color buffer active by default"); + else RL_TRACELOG(LOG_WARNING, "GL: One color buffer active by default"); #endif } @@ -1787,51 +1826,51 @@ void RLGL_ActiveDrawBuffers(int count) //---------------------------------------------------------------------------------- // Enable color blending -void RLGL_EnableColorBlend(void) { glEnable(GL_BLEND); } +void enable_color_blend(void) { glEnable(GL_BLEND); } // Disable color blending -void RLGL_DisableColorBlend(void) { glDisable(GL_BLEND); } +void disable_color_blend(void) { glDisable(GL_BLEND); } // Enable depth test -void RLGL_EnableDepthTest(void) { glEnable(GL_DEPTH_TEST); } +void enable_depth_test(void) { glEnable(GL_DEPTH_TEST); } // Disable depth test -void RLGL_DisableDepthTest(void) { glDisable(GL_DEPTH_TEST); } +void disable_depth_test(void) { glDisable(GL_DEPTH_TEST); } // Enable depth write -void RLGL_EnableDepthMask(void) { glDepthMask(GL_TRUE); } +void enable_depth_mask(void) { glDepthMask(GL_TRUE); } // Disable depth write -void RLGL_DisableDepthMask(void) { glDepthMask(GL_FALSE); } +void disable_depth_mask(void) { glDepthMask(GL_FALSE); } // Enable backface culling -void RLGL_EnableBackfaceCulling(void) { glEnable(GL_CULL_FACE); } +void enable_backface_culling(void) { glEnable(GL_CULL_FACE); } // Disable backface culling -void RLGL_DisableBackfaceCulling(void) { glDisable(GL_CULL_FACE); } +void disable_backface_culling(void) { glDisable(GL_CULL_FACE); } // Set face culling mode -void RLGL_SetCullFace(int mode) +void set_cull_face(int mode) { switch (mode) { - case RL_CULL_FACE_BACK: glCullFace(GL_BACK); break; - case RL_CULL_FACE_FRONT: glCullFace(GL_FRONT); break; + case CULL_FACE_BACK: glCullFace(GL_BACK); break; + case CULL_FACE_FRONT: glCullFace(GL_FRONT); break; default: break; } } // Enable scissor test -void RLGL_EnableScissorTest(void) { glEnable(GL_SCISSOR_TEST); } +void enable_scissor_test(void) { glEnable(GL_SCISSOR_TEST); } // Disable scissor test -void RLGL_DisableScissorTest(void) { glDisable(GL_SCISSOR_TEST); } +void disable_scissor_test(void) { glDisable(GL_SCISSOR_TEST); } // Scissor test -void RLGL_Scissor(int x, int y, int width, int height) { glScissor(x, y, width, height); } +void scissor(int x, int y, int width, int height) { glScissor(x, y, width, height); } // Enable wire mode -void RLGL_EnableWireMode(void) +void enable_wire_mode(void) { #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) // NOTE: glPolygonMode() not available on OpenGL ES @@ -1839,7 +1878,7 @@ void RLGL_EnableWireMode(void) #endif } -void RLGL_EnablePointMode(void) +void enable_point_mode(void) { #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) // NOTE: glPolygonMode() not available on OpenGL ES @@ -1848,7 +1887,7 @@ void RLGL_EnablePointMode(void) #endif } // Disable wire mode -void RLGL_DisableWireMode(void) +void disable_wire_mode(void) { #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) // NOTE: glPolygonMode() not available on OpenGL ES @@ -1857,10 +1896,10 @@ void RLGL_DisableWireMode(void) } // Set the line drawing width -void RLGL_SetLineWidth(float width) { glLineWidth(width); } +void set_line_width(float width) { glLineWidth(width); } // Get the line drawing width -float RLGL_GetLineWidth(void) +float get_line_width(void) { float width = 0; glGetFloatv(GL_LINE_WIDTH, &width); @@ -1868,7 +1907,7 @@ float RLGL_GetLineWidth(void) } // Enable line aliasing -void RLGL_EnableSmoothLines(void) +void enable_smooth_lines(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) glEnable(GL_LINE_SMOOTH); @@ -1876,7 +1915,7 @@ void RLGL_EnableSmoothLines(void) } // Disable line aliasing -void RLGL_DisableSmoothLines(void) +void disable_smooth_lines(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) glDisable(GL_LINE_SMOOTH); @@ -1884,33 +1923,33 @@ void RLGL_DisableSmoothLines(void) } // Enable stereo rendering -void RLGL_EnableStereoRender(void) +void enable_stereo_render(void) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) - RLGL_GLOBAL_DATA.State.stereoRender = true; + GLOBAL_DATA.State.stereoRender = true; #endif } // Disable stereo rendering -void RLGL_DisableStereoRender(void) +void disable_stereo_render(void) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) - RLGL_GLOBAL_DATA.State.stereoRender = false; + GLOBAL_DATA.State.stereoRender = false; #endif } // Check if stereo render is enabled -bool RLGL_IsStereoRenderEnabled(void) +bool is_stereo_render_enabled(void) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) - return RLGL_GLOBAL_DATA.State.stereoRender; + return GLOBAL_DATA.State.stereoRender; #else return false; #endif } // Clear color buffer with color -void RLGL_ClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +void clear_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { // Color values clamp to 0.0f(0) and 1.0f(255) float cr = (float)r/255; @@ -1922,14 +1961,14 @@ void RLGL_ClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned } // Clear used screen buffers (color and depth) -void RLGL_ClearScreenBuffers(void) +void clear_screen_buffers(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear used buffers: Color and Depth (Depth is used for 3D) //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // Stencil buffer not used... } // Check and log OpenGL error codes -void RLGL_CheckErrors() +void check_errors() { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) int check = 1; @@ -1939,93 +1978,93 @@ void RLGL_CheckErrors() switch (err) { case GL_NO_ERROR: check = 0; break; - case 0x0500: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_ENUM"); break; - case 0x0501: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_VALUE"); break; - case 0x0502: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_OPERATION"); break; - case 0x0503: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_STACK_OVERFLOW"); break; - case 0x0504: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_STACK_UNDERFLOW"); break; - case 0x0505: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_OUT_OF_MEMORY"); break; - case 0x0506: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_FRAMEBUFFER_OPERATION"); break; - default: RL_TRACELOG(RL_LOG_WARNING, "GL: Error detected: Unknown error code: %x", err); break; + case 0x0500: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_INVALID_ENUM"); break; + case 0x0501: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_INVALID_VALUE"); break; + case 0x0502: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_INVALID_OPERATION"); break; + case 0x0503: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_STACK_OVERFLOW"); break; + case 0x0504: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_STACK_UNDERFLOW"); break; + case 0x0505: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_OUT_OF_MEMORY"); break; + case 0x0506: RL_TRACELOG(LOG_WARNING, "GL: Error detected: GL_INVALID_FRAMEBUFFER_OPERATION"); break; + default: RL_TRACELOG(LOG_WARNING, "GL: Error detected: Unknown error code: %x", err); break; } } #endif } // Set blend mode -void RLGL_SetBlendMode(int mode) +void set_blend_mode(int mode) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if ((RLGL_GLOBAL_DATA.State.currentBlendMode != mode) || ((mode == RL_BLEND_CUSTOM || mode == RL_BLEND_CUSTOM_SEPARATE) && RLGL_GLOBAL_DATA.State.glCustomBlendModeModified)) + if ((GLOBAL_DATA.State.currentBlendMode != mode) || ((mode == BLEND_CUSTOM || mode == BLEND_CUSTOM_SEPARATE) && GLOBAL_DATA.State.glCustomBlendModeModified)) { - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); + draw_render_batch(GLOBAL_DATA.currentBatch); switch (mode) { - case RL_BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; - case RL_BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; - case RL_BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; - case RL_BLEND_ADD_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; - case RL_BLEND_SUBTRACT_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_SUBTRACT); break; - case RL_BLEND_ALPHA_PREMULTIPLY: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; - case RL_BLEND_CUSTOM: + case BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; + case BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case BLEND_ADD_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; + case BLEND_SUBTRACT_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_SUBTRACT); break; + case BLEND_ALPHA_PREMULTIPLY: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case BLEND_CUSTOM: { - // NOTE: Using GL blend src/dst factors and GL equation configured with RLGL_SetBlendFactors() - glBlendFunc(RLGL_GLOBAL_DATA.State.glBlendSrcFactor, RLGL_GLOBAL_DATA.State.glBlendDstFactor); glBlendEquation(RLGL_GLOBAL_DATA.State.glBlendEquation); + // NOTE: Using GL blend src/dst factors and GL equation configured with set_blend_factors() + glBlendFunc(GLOBAL_DATA.State.glBlendSrcFactor, GLOBAL_DATA.State.glBlendDstFactor); glBlendEquation(GLOBAL_DATA.State.glBlendEquation); } break; - case RL_BLEND_CUSTOM_SEPARATE: + case BLEND_CUSTOM_SEPARATE: { - // NOTE: Using GL blend src/dst factors and GL equation configured with RLGL_SetBlendFactorsSeparate() - glBlendFuncSeparate(RLGL_GLOBAL_DATA.State.glBlendSrcFactorRGB, RLGL_GLOBAL_DATA.State.glBlendDestFactorRGB, RLGL_GLOBAL_DATA.State.glBlendSrcFactorAlpha, RLGL_GLOBAL_DATA.State.glBlendDestFactorAlpha); - glBlendEquationSeparate(RLGL_GLOBAL_DATA.State.glBlendEquationRGB, RLGL_GLOBAL_DATA.State.glBlendEquationAlpha); + // NOTE: Using GL blend src/dst factors and GL equation configured with set_blend_factors_separate() + glBlendFuncSeparate(GLOBAL_DATA.State.glBlendSrcFactorRGB, GLOBAL_DATA.State.glBlendDestFactorRGB, GLOBAL_DATA.State.glBlendSrcFactorAlpha, GLOBAL_DATA.State.glBlendDestFactorAlpha); + glBlendEquationSeparate(GLOBAL_DATA.State.glBlendEquationRGB, GLOBAL_DATA.State.glBlendEquationAlpha); } break; default: break; } - RLGL_GLOBAL_DATA.State.currentBlendMode = mode; - RLGL_GLOBAL_DATA.State.glCustomBlendModeModified = false; + GLOBAL_DATA.State.currentBlendMode = mode; + GLOBAL_DATA.State.glCustomBlendModeModified = false; } #endif } // Set blending mode factor and equation -void RLGL_SetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation) +void set_blend_factors(int glSrcFactor, int glDstFactor, int glEquation) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if ((RLGL_GLOBAL_DATA.State.glBlendSrcFactor != glSrcFactor) || - (RLGL_GLOBAL_DATA.State.glBlendDstFactor != glDstFactor) || - (RLGL_GLOBAL_DATA.State.glBlendEquation != glEquation)) + if ((GLOBAL_DATA.State.glBlendSrcFactor != glSrcFactor) || + (GLOBAL_DATA.State.glBlendDstFactor != glDstFactor) || + (GLOBAL_DATA.State.glBlendEquation != glEquation)) { - RLGL_GLOBAL_DATA.State.glBlendSrcFactor = glSrcFactor; - RLGL_GLOBAL_DATA.State.glBlendDstFactor = glDstFactor; - RLGL_GLOBAL_DATA.State.glBlendEquation = glEquation; + GLOBAL_DATA.State.glBlendSrcFactor = glSrcFactor; + GLOBAL_DATA.State.glBlendDstFactor = glDstFactor; + GLOBAL_DATA.State.glBlendEquation = glEquation; - RLGL_GLOBAL_DATA.State.glCustomBlendModeModified = true; + GLOBAL_DATA.State.glCustomBlendModeModified = true; } #endif } // Set blending mode factor and equation separately for RGB and alpha -void RLGL_SetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha) +void set_blend_factors_separate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if ((RLGL_GLOBAL_DATA.State.glBlendSrcFactorRGB != glSrcRGB) || - (RLGL_GLOBAL_DATA.State.glBlendDestFactorRGB != glDstRGB) || - (RLGL_GLOBAL_DATA.State.glBlendSrcFactorAlpha != glSrcAlpha) || - (RLGL_GLOBAL_DATA.State.glBlendDestFactorAlpha != glDstAlpha) || - (RLGL_GLOBAL_DATA.State.glBlendEquationRGB != glEqRGB) || - (RLGL_GLOBAL_DATA.State.glBlendEquationAlpha != glEqAlpha)) + if ((GLOBAL_DATA.State.glBlendSrcFactorRGB != glSrcRGB) || + (GLOBAL_DATA.State.glBlendDestFactorRGB != glDstRGB) || + (GLOBAL_DATA.State.glBlendSrcFactorAlpha != glSrcAlpha) || + (GLOBAL_DATA.State.glBlendDestFactorAlpha != glDstAlpha) || + (GLOBAL_DATA.State.glBlendEquationRGB != glEqRGB) || + (GLOBAL_DATA.State.glBlendEquationAlpha != glEqAlpha)) { - RLGL_GLOBAL_DATA.State.glBlendSrcFactorRGB = glSrcRGB; - RLGL_GLOBAL_DATA.State.glBlendDestFactorRGB = glDstRGB; - RLGL_GLOBAL_DATA.State.glBlendSrcFactorAlpha = glSrcAlpha; - RLGL_GLOBAL_DATA.State.glBlendDestFactorAlpha = glDstAlpha; - RLGL_GLOBAL_DATA.State.glBlendEquationRGB = glEqRGB; - RLGL_GLOBAL_DATA.State.glBlendEquationAlpha = glEqAlpha; + GLOBAL_DATA.State.glBlendSrcFactorRGB = glSrcRGB; + GLOBAL_DATA.State.glBlendDestFactorRGB = glDstRGB; + GLOBAL_DATA.State.glBlendSrcFactorAlpha = glSrcAlpha; + GLOBAL_DATA.State.glBlendDestFactorAlpha = glDstAlpha; + GLOBAL_DATA.State.glBlendEquationRGB = glEqRGB; + GLOBAL_DATA.State.glBlendEquationAlpha = glEqAlpha; - RLGL_GLOBAL_DATA.State.glCustomBlendModeModified = true; + GLOBAL_DATA.State.glCustomBlendModeModified = true; } #endif } @@ -2034,7 +2073,7 @@ void RLGL_SetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, in // Module Functions Definition - OpenGL Debug //---------------------------------------------------------------------------------- #if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) && defined(GRAPHICS_API_OPENGL_43) -static void GLAPIENTRY RLGL_DebugMessageCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) +static void GLAPIENTRY DebugMessageCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) { // Ignore non-significant error/warning codes (NVidia drivers) // NOTE: Here there are the details with a sample output: @@ -2083,25 +2122,25 @@ static void GLAPIENTRY RLGL_DebugMessageCallback(GLenum source, GLenum type, GLu default: break; } - RL_TRACELOG(RL_LOG_WARNING, "GL: OpenGL debug message: %s", message); - RL_TRACELOG(RL_LOG_WARNING, " > Type: %s", msgType); - RL_TRACELOG(RL_LOG_WARNING, " > Source = %s", msgSource); - RL_TRACELOG(RL_LOG_WARNING, " > Severity = %s", msgSeverity); + RL_TRACELOG(LOG_WARNING, "GL: OpenGL debug message: %s", message); + RL_TRACELOG(LOG_WARNING, " > Type: %s", msgType); + RL_TRACELOG(LOG_WARNING, " > Source = %s", msgSource); + RL_TRACELOG(LOG_WARNING, " > Severity = %s", msgSeverity); } #endif //---------------------------------------------------------------------------------- -// Module Functions Definition - RLGL_gl functionality +// Module Functions Definition - rlgl functionality //---------------------------------------------------------------------------------- -// Initialize RLGL_gl: OpenGL extensions, default buffers/shaders/textures, OpenGL states -void RLGL_Init(int width, int height) +// Initialize rlgl: OpenGL extensions, default buffers/shaders/textures, OpenGL states +void init(int width, int height) { // Enable OpenGL debug context if required #if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) && defined(GRAPHICS_API_OPENGL_43) if ((glDebugMessageCallback != NULL) && (glDebugMessageControl != NULL)) { - glDebugMessageCallback(RLGL_DebugMessageCallback, 0); + glDebugMessageCallback(DebugMessageCallback, 0); // glDebugMessageControl(GL_DEBUG_SOURCE_API, GL_DEBUG_TYPE_ERROR, GL_DEBUG_SEVERITY_HIGH, 0, 0, GL_TRUE); // Debug context options: @@ -2115,29 +2154,29 @@ void RLGL_Init(int width, int height) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Init default white texture unsigned char pixels[4] = { 255, 255, 255, 255 }; // 1 pixel RGBA (4 bytes) - RLGL_GLOBAL_DATA.State.defaultTextureId = RLGL_LoadTexture(pixels, 1, 1, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); + GLOBAL_DATA.State.defaultTextureId = load_texture(pixels, 1, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); - if (RLGL_GLOBAL_DATA.State.defaultTextureId != 0) RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture loaded successfully", RLGL_GLOBAL_DATA.State.defaultTextureId); - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load default texture"); + if (GLOBAL_DATA.State.defaultTextureId != 0) RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Default texture loaded successfully", GLOBAL_DATA.State.defaultTextureId); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: Failed to load default texture"); // Init default Shader (customized for GL 3.3 and ES2) - // Loaded: RLGL_GLOBAL_DATA.State.defaultShaderId + RLGL_GLOBAL_DATA.State.defaultShaderLocs - RLGL_LoadShaderDefault(); - RLGL_GLOBAL_DATA.State.currentShaderId = RLGL_GLOBAL_DATA.State.defaultShaderId; - RLGL_GLOBAL_DATA.State.currentShaderLocs = RLGL_GLOBAL_DATA.State.defaultShaderLocs; + // Loaded: GLOBAL_DATA.State.defaultShaderId + GLOBAL_DATA.State.defaultShaderLocs + load_shader_default(); + GLOBAL_DATA.State.currentShaderId = GLOBAL_DATA.State.defaultShaderId; + GLOBAL_DATA.State.currentShaderLocs = GLOBAL_DATA.State.defaultShaderLocs; // Init default vertex arrays buffers - RLGL_GLOBAL_DATA.defaultBatch = RLGL_LoadRenderBatch(RL_DEFAULT_BATCH_BUFFERS, RL_DEFAULT_BATCH_BUFFER_ELEMENTS); - RLGL_GLOBAL_DATA.currentBatch = &RLGL_GLOBAL_DATA.defaultBatch; + GLOBAL_DATA.defaultBatch = load_render_batch(RL_DEFAULT_BATCH_BUFFERS, RL_DEFAULT_BATCH_BUFFER_ELEMENTS); + GLOBAL_DATA.currentBatch = &GLOBAL_DATA.defaultBatch; // Init stack matrices (emulating OpenGL 1.1) - for (int i = 0; i < RL_MAX_MATRIX_STACK_SIZE; i++) RLGL_GLOBAL_DATA.State.stack[i] = RLGL_MatrixIdentity(); + for (int i = 0; i < RL_MAX_MATRIX_STACK_SIZE; i++) GLOBAL_DATA.State.stack[i] = internal_matrix_identity(); // Init internal matrices - RLGL_GLOBAL_DATA.State.transform = RLGL_MatrixIdentity(); - RLGL_GLOBAL_DATA.State.projection = RLGL_MatrixIdentity(); - RLGL_GLOBAL_DATA.State.modelview = RLGL_MatrixIdentity(); - RLGL_GLOBAL_DATA.State.currentMatrix = &RLGL_GLOBAL_DATA.State.modelview; + GLOBAL_DATA.State.transform = internal_matrix_identity(); + GLOBAL_DATA.State.projection = internal_matrix_identity(); + GLOBAL_DATA.State.modelview = internal_matrix_identity(); + GLOBAL_DATA.State.currentMatrix = &GLOBAL_DATA.State.modelview; #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 // Initialize OpenGL default states @@ -2169,10 +2208,10 @@ void RLGL_Init(int width, int height) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Store screen size into global variables - RLGL_GLOBAL_DATA.State.framebufferWidth = width; - RLGL_GLOBAL_DATA.State.framebufferHeight = height; + GLOBAL_DATA.State.framebufferWidth = width; + GLOBAL_DATA.State.framebufferHeight = height; - RL_TRACELOG(RL_LOG_INFO, "RLGL_GLOBAL_DATA: Default OpenGL state initialized successfully"); + RL_TRACELOG(LOG_INFO, "GLOBAL_DATA: Default OpenGL state initialized successfully"); //---------------------------------------------------------- #endif @@ -2183,72 +2222,72 @@ void RLGL_Init(int width, int height) } // Vertex Buffer Object deinitialization (memory free) -void RLGL_Close(void) +void close(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_UnloadRenderBatch(RLGL_GLOBAL_DATA.defaultBatch); + unload_render_batch(GLOBAL_DATA.defaultBatch); - RLGL_UnloadShaderDefault(); // Unload default shader + unload_shader_default(); // Unload default shader - glDeleteTextures(1, &RLGL_GLOBAL_DATA.State.defaultTextureId); // Unload default texture - RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture unloaded successfully", RLGL_GLOBAL_DATA.State.defaultTextureId); + glDeleteTextures(1, &GLOBAL_DATA.State.defaultTextureId); // Unload default texture + RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Default texture unloaded successfully", GLOBAL_DATA.State.defaultTextureId); #endif } // Load OpenGL extensions // NOTE: External loader function must be provided -void RLGL_LoadExtensions(void *loader) +void load_extensions(void *loader) { #if defined(GRAPHICS_API_OPENGL_33) // Also defined for GRAPHICS_API_OPENGL_21 // NOTE: glad is generated and contains only required OpenGL 3.3 Core extensions (and lower versions) - if (gladLoadGL((GLADloadfunc)loader) == 0) RL_TRACELOG(RL_LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); - else RL_TRACELOG(RL_LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + if (gladLoadGL((GLADloadfunc)loader) == 0) RL_TRACELOG(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); + else RL_TRACELOG(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); // Get number of supported extensions GLint numExt = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &numExt); - RL_TRACELOG(RL_LOG_INFO, "GL: Supported extensions count: %i", numExt); + RL_TRACELOG(LOG_INFO, "GL: Supported extensions count: %i", numExt); #if defined(RLGL_SHOW_GL_DETAILS_INFO) // Get supported extensions list // WARNING: glGetStringi() not available on OpenGL 2.1 - RL_TRACELOG(RL_LOG_INFO, "GL: OpenGL extensions:"); - for (int i = 0; i < numExt; i++) RL_TRACELOG(RL_LOG_INFO, " %s", glGetStringi(GL_EXTENSIONS, i)); + RL_TRACELOG(LOG_INFO, "GL: OpenGL extensions:"); + for (int i = 0; i < numExt; i++) RL_TRACELOG(LOG_INFO, " %s", glGetStringi(GL_EXTENSIONS, i)); #endif #if defined(GRAPHICS_API_OPENGL_21) // Register supported extensions flags // Optional OpenGL 2.1 extensions - RLGL_GLOBAL_DATA.ExtSupported.vao = GLAD_GL_ARB_vertex_array_object; - RLGL_GLOBAL_DATA.ExtSupported.instancing = (GLAD_GL_EXT_draw_instanced && GLAD_GL_ARB_instanced_arrays); - RLGL_GLOBAL_DATA.ExtSupported.texNPOT = GLAD_GL_ARB_texture_non_power_of_two; - RLGL_GLOBAL_DATA.ExtSupported.texFloat32 = GLAD_GL_ARB_texture_float; - RLGL_GLOBAL_DATA.ExtSupported.texFloat16 = GLAD_GL_ARB_texture_float; - RLGL_GLOBAL_DATA.ExtSupported.texDepth = GLAD_GL_ARB_depth_texture; - RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits = 32; - RLGL_GLOBAL_DATA.ExtSupported.texAnisoFilter = GLAD_GL_EXT_texture_filter_anisotropic; - RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp = GLAD_GL_EXT_texture_mirror_clamp; + GLOBAL_DATA.ExtSupported.vao = GLAD_GL_ARB_vertex_array_object; + GLOBAL_DATA.ExtSupported.instancing = (GLAD_GL_EXT_draw_instanced && GLAD_GL_ARB_instanced_arrays); + GLOBAL_DATA.ExtSupported.texNPOT = GLAD_GL_ARB_texture_non_power_of_two; + GLOBAL_DATA.ExtSupported.texFloat32 = GLAD_GL_ARB_texture_float; + GLOBAL_DATA.ExtSupported.texFloat16 = GLAD_GL_ARB_texture_float; + GLOBAL_DATA.ExtSupported.texDepth = GLAD_GL_ARB_depth_texture; + GLOBAL_DATA.ExtSupported.maxDepthBits = 32; + GLOBAL_DATA.ExtSupported.texAnisoFilter = GLAD_GL_EXT_texture_filter_anisotropic; + GLOBAL_DATA.ExtSupported.texMirrorClamp = GLAD_GL_EXT_texture_mirror_clamp; #else // Register supported extensions flags // OpenGL 3.3 extensions supported by default (core) - RLGL_GLOBAL_DATA.ExtSupported.vao = true; - RLGL_GLOBAL_DATA.ExtSupported.instancing = true; - RLGL_GLOBAL_DATA.ExtSupported.texNPOT = true; - RLGL_GLOBAL_DATA.ExtSupported.texFloat32 = true; - RLGL_GLOBAL_DATA.ExtSupported.texFloat16 = true; - RLGL_GLOBAL_DATA.ExtSupported.texDepth = true; - RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits = 32; - RLGL_GLOBAL_DATA.ExtSupported.texAnisoFilter = true; - RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp = true; + GLOBAL_DATA.ExtSupported.vao = true; + GLOBAL_DATA.ExtSupported.instancing = true; + GLOBAL_DATA.ExtSupported.texNPOT = true; + GLOBAL_DATA.ExtSupported.texFloat32 = true; + GLOBAL_DATA.ExtSupported.texFloat16 = true; + GLOBAL_DATA.ExtSupported.texDepth = true; + GLOBAL_DATA.ExtSupported.maxDepthBits = 32; + GLOBAL_DATA.ExtSupported.texAnisoFilter = true; + GLOBAL_DATA.ExtSupported.texMirrorClamp = true; #endif // Optional OpenGL 3.3 extensions - RLGL_GLOBAL_DATA.ExtSupported.texCompASTC = GLAD_GL_KHR_texture_compression_astc_hdr && GLAD_GL_KHR_texture_compression_astc_ldr; - RLGL_GLOBAL_DATA.ExtSupported.texCompDXT = GLAD_GL_EXT_texture_compression_s3tc; // Texture compression: DXT - RLGL_GLOBAL_DATA.ExtSupported.texCompETC2 = GLAD_GL_ARB_ES3_compatibility; // Texture compression: ETC2/EAC + GLOBAL_DATA.ExtSupported.texCompASTC = GLAD_GL_KHR_texture_compression_astc_hdr && GLAD_GL_KHR_texture_compression_astc_ldr; + GLOBAL_DATA.ExtSupported.texCompDXT = GLAD_GL_EXT_texture_compression_s3tc; // Texture compression: DXT + GLOBAL_DATA.ExtSupported.texCompETC2 = GLAD_GL_ARB_ES3_compatibility; // Texture compression: ETC2/EAC #if defined(GRAPHICS_API_OPENGL_43) - RLGL_GLOBAL_DATA.ExtSupported.computeShader = GLAD_GL_ARB_compute_shader; - RLGL_GLOBAL_DATA.ExtSupported.ssbo = GLAD_GL_ARB_shader_storage_buffer_object; + GLOBAL_DATA.ExtSupported.computeShader = GLAD_GL_ARB_compute_shader; + GLOBAL_DATA.ExtSupported.ssbo = GLAD_GL_ARB_shader_storage_buffer_object; #endif #endif // GRAPHICS_API_OPENGL_33 @@ -2256,32 +2295,32 @@ void RLGL_LoadExtensions(void *loader) #if defined(GRAPHICS_API_OPENGL_ES3) // Register supported extensions flags // OpenGL ES 3.0 extensions supported by default (or it should be) - RLGL_GLOBAL_DATA.ExtSupported.vao = true; - RLGL_GLOBAL_DATA.ExtSupported.instancing = true; - RLGL_GLOBAL_DATA.ExtSupported.texNPOT = true; - RLGL_GLOBAL_DATA.ExtSupported.texFloat32 = true; - RLGL_GLOBAL_DATA.ExtSupported.texFloat16 = true; - RLGL_GLOBAL_DATA.ExtSupported.texDepth = true; - RLGL_GLOBAL_DATA.ExtSupported.texDepthWebGL = true; - RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits = 24; - RLGL_GLOBAL_DATA.ExtSupported.texAnisoFilter = true; - RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp = true; + GLOBAL_DATA.ExtSupported.vao = true; + GLOBAL_DATA.ExtSupported.instancing = true; + GLOBAL_DATA.ExtSupported.texNPOT = true; + GLOBAL_DATA.ExtSupported.texFloat32 = true; + GLOBAL_DATA.ExtSupported.texFloat16 = true; + GLOBAL_DATA.ExtSupported.texDepth = true; + GLOBAL_DATA.ExtSupported.texDepthWebGL = true; + GLOBAL_DATA.ExtSupported.maxDepthBits = 24; + GLOBAL_DATA.ExtSupported.texAnisoFilter = true; + GLOBAL_DATA.ExtSupported.texMirrorClamp = true; // TODO: Check for additional OpenGL ES 3.0 supported extensions: - //RLGL_GLOBAL_DATA.ExtSupported.texCompDXT = true; - //RLGL_GLOBAL_DATA.ExtSupported.texCompETC1 = true; - //RLGL_GLOBAL_DATA.ExtSupported.texCompETC2 = true; - //RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT = true; - //RLGL_GLOBAL_DATA.ExtSupported.texCompASTC = true; - //RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel = true; - //RLGL_GLOBAL_DATA.ExtSupported.computeShader = true; - //RLGL_GLOBAL_DATA.ExtSupported.ssbo = true; + //GLOBAL_DATA.ExtSupported.texCompDXT = true; + //GLOBAL_DATA.ExtSupported.texCompETC1 = true; + //GLOBAL_DATA.ExtSupported.texCompETC2 = true; + //GLOBAL_DATA.ExtSupported.texCompPVRT = true; + //GLOBAL_DATA.ExtSupported.texCompASTC = true; + //GLOBAL_DATA.ExtSupported.maxAnisotropyLevel = true; + //GLOBAL_DATA.ExtSupported.computeShader = true; + //GLOBAL_DATA.ExtSupported.ssbo = true; #elif defined(GRAPHICS_API_OPENGL_ES2) #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_DESKTOP_SDL) // TODO: Support GLAD loader for OpenGL ES 3.0 - if (gladLoadGLES2((GLADloadfunc)loader) == 0) RL_TRACELOG(RL_LOG_WARNING, "GLAD: Cannot load OpenGL ES2.0 functions"); - else RL_TRACELOG(RL_LOG_INFO, "GLAD: OpenGL ES 2.0 loaded successfully"); + if (gladLoadGLES2((GLADloadfunc)loader) == 0) RL_TRACELOG(LOG_WARNING, "GLAD: Cannot load OpenGL ES2.0 functions"); + else RL_TRACELOG(LOG_INFO, "GLAD: OpenGL ES 2.0 loaded successfully"); #endif // Get supported extensions list @@ -2305,11 +2344,11 @@ void RLGL_LoadExtensions(void *loader) } } - RL_TRACELOG(RL_LOG_INFO, "GL: Supported extensions count: %i", numExt); + RL_TRACELOG(LOG_INFO, "GL: Supported extensions count: %i", numExt); #if defined(RLGL_SHOW_GL_DETAILS_INFO) - RL_TRACELOG(RL_LOG_INFO, "GL: OpenGL extensions:"); - for (int i = 0; i < numExt; i++) RL_TRACELOG(RL_LOG_INFO, " %s", extList[i]); + RL_TRACELOG(LOG_INFO, "GL: OpenGL extensions:"); + for (int i = 0; i < numExt; i++) RL_TRACELOG(LOG_INFO, " %s", extList[i]); #endif // Check required extensions @@ -2321,75 +2360,75 @@ void RLGL_LoadExtensions(void *loader) { // The extension is supported by our hardware and driver, try to get related functions pointers // NOTE: emscripten does not support VAOs natively, it uses emulation and it reduces overall performance... - glGenVertexArrays = (PFNGLGENVERTEXARRAYSOESPROC)((RLGL_glLoadProc)loader)("glGenVertexArraysOES"); - glBindVertexArray = (PFNGLBINDVERTEXARRAYOESPROC)((RLGL_glLoadProc)loader)("glBindVertexArrayOES"); - glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSOESPROC)((RLGL_glLoadProc)loader)("glDeleteVertexArraysOES"); + glGenVertexArrays = (PFNGLGENVERTEXARRAYSOESPROC)((glLoadProc)loader)("glGenVertexArraysOES"); + glBindVertexArray = (PFNGLBINDVERTEXARRAYOESPROC)((glLoadProc)loader)("glBindVertexArrayOES"); + glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSOESPROC)((glLoadProc)loader)("glDeleteVertexArraysOES"); //glIsVertexArray = (PFNGLISVERTEXARRAYOESPROC)loader("glIsVertexArrayOES"); // NOTE: Fails in WebGL, omitted - if ((glGenVertexArrays != NULL) && (glBindVertexArray != NULL) && (glDeleteVertexArrays != NULL)) RLGL_GLOBAL_DATA.ExtSupported.vao = true; + if ((glGenVertexArrays != NULL) && (glBindVertexArray != NULL) && (glDeleteVertexArrays != NULL)) GLOBAL_DATA.ExtSupported.vao = true; } // Check instanced rendering support if (strcmp(extList[i], (const char *)"GL_ANGLE_instanced_arrays") == 0) // Web ANGLE { - glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((RLGL_glLoadProc)loader)("glDrawArraysInstancedANGLE"); - glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((RLGL_glLoadProc)loader)("glDrawElementsInstancedANGLE"); - glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((RLGL_glLoadProc)loader)("glVertexAttribDivisorANGLE"); + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((glLoadProc)loader)("glDrawArraysInstancedANGLE"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((glLoadProc)loader)("glDrawElementsInstancedANGLE"); + glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((glLoadProc)loader)("glVertexAttribDivisorANGLE"); - if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL_GLOBAL_DATA.ExtSupported.instancing = true; + if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) GLOBAL_DATA.ExtSupported.instancing = true; } else { if ((strcmp(extList[i], (const char *)"GL_EXT_draw_instanced") == 0) && // Standard EXT (strcmp(extList[i], (const char *)"GL_EXT_instanced_arrays") == 0)) { - glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((RLGL_glLoadProc)loader)("glDrawArraysInstancedEXT"); - glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((RLGL_glLoadProc)loader)("glDrawElementsInstancedEXT"); - glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((RLGL_glLoadProc)loader)("glVertexAttribDivisorEXT"); + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((glLoadProc)loader)("glDrawArraysInstancedEXT"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((glLoadProc)loader)("glDrawElementsInstancedEXT"); + glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((glLoadProc)loader)("glVertexAttribDivisorEXT"); - if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL_GLOBAL_DATA.ExtSupported.instancing = true; + if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) GLOBAL_DATA.ExtSupported.instancing = true; } } // Check NPOT textures support // NOTE: Only check on OpenGL ES, OpenGL 3.3 has NPOT textures full support as core feature - if (strcmp(extList[i], (const char *)"GL_OES_texture_npot") == 0) RLGL_GLOBAL_DATA.ExtSupported.texNPOT = true; + if (strcmp(extList[i], (const char *)"GL_OES_texture_npot") == 0) GLOBAL_DATA.ExtSupported.texNPOT = true; // Check texture float support - if (strcmp(extList[i], (const char *)"GL_OES_texture_float") == 0) RLGL_GLOBAL_DATA.ExtSupported.texFloat32 = true; - if (strcmp(extList[i], (const char *)"GL_OES_texture_half_float") == 0) RLGL_GLOBAL_DATA.ExtSupported.texFloat16 = true; + if (strcmp(extList[i], (const char *)"GL_OES_texture_float") == 0) GLOBAL_DATA.ExtSupported.texFloat32 = true; + if (strcmp(extList[i], (const char *)"GL_OES_texture_half_float") == 0) GLOBAL_DATA.ExtSupported.texFloat16 = true; // Check depth texture support - if (strcmp(extList[i], (const char *)"GL_OES_depth_texture") == 0) RLGL_GLOBAL_DATA.ExtSupported.texDepth = true; - if (strcmp(extList[i], (const char *)"GL_WEBGL_depth_texture") == 0) RLGL_GLOBAL_DATA.ExtSupported.texDepthWebGL = true; // WebGL requires unsized internal format - if (RLGL_GLOBAL_DATA.ExtSupported.texDepthWebGL) RLGL_GLOBAL_DATA.ExtSupported.texDepth = true; + if (strcmp(extList[i], (const char *)"GL_OES_depth_texture") == 0) GLOBAL_DATA.ExtSupported.texDepth = true; + if (strcmp(extList[i], (const char *)"GL_WEBGL_depth_texture") == 0) GLOBAL_DATA.ExtSupported.texDepthWebGL = true; // WebGL requires unsized internal format + if (GLOBAL_DATA.ExtSupported.texDepthWebGL) GLOBAL_DATA.ExtSupported.texDepth = true; - if (strcmp(extList[i], (const char *)"GL_OES_depth24") == 0) RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits = 24; // Not available on WebGL - if (strcmp(extList[i], (const char *)"GL_OES_depth32") == 0) RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits = 32; // Not available on WebGL + if (strcmp(extList[i], (const char *)"GL_OES_depth24") == 0) GLOBAL_DATA.ExtSupported.maxDepthBits = 24; // Not available on WebGL + if (strcmp(extList[i], (const char *)"GL_OES_depth32") == 0) GLOBAL_DATA.ExtSupported.maxDepthBits = 32; // Not available on WebGL // Check texture compression support: DXT if ((strcmp(extList[i], (const char *)"GL_EXT_texture_compression_s3tc") == 0) || (strcmp(extList[i], (const char *)"GL_WEBGL_compressed_texture_s3tc") == 0) || - (strcmp(extList[i], (const char *)"GL_WEBKIT_WEBGL_compressed_texture_s3tc") == 0)) RLGL_GLOBAL_DATA.ExtSupported.texCompDXT = true; + (strcmp(extList[i], (const char *)"GL_WEBKIT_WEBGL_compressed_texture_s3tc") == 0)) GLOBAL_DATA.ExtSupported.texCompDXT = true; // Check texture compression support: ETC1 if ((strcmp(extList[i], (const char *)"GL_OES_compressed_ETC1_RGB8_texture") == 0) || - (strcmp(extList[i], (const char *)"GL_WEBGL_compressed_texture_etc1") == 0)) RLGL_GLOBAL_DATA.ExtSupported.texCompETC1 = true; + (strcmp(extList[i], (const char *)"GL_WEBGL_compressed_texture_etc1") == 0)) GLOBAL_DATA.ExtSupported.texCompETC1 = true; // Check texture compression support: ETC2/EAC - if (strcmp(extList[i], (const char *)"GL_ARB_ES3_compatibility") == 0) RLGL_GLOBAL_DATA.ExtSupported.texCompETC2 = true; + if (strcmp(extList[i], (const char *)"GL_ARB_ES3_compatibility") == 0) GLOBAL_DATA.ExtSupported.texCompETC2 = true; // Check texture compression support: PVR - if (strcmp(extList[i], (const char *)"GL_IMG_texture_compression_pvrtc") == 0) RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT = true; + if (strcmp(extList[i], (const char *)"GL_IMG_texture_compression_pvrtc") == 0) GLOBAL_DATA.ExtSupported.texCompPVRT = true; // Check texture compression support: ASTC - if (strcmp(extList[i], (const char *)"GL_KHR_texture_compression_astc_hdr") == 0) RLGL_GLOBAL_DATA.ExtSupported.texCompASTC = true; + if (strcmp(extList[i], (const char *)"GL_KHR_texture_compression_astc_hdr") == 0) GLOBAL_DATA.ExtSupported.texCompASTC = true; // Check anisotropic texture filter support - if (strcmp(extList[i], (const char *)"GL_EXT_texture_filter_anisotropic") == 0) RLGL_GLOBAL_DATA.ExtSupported.texAnisoFilter = true; + if (strcmp(extList[i], (const char *)"GL_EXT_texture_filter_anisotropic") == 0) GLOBAL_DATA.ExtSupported.texAnisoFilter = true; // Check clamp mirror wrap mode support - if (strcmp(extList[i], (const char *)"GL_EXT_texture_mirror_clamp") == 0) RLGL_GLOBAL_DATA.ExtSupported.texMirrorClamp = true; + if (strcmp(extList[i], (const char *)"GL_EXT_texture_mirror_clamp") == 0) GLOBAL_DATA.ExtSupported.texMirrorClamp = true; } // Free extensions pointers @@ -2400,156 +2439,156 @@ void RLGL_LoadExtensions(void *loader) // Check OpenGL information and capabilities //------------------------------------------------------------------------------ // Show current OpenGL and GLSL version - RL_TRACELOG(RL_LOG_INFO, "GL: OpenGL device information:"); - RL_TRACELOG(RL_LOG_INFO, " > Vendor: %s", glGetString(GL_VENDOR)); - RL_TRACELOG(RL_LOG_INFO, " > Renderer: %s", glGetString(GL_RENDERER)); - RL_TRACELOG(RL_LOG_INFO, " > Version: %s", glGetString(GL_VERSION)); - RL_TRACELOG(RL_LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION)); + RL_TRACELOG(LOG_INFO, "GL: OpenGL device information:"); + RL_TRACELOG(LOG_INFO, " > Vendor: %s", glGetString(GL_VENDOR)); + RL_TRACELOG(LOG_INFO, " > Renderer: %s", glGetString(GL_RENDERER)); + RL_TRACELOG(LOG_INFO, " > Version: %s", glGetString(GL_VERSION)); + RL_TRACELOG(LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION)); #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // NOTE: Anisotropy levels capability is an extension #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif - glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); + glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); #if defined(RLGL_SHOW_GL_DETAILS_INFO) // Show some OpenGL GPU capabilities - RL_TRACELOG(RL_LOG_INFO, "GL: OpenGL capabilities:"); + RL_TRACELOG(LOG_INFO, "GL: OpenGL capabilities:"); GLint capability = 0; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_SIZE: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_TEXTURE_SIZE: %i", capability); glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_CUBE_MAP_TEXTURE_SIZE: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_CUBE_MAP_TEXTURE_SIZE: %i", capability); glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_IMAGE_UNITS: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_TEXTURE_IMAGE_UNITS: %i", capability); glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_VERTEX_ATTRIBS: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_VERTEX_ATTRIBS: %i", capability); #if !defined(GRAPHICS_API_OPENGL_ES2) glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_UNIFORM_BLOCK_SIZE: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_UNIFORM_BLOCK_SIZE: %i", capability); glGetIntegerv(GL_MAX_DRAW_BUFFERS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_DRAW_BUFFERS: %i", capability); - if (RLGL_GLOBAL_DATA.ExtSupported.texAnisoFilter) RL_TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_MAX_ANISOTROPY: %.0f", RLGL_GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); + RL_TRACELOG(LOG_INFO, " GL_MAX_DRAW_BUFFERS: %i", capability); + if (GLOBAL_DATA.ExtSupported.texAnisoFilter) RL_TRACELOG(LOG_INFO, " GL_MAX_TEXTURE_MAX_ANISOTROPY: %.0f", GLOBAL_DATA.ExtSupported.maxAnisotropyLevel); #endif glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_NUM_COMPRESSED_TEXTURE_FORMATS: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_NUM_COMPRESSED_TEXTURE_FORMATS: %i", capability); GLint *compFormats = (GLint *)RL_CALLOC(capability, sizeof(GLint)); glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, compFormats); - for (int i = 0; i < capability; i++) RL_TRACELOG(RL_LOG_INFO, " %s", RLGL_GetCompressedFormatName(compFormats[i])); + for (int i = 0; i < capability; i++) RL_TRACELOG(LOG_INFO, " %s", GetCompressedFormatName(compFormats[i])); RL_FREE(compFormats); #if defined(GRAPHICS_API_OPENGL_43) glGetIntegerv(GL_MAX_VERTEX_ATTRIB_BINDINGS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_VERTEX_ATTRIB_BINDINGS: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_VERTEX_ATTRIB_BINDINGS: %i", capability); glGetIntegerv(GL_MAX_UNIFORM_LOCATIONS, &capability); - RL_TRACELOG(RL_LOG_INFO, " GL_MAX_UNIFORM_LOCATIONS: %i", capability); + RL_TRACELOG(LOG_INFO, " GL_MAX_UNIFORM_LOCATIONS: %i", capability); #endif // GRAPHICS_API_OPENGL_43 #else // RLGL_SHOW_GL_DETAILS_INFO // Show some basic info about GL supported features - if (RLGL_GLOBAL_DATA.ExtSupported.vao) RL_TRACELOG(RL_LOG_INFO, "GL: VAO extension detected, VAO functions loaded successfully"); - else RL_TRACELOG(RL_LOG_WARNING, "GL: VAO extension not found, VAO not supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.texNPOT) RL_TRACELOG(RL_LOG_INFO, "GL: NPOT textures extension detected, full NPOT textures supported"); - else RL_TRACELOG(RL_LOG_WARNING, "GL: NPOT textures extension not found, limited NPOT support (no-mipmaps, no-repeat)"); - if (RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) RL_TRACELOG(RL_LOG_INFO, "GL: DXT compressed textures supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.texCompETC1) RL_TRACELOG(RL_LOG_INFO, "GL: ETC1 compressed textures supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.texCompETC2) RL_TRACELOG(RL_LOG_INFO, "GL: ETC2/EAC compressed textures supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT) RL_TRACELOG(RL_LOG_INFO, "GL: PVRT compressed textures supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.texCompASTC) RL_TRACELOG(RL_LOG_INFO, "GL: ASTC compressed textures supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.computeShader) RL_TRACELOG(RL_LOG_INFO, "GL: Compute shaders supported"); - if (RLGL_GLOBAL_DATA.ExtSupported.ssbo) RL_TRACELOG(RL_LOG_INFO, "GL: Shader storage buffer objects supported"); + if (GLOBAL_DATA.ExtSupported.vao) RL_TRACELOG(LOG_INFO, "GL: VAO extension detected, VAO functions loaded successfully"); + else RL_TRACELOG(LOG_WARNING, "GL: VAO extension not found, VAO not supported"); + if (GLOBAL_DATA.ExtSupported.texNPOT) RL_TRACELOG(LOG_INFO, "GL: NPOT textures extension detected, full NPOT textures supported"); + else RL_TRACELOG(LOG_WARNING, "GL: NPOT textures extension not found, limited NPOT support (no-mipmaps, no-repeat)"); + if (GLOBAL_DATA.ExtSupported.texCompDXT) RL_TRACELOG(LOG_INFO, "GL: DXT compressed textures supported"); + if (GLOBAL_DATA.ExtSupported.texCompETC1) RL_TRACELOG(LOG_INFO, "GL: ETC1 compressed textures supported"); + if (GLOBAL_DATA.ExtSupported.texCompETC2) RL_TRACELOG(LOG_INFO, "GL: ETC2/EAC compressed textures supported"); + if (GLOBAL_DATA.ExtSupported.texCompPVRT) RL_TRACELOG(LOG_INFO, "GL: PVRT compressed textures supported"); + if (GLOBAL_DATA.ExtSupported.texCompASTC) RL_TRACELOG(LOG_INFO, "GL: ASTC compressed textures supported"); + if (GLOBAL_DATA.ExtSupported.computeShader) RL_TRACELOG(LOG_INFO, "GL: Compute shaders supported"); + if (GLOBAL_DATA.ExtSupported.ssbo) RL_TRACELOG(LOG_INFO, "GL: Shader storage buffer objects supported"); #endif // RLGL_SHOW_GL_DETAILS_INFO #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 } // Get current OpenGL version -int RLGL_GetVersion(void) +int get_version(void) { int glVersion = 0; #if defined(GRAPHICS_API_OPENGL_11) - glVersion = RLGL_OPENGL_11; + glVersion = RL_OPENGL_11; #endif #if defined(GRAPHICS_API_OPENGL_21) - glVersion = RLGL_OPENGL_21; + glVersion = RL_OPENGL_21; #elif defined(GRAPHICS_API_OPENGL_43) - glVersion = RLGL_OPENGL_43; + glVersion = RL_OPENGL_43; #elif defined(GRAPHICS_API_OPENGL_33) - glVersion = RLGL_OPENGL_33; + glVersion = RL_OPENGL_33; #endif #if defined(GRAPHICS_API_OPENGL_ES3) - glVersion = RLGL_OPENGL_ES_30; + glVersion = RL_OPENGL_ES_30; #elif defined(GRAPHICS_API_OPENGL_ES2) - glVersion = RLGL_OPENGL_ES_20; + glVersion = RL_OPENGL_ES_20; #endif return glVersion; } // Set current framebuffer width -void RLGL_SetFramebufferWidth(int width) +void set_framebuffer_width(int width) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.framebufferWidth = width; + GLOBAL_DATA.State.framebufferWidth = width; #endif } // Set current framebuffer height -void RLGL_SetFramebufferHeight(int height) +void set_framebuffer_height(int height) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.framebufferHeight = height; + GLOBAL_DATA.State.framebufferHeight = height; #endif } // Get default framebuffer width -int RLGL_GetFramebufferWidth(void) +int get_framebuffer_width(void) { int width = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - width = RLGL_GLOBAL_DATA.State.framebufferWidth; + width = GLOBAL_DATA.State.framebufferWidth; #endif return width; } // Get default framebuffer height -int RLGL_GetFramebufferHeight(void) +int get_framebuffer_height(void) { int height = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - height = RLGL_GLOBAL_DATA.State.framebufferHeight; + height = GLOBAL_DATA.State.framebufferHeight; #endif return height; } // Get default internal texture (white texture) // NOTE: Default texture is a 1x1 pixel UNCOMPRESSED_R8G8B8A8 -unsigned int RLGL_GetTextureIdDefault(void) +unsigned int get_texture_id_default(void) { unsigned int id = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - id = RLGL_GLOBAL_DATA.State.defaultTextureId; + id = GLOBAL_DATA.State.defaultTextureId; #endif return id; } // Get default shader id -unsigned int RLGL_GetShaderIdDefault(void) +unsigned int get_shader_id_default(void) { unsigned int id = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - id = RLGL_GLOBAL_DATA.State.defaultShaderId; + id = GLOBAL_DATA.State.defaultShaderId; #endif return id; } // Get default shader locs -int *RLGL_GetShaderLocsDefault(void) +int *get_shader_locs_default(void) { int *locs = NULL; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - locs = RLGL_GLOBAL_DATA.State.defaultShaderLocs; + locs = GLOBAL_DATA.State.defaultShaderLocs; #endif return locs; } @@ -2557,14 +2596,14 @@ int *RLGL_GetShaderLocsDefault(void) // Render batch management //------------------------------------------------------------------------------------------------ // Load render batch -RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) +render_batch load_render_batch(int numBuffers, int bufferElements) { - RLGL_RenderBatch batch = { 0 }; + render_batch batch = { 0 }; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Initialize CPU (RAM) vertex buffers (position, texcoord, color data and indexes) //-------------------------------------------------------------------------------------------- - batch.vertexBuffer = (RLGL_VertexBuffer *)RL_MALLOC(numBuffers*sizeof(RLGL_VertexBuffer)); + batch.vertexBuffer = (vertex_buffer *)RL_MALLOC(numBuffers*sizeof(vertex_buffer)); for (int i = 0; i < numBuffers; i++) { @@ -2599,17 +2638,17 @@ RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) k++; } - RLGL_GLOBAL_DATA.State.vertexCounter = 0; + GLOBAL_DATA.State.vertexCounter = 0; } - RL_TRACELOG(RL_LOG_INFO, "RLGL_GLOBAL_DATA: Render batch vertex buffers loaded successfully in RAM (CPU)"); + RL_TRACELOG(LOG_INFO, "GLOBAL_DATA: Render batch vertex buffers loaded successfully in RAM (CPU)"); //-------------------------------------------------------------------------------------------- // Upload to GPU (VRAM) vertex data and initialize VAOs/VBOs //-------------------------------------------------------------------------------------------- for (int i = 0; i < numBuffers; i++) { - if (RLGL_GLOBAL_DATA.ExtSupported.vao) + if (GLOBAL_DATA.ExtSupported.vao) { // Initialize Quads VAO glGenVertexArrays(1, &batch.vertexBuffer[i].vaoId); @@ -2621,22 +2660,22 @@ RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) glGenBuffers(1, &batch.vertexBuffer[i].vboId[0]); glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[0]); glBufferData(GL_ARRAY_BUFFER, bufferElements*3*4*sizeof(float), batch.vertexBuffer[i].vertices, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_POSITION]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); // Vertex texcoord buffer (shader-location = 1) glGenBuffers(1, &batch.vertexBuffer[i].vboId[1]); glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[1]); glBufferData(GL_ARRAY_BUFFER, bufferElements*2*4*sizeof(float), batch.vertexBuffer[i].texcoords, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_TEXCOORD01]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); // Vertex color buffer (shader-location = 3) glGenBuffers(1, &batch.vertexBuffer[i].vboId[2]); glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[2]); glBufferData(GL_ARRAY_BUFFER, bufferElements*4*4*sizeof(unsigned char), batch.vertexBuffer[i].colors, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_COLOR]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); // Fill index buffer glGenBuffers(1, &batch.vertexBuffer[i].vboId[3]); @@ -2649,15 +2688,15 @@ RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) #endif } - RL_TRACELOG(RL_LOG_INFO, "RLGL_GLOBAL_DATA: Render batch vertex buffers loaded successfully in VRAM (GPU)"); + RL_TRACELOG(LOG_INFO, "GLOBAL_DATA: Render batch vertex buffers loaded successfully in VRAM (GPU)"); // Unbind the current VAO - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); //-------------------------------------------------------------------------------------------- // Init draw calls tracking system //-------------------------------------------------------------------------------------------- - batch.draws = (RLGL_DrawCall *)RL_MALLOC(RL_DEFAULT_BATCH_DRAWCALLS*sizeof(RLGL_DrawCall)); + batch.draws = (draw_call *)RL_MALLOC(RL_DEFAULT_BATCH_DRAWCALLS*sizeof(draw_call)); for (int i = 0; i < RL_DEFAULT_BATCH_DRAWCALLS; i++) { @@ -2666,9 +2705,9 @@ RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) batch.draws[i].vertexAlignment = 0; //batch.draws[i].vaoId = 0; //batch.draws[i].shaderId = 0; - batch.draws[i].textureId = RLGL_GLOBAL_DATA.State.defaultTextureId; - //batch.draws[i].RLGL_GLOBAL_DATA.State.projection = RLGL_MatrixIdentity(); - //batch.draws[i].RLGL_GLOBAL_DATA.State.modelview = RLGL_MatrixIdentity(); + batch.draws[i].textureId = GLOBAL_DATA.State.defaultTextureId; + //batch.draws[i].GLOBAL_DATA.State.projection = internal_matrix_identity(); + //batch.draws[i].GLOBAL_DATA.State.modelview = internal_matrix_identity(); } batch.bufferCount = numBuffers; // Record buffer count @@ -2681,7 +2720,7 @@ RLGL_RenderBatch RLGL_LoadRenderBatch(int numBuffers, int bufferElements) } // Unload default internal buffers vertex data from CPU and GPU -void RLGL_UnloadRenderBatch(RLGL_RenderBatch batch) +void unload_render_batch(render_batch batch) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Unbind everything @@ -2692,7 +2731,7 @@ void RLGL_UnloadRenderBatch(RLGL_RenderBatch batch) for (int i = 0; i < batch.bufferCount; i++) { // Unbind VAO attribs data - if (RLGL_GLOBAL_DATA.ExtSupported.vao) + if (GLOBAL_DATA.ExtSupported.vao) { glBindVertexArray(batch.vertexBuffer[i].vaoId); glDisableVertexAttribArray(0); @@ -2709,7 +2748,7 @@ void RLGL_UnloadRenderBatch(RLGL_RenderBatch batch) glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[3]); // Delete VAOs from GPU (VRAM) - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glDeleteVertexArrays(1, &batch.vertexBuffer[i].vaoId); + if (GLOBAL_DATA.ExtSupported.vao) glDeleteVertexArrays(1, &batch.vertexBuffer[i].vaoId); // Free vertex arrays memory from CPU (RAM) RL_FREE(batch.vertexBuffer[i].vertices); @@ -2726,31 +2765,31 @@ void RLGL_UnloadRenderBatch(RLGL_RenderBatch batch) // Draw render batch // NOTE: We require a pointer to reset batch and increase current buffer (multi-buffer) -void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch) +void draw_render_batch(render_batch *batch) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Update batch vertex buffers //------------------------------------------------------------------------------------------------------------ // NOTE: If there is not vertex data, buffers doesn't need to be updated (vertexCount > 0) // TODO: If no data changed on the CPU arrays --> No need to re-update GPU arrays (use a change detector flag?) - if (RLGL_GLOBAL_DATA.State.vertexCounter > 0) + if (GLOBAL_DATA.State.vertexCounter > 0) { // Activate elements VAO - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); // Vertex positions buffer glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); - glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL_GLOBAL_DATA.State.vertexCounter*3*sizeof(float), batch->vertexBuffer[batch->currentBuffer].vertices); + glBufferSubData(GL_ARRAY_BUFFER, 0, GLOBAL_DATA.State.vertexCounter*3*sizeof(float), batch->vertexBuffer[batch->currentBuffer].vertices); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].vertices, GL_DYNAMIC_DRAW); // Update all buffer // Texture coordinates buffer glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); - glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL_GLOBAL_DATA.State.vertexCounter*2*sizeof(float), batch->vertexBuffer[batch->currentBuffer].texcoords); + glBufferSubData(GL_ARRAY_BUFFER, 0, GLOBAL_DATA.State.vertexCounter*2*sizeof(float), batch->vertexBuffer[batch->currentBuffer].texcoords); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].texcoords, GL_DYNAMIC_DRAW); // Update all buffer // Colors buffer glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); - glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL_GLOBAL_DATA.State.vertexCounter*4*sizeof(unsigned char), batch->vertexBuffer[batch->currentBuffer].colors); + glBufferSubData(GL_ARRAY_BUFFER, 0, GLOBAL_DATA.State.vertexCounter*4*sizeof(unsigned char), batch->vertexBuffer[batch->currentBuffer].colors); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].colors, GL_DYNAMIC_DRAW); // Update all buffer // NOTE: glMapBuffer() causes sync issue. @@ -2769,80 +2808,80 @@ void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch) // glUnmapBuffer(GL_ARRAY_BUFFER); // Unbind the current VAO - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); } //------------------------------------------------------------------------------------------------------------ // Draw batch vertex buffers (considering VR stereo if required) //------------------------------------------------------------------------------------------------------------ - RL_Matrix matProjection = RLGL_GLOBAL_DATA.State.projection; - RL_Matrix matModelView = RLGL_GLOBAL_DATA.State.modelview; + Matrix matProjection = GLOBAL_DATA.State.projection; + Matrix matModelView = GLOBAL_DATA.State.modelview; int eyeCount = 1; - if (RLGL_GLOBAL_DATA.State.stereoRender) eyeCount = 2; + if (GLOBAL_DATA.State.stereoRender) eyeCount = 2; for (int eye = 0; eye < eyeCount; eye++) { if (eyeCount == 2) { // Setup current eye viewport (half screen width) - RLGL_Viewport(eye*RLGL_GLOBAL_DATA.State.framebufferWidth/2, 0, RLGL_GLOBAL_DATA.State.framebufferWidth/2, RLGL_GLOBAL_DATA.State.framebufferHeight); + viewport(eye*GLOBAL_DATA.State.framebufferWidth/2, 0, GLOBAL_DATA.State.framebufferWidth/2, GLOBAL_DATA.State.framebufferHeight); // Set current eye view offset to modelview matrix - RLGL_SetMatrixModelview(RLGL_MatrixMultiply(matModelView, RLGL_GLOBAL_DATA.State.viewOffsetStereo[eye])); + set_matrix_modelview(internal_matrix_multiply(matModelView, GLOBAL_DATA.State.viewOffsetStereo[eye])); // Set current eye projection matrix - RLGL_SetMatrixProjection(RLGL_GLOBAL_DATA.State.projectionStereo[eye]); + set_matrix_projection(GLOBAL_DATA.State.projectionStereo[eye]); } // Draw buffers - if (RLGL_GLOBAL_DATA.State.vertexCounter > 0) + if (GLOBAL_DATA.State.vertexCounter > 0) { // Set current shader and upload current MVP matrix - glUseProgram(RLGL_GLOBAL_DATA.State.currentShaderId); + glUseProgram(GLOBAL_DATA.State.currentShaderId); // Create modelview-projection matrix and upload to shader - RL_Matrix matMVP = RLGL_MatrixMultiply(RLGL_GLOBAL_DATA.State.modelview, RLGL_GLOBAL_DATA.State.projection); + Matrix matMVP = internal_matrix_multiply(GLOBAL_DATA.State.modelview, GLOBAL_DATA.State.projection); float matMVPfloat[16] = { matMVP.m0, matMVP.m1, matMVP.m2, matMVP.m3, matMVP.m4, matMVP.m5, matMVP.m6, matMVP.m7, matMVP.m8, matMVP.m9, matMVP.m10, matMVP.m11, matMVP.m12, matMVP.m13, matMVP.m14, matMVP.m15 }; - glUniformMatrix4fv(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_MVP], 1, false, matMVPfloat); + glUniformMatrix4fv(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_MATRIX_MVP], 1, false, matMVPfloat); - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); else { // Bind vertex attrib: position (shader-location = 0) glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_POSITION]); // Bind vertex attrib: texcoord (shader-location = 1) glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_TEXCOORD01]); // Bind vertex attrib: color (shader-location = 3) glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); - glVertexAttribPointer(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR]); + glVertexAttribPointer(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_VERTEX_COLOR]); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[3]); } // Setup some default shader values - glUniform4f(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_COLOR_DIFFUSE], 1.0f, 1.0f, 1.0f, 1.0f); - glUniform1i(RLGL_GLOBAL_DATA.State.currentShaderLocs[RL_SHADER_LOC_MAP_DIFFUSE], 0); // Active default sampler2D: texture0 + glUniform4f(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_COLOR_DIFFUSE], 1.0f, 1.0f, 1.0f, 1.0f); + glUniform1i(GLOBAL_DATA.State.currentShaderLocs[SHADER_LOC_MAP_DIFFUSE], 0); // Active default sampler2D: texture0 // Activate additional sampler textures // Those additional textures will be common for all draw calls of the batch for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) { - if (RLGL_GLOBAL_DATA.State.activeTextureId[i] > 0) + if (GLOBAL_DATA.State.activeTextureId[i] > 0) { glActiveTexture(GL_TEXTURE0 + 1 + i); - glBindTexture(GL_TEXTURE_2D, RLGL_GLOBAL_DATA.State.activeTextureId[i]); + glBindTexture(GL_TEXTURE_2D, GLOBAL_DATA.State.activeTextureId[i]); } } @@ -2872,7 +2911,7 @@ void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch) vertexOffset += (batch->draws[i].vertexCount + batch->draws[i].vertexAlignment); } - if (!RLGL_GLOBAL_DATA.ExtSupported.vao) + if (!GLOBAL_DATA.ExtSupported.vao) { glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); @@ -2881,37 +2920,37 @@ void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch) glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures } - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); // Unbind VAO + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); // Unbind VAO glUseProgram(0); // Unbind shader program } // Restore viewport to default measures - if (eyeCount == 2) RLGL_Viewport(0, 0, RLGL_GLOBAL_DATA.State.framebufferWidth, RLGL_GLOBAL_DATA.State.framebufferHeight); + if (eyeCount == 2) viewport(0, 0, GLOBAL_DATA.State.framebufferWidth, GLOBAL_DATA.State.framebufferHeight); //------------------------------------------------------------------------------------------------------------ // Reset batch buffers //------------------------------------------------------------------------------------------------------------ // Reset vertex counter for next frame - RLGL_GLOBAL_DATA.State.vertexCounter = 0; + GLOBAL_DATA.State.vertexCounter = 0; // Reset depth for next draw batch->currentDepth = -1.0f; // Restore projection/modelview matrices - RLGL_GLOBAL_DATA.State.projection = matProjection; - RLGL_GLOBAL_DATA.State.modelview = matModelView; + GLOBAL_DATA.State.projection = matProjection; + GLOBAL_DATA.State.modelview = matModelView; - // Reset RLGL_GLOBAL_DATA.currentBatch->draws array + // Reset GLOBAL_DATA.currentBatch->draws array for (int i = 0; i < RL_DEFAULT_BATCH_DRAWCALLS; i++) { batch->draws[i].mode = RL_QUADS; batch->draws[i].vertexCount = 0; - batch->draws[i].textureId = RLGL_GLOBAL_DATA.State.defaultTextureId; + batch->draws[i].textureId = GLOBAL_DATA.State.defaultTextureId; } // Reset active texture units for next batch - for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) RLGL_GLOBAL_DATA.State.activeTextureId[i] = 0; + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) GLOBAL_DATA.State.activeTextureId[i] = 0; // Reset draws counter to one draw for the batch batch->drawCounter = 1; @@ -2923,46 +2962,46 @@ void RLGL_DrawRenderBatch(RLGL_RenderBatch *batch) #endif } -// Set the active render batch for RLGL_gl -void RLGL_SetRenderBatchActive(RLGL_RenderBatch *batch) +// Set the active render batch for rlgl +void set_render_batch_active(render_batch *batch) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); + draw_render_batch(GLOBAL_DATA.currentBatch); - if (batch != NULL) RLGL_GLOBAL_DATA.currentBatch = batch; - else RLGL_GLOBAL_DATA.currentBatch = &RLGL_GLOBAL_DATA.defaultBatch; + if (batch != NULL) GLOBAL_DATA.currentBatch = batch; + else GLOBAL_DATA.currentBatch = &GLOBAL_DATA.defaultBatch; #endif } // Update and draw internal render batch -void RLGL_DrawRenderBatchActive(void) +void draw_render_batch_active(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); // NOTE: Stereo rendering is checked inside + draw_render_batch(GLOBAL_DATA.currentBatch); // NOTE: Stereo rendering is checked inside #endif } // Check internal buffer overflow for a given number of vertex -// and force a RLGL_RenderBatch draw call if required -bool RLGL_CheckRenderBatchLimit(int vCount) +// and force a render_batch draw call if required +bool check_render_batch_limit(int vCount) { bool overflow = false; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if ((RLGL_GLOBAL_DATA.State.vertexCounter + vCount) >= - (RLGL_GLOBAL_DATA.currentBatch->vertexBuffer[RLGL_GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4)) + if ((GLOBAL_DATA.State.vertexCounter + vCount) >= + (GLOBAL_DATA.currentBatch->vertexBuffer[GLOBAL_DATA.currentBatch->currentBuffer].elementCount*4)) { overflow = true; // Store current primitive drawing mode and texture id - int currentMode = RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode; - int currentTexture = RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].textureId; + int currentMode = GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode; + int currentTexture = GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].textureId; - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); // NOTE: Stereo rendering is checked inside + draw_render_batch(GLOBAL_DATA.currentBatch); // NOTE: Stereo rendering is checked inside // Restore state of last batch so we can continue adding vertices - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].mode = currentMode; - RLGL_GLOBAL_DATA.currentBatch->draws[RLGL_GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = currentTexture; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].mode = currentMode; + GLOBAL_DATA.currentBatch->draws[GLOBAL_DATA.currentBatch->drawCounter - 1].textureId = currentTexture; } #endif @@ -2972,7 +3011,7 @@ bool RLGL_CheckRenderBatchLimit(int vCount) // Textures data management //----------------------------------------------------------------------------------------- // Convert image data to OpenGL texture (returns OpenGL valid Id) -unsigned int RLGL_LoadTexture(const void *data, int width, int height, int format, int mipmapCount) +unsigned int load_texture(const void *data, int width, int height, int format, int mipmapCount) { unsigned int id = 0; @@ -2980,40 +3019,40 @@ unsigned int RLGL_LoadTexture(const void *data, int width, int height, int forma // Check texture format support by OpenGL 1.1 (compressed textures not supported) #if defined(GRAPHICS_API_OPENGL_11) - if (format >= RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) + if (format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) { - RL_TRACELOG(RL_LOG_WARNING, "GL: OpenGL 1.1 does not support GPU compressed texture formats"); + RL_TRACELOG(LOG_WARNING, "GL: OpenGL 1.1 does not support GPU compressed texture formats"); return id; } #else - if ((!RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) && ((format == RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA) || - (format == RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA) || (format == RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA))) + if ((!GLOBAL_DATA.ExtSupported.texCompDXT) && ((format == PIXELFORMAT_COMPRESSED_DXT1_RGB) || (format == PIXELFORMAT_COMPRESSED_DXT1_RGBA) || + (format == PIXELFORMAT_COMPRESSED_DXT3_RGBA) || (format == PIXELFORMAT_COMPRESSED_DXT5_RGBA))) { - RL_TRACELOG(RL_LOG_WARNING, "GL: DXT compressed texture format not supported"); + RL_TRACELOG(LOG_WARNING, "GL: DXT compressed texture format not supported"); return id; } #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if ((!RLGL_GLOBAL_DATA.ExtSupported.texCompETC1) && (format == RL_PIXELFORMAT_COMPRESSED_ETC1_RGB)) + if ((!GLOBAL_DATA.ExtSupported.texCompETC1) && (format == PIXELFORMAT_COMPRESSED_ETC1_RGB)) { - RL_TRACELOG(RL_LOG_WARNING, "GL: ETC1 compressed texture format not supported"); + RL_TRACELOG(LOG_WARNING, "GL: ETC1 compressed texture format not supported"); return id; } - if ((!RLGL_GLOBAL_DATA.ExtSupported.texCompETC2) && ((format == RL_PIXELFORMAT_COMPRESSED_ETC2_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA))) + if ((!GLOBAL_DATA.ExtSupported.texCompETC2) && ((format == PIXELFORMAT_COMPRESSED_ETC2_RGB) || (format == PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA))) { - RL_TRACELOG(RL_LOG_WARNING, "GL: ETC2 compressed texture format not supported"); + RL_TRACELOG(LOG_WARNING, "GL: ETC2 compressed texture format not supported"); return id; } - if ((!RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT) && ((format == RL_PIXELFORMAT_COMPRESSED_PVRT_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA))) + if ((!GLOBAL_DATA.ExtSupported.texCompPVRT) && ((format == PIXELFORMAT_COMPRESSED_PVRT_RGB) || (format == PIXELFORMAT_COMPRESSED_PVRT_RGBA))) { - RL_TRACELOG(RL_LOG_WARNING, "GL: PVRT compressed texture format not supported"); + RL_TRACELOG(LOG_WARNING, "GL: PVRT compressed texture format not supported"); return id; } - if ((!RLGL_GLOBAL_DATA.ExtSupported.texCompASTC) && ((format == RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA) || (format == RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA))) + if ((!GLOBAL_DATA.ExtSupported.texCompASTC) && ((format == PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA) || (format == PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA))) { - RL_TRACELOG(RL_LOG_WARNING, "GL: ASTC compressed texture format not supported"); + RL_TRACELOG(LOG_WARNING, "GL: ASTC compressed texture format not supported"); return id; } #endif @@ -3036,27 +3075,27 @@ unsigned int RLGL_LoadTexture(const void *data, int width, int height, int forma // Load the different mipmap levels for (int i = 0; i < mipmapCount; i++) { - unsigned int mipSize = RLGL_GetPixelDataSize(mipWidth, mipHeight, format); + unsigned int mipSize = internal_get_pixel_data_size(mipWidth, mipHeight, format); unsigned int glInternalFormat, glFormat, glType; - RLGL_GetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + get_gl_texture_formats(format, &glInternalFormat, &glFormat, &glType); TRACELOGD("TEXTURE: Load mipmap level %i (%i x %i), size: %i, offset: %i", i, mipWidth, mipHeight, mipSize, mipOffset); if (glInternalFormat != 0) { - if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, glFormat, glType, dataPtr); + if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, glFormat, glType, dataPtr); #if !defined(GRAPHICS_API_OPENGL_11) else glCompressedTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, mipSize, dataPtr); #endif #if defined(GRAPHICS_API_OPENGL_33) - if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) + if (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) { GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); } - else if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) + else if (format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) { #if defined(GRAPHICS_API_OPENGL_21) GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; @@ -3082,7 +3121,7 @@ unsigned int RLGL_LoadTexture(const void *data, int width, int height, int forma // NOTE: glTexParameteri does NOT affect texture uploading, just the way it's used #if defined(GRAPHICS_API_OPENGL_ES2) // NOTE: OpenGL ES 2.0 with no GL_OES_texture_npot support (i.e. WebGL) has limited NPOT support, so CLAMP_TO_EDGE must be used - if (RLGL_GLOBAL_DATA.ExtSupported.texNPOT) + if (GLOBAL_DATA.ExtSupported.texNPOT) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // Set texture to repeat on x-axis glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // Set texture to repeat on y-axis @@ -3118,21 +3157,21 @@ unsigned int RLGL_LoadTexture(const void *data, int width, int height, int forma // Unbind current texture glBindTexture(GL_TEXTURE_2D, 0); - if (id > 0) RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Texture loaded successfully (%ix%i | %s | %i mipmaps)", id, width, height, RLGL_GetPixelFormatName(format), mipmapCount); - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load texture"); + if (id > 0) RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Texture loaded successfully (%ix%i | %s | %i mipmaps)", id, width, height, get_pixel_format_name(format), mipmapCount); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: Failed to load texture"); return id; } // Load depth texture/renderbuffer (to be attached to fbo) // WARNING: OpenGL ES 2.0 requires GL_OES_depth_texture and WebGL requires WEBGL_depth_texture extensions -unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer) +unsigned int load_texture_depth(int width, int height, bool useRenderBuffer) { unsigned int id = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // In case depth textures not supported, we force renderbuffer usage - if (!RLGL_GLOBAL_DATA.ExtSupported.texDepth) useRenderBuffer = true; + if (!GLOBAL_DATA.ExtSupported.texDepth) useRenderBuffer = true; // NOTE: We let the implementation to choose the best bit-depth // Possible formats: GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32 and GL_DEPTH_COMPONENT32F @@ -3141,15 +3180,15 @@ unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer) #if (defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_ES3)) // WARNING: WebGL platform requires unsized internal format definition (GL_DEPTH_COMPONENT) // while other platforms using OpenGL ES 2.0 require/support sized internal formats depending on the GPU capabilities - if (!RLGL_GLOBAL_DATA.ExtSupported.texDepthWebGL || useRenderBuffer) + if (!GLOBAL_DATA.ExtSupported.texDepthWebGL || useRenderBuffer) { - if (RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES; - else if (RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES; + if (GLOBAL_DATA.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES; + else if (GLOBAL_DATA.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES; else glInternalFormat = GL_DEPTH_COMPONENT16; } #endif - if (!useRenderBuffer && RLGL_GLOBAL_DATA.ExtSupported.texDepth) + if (!useRenderBuffer && GLOBAL_DATA.ExtSupported.texDepth) { glGenTextures(1, &id); glBindTexture(GL_TEXTURE_2D, id); @@ -3162,7 +3201,7 @@ unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer) glBindTexture(GL_TEXTURE_2D, 0); - RL_TRACELOG(RL_LOG_INFO, "TEXTURE: Depth texture loaded successfully"); + RL_TRACELOG(LOG_INFO, "TEXTURE: Depth texture loaded successfully"); } else { @@ -3174,7 +3213,7 @@ unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer) glBindRenderbuffer(GL_RENDERBUFFER, 0); - RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Depth renderbuffer loaded successfully (%i bits)", id, (RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits >= 24)? RLGL_GLOBAL_DATA.ExtSupported.maxDepthBits : 16); + RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Depth renderbuffer loaded successfully (%i bits)", id, (GLOBAL_DATA.ExtSupported.maxDepthBits >= 24)? GLOBAL_DATA.ExtSupported.maxDepthBits : 16); } #endif @@ -3184,18 +3223,18 @@ unsigned int RLGL_LoadTextureDepth(int width, int height, bool useRenderBuffer) // Load texture cubemap // NOTE: Cubemap data is expected to be 6 images in a single data array (one after the other), // expected the following convention: +X, -X, +Y, -Y, +Z, -Z -unsigned int RLGL_LoadTextureCubemap(const void *data, int size, int format) +unsigned int load_texture_cubemap(const void *data, int size, int format) { unsigned int id = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - unsigned int dataSize = RLGL_GetPixelDataSize(size, size, format); + unsigned int dataSize = internal_get_pixel_data_size(size, size, format); glGenTextures(1, &id); glBindTexture(GL_TEXTURE_CUBE_MAP, id); unsigned int glInternalFormat, glFormat, glType; - RLGL_GetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + get_gl_texture_formats(format, &glInternalFormat, &glFormat, &glType); if (glInternalFormat != 0) { @@ -3204,28 +3243,28 @@ unsigned int RLGL_LoadTextureCubemap(const void *data, int size, int format) { if (data == NULL) { - if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) + if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) { - if ((format == RL_PIXELFORMAT_UNCOMPRESSED_R32) || (format == RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32) - || (format == RL_PIXELFORMAT_UNCOMPRESSED_R16) || (format == RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16)) - RL_TRACELOG(RL_LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); + if ((format == PIXELFORMAT_UNCOMPRESSED_R32) || (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32A32) + || (format == PIXELFORMAT_UNCOMPRESSED_R16) || (format == PIXELFORMAT_UNCOMPRESSED_R16G16B16A16)) + RL_TRACELOG(LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); else glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, NULL); } - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURES: Empty cubemap creation does not support compressed format"); + else RL_TRACELOG(LOG_WARNING, "TEXTURES: Empty cubemap creation does not support compressed format"); } else { - if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, (unsigned char *)data + i*dataSize); + if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, (unsigned char *)data + i*dataSize); else glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, dataSize, (unsigned char *)data + i*dataSize); } #if defined(GRAPHICS_API_OPENGL_33) - if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) + if (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) { GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; glTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); } - else if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) + else if (format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) { #if defined(GRAPHICS_API_OPENGL_21) GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; @@ -3250,30 +3289,30 @@ unsigned int RLGL_LoadTextureCubemap(const void *data, int size, int format) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); #endif - if (id > 0) RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Cubemap texture loaded successfully (%ix%i)", id, size, size); - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load cubemap texture"); + if (id > 0) RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Cubemap texture loaded successfully (%ix%i)", id, size, size); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: Failed to load cubemap texture"); return id; } // Update already loaded texture in GPU with new data // NOTE: We don't know safely if internal texture format is the expected one... -void RLGL_UpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data) +void update_texture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data) { glBindTexture(GL_TEXTURE_2D, id); unsigned int glInternalFormat, glFormat, glType; - RLGL_GetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + get_gl_texture_formats(format, &glInternalFormat, &glFormat, &glType); - if ((glInternalFormat != 0) && (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB)) + if ((glInternalFormat != 0) && (format < PIXELFORMAT_COMPRESSED_DXT1_RGB)) { glTexSubImage2D(GL_TEXTURE_2D, 0, offsetX, offsetY, width, height, glFormat, glType, data); } - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Failed to update for current texture format (%i)", id, format); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: [ID %i] Failed to update for current texture format (%i)", id, format); } // Get OpenGL internal formats and data type from raylib PixelFormat -void RLGL_GetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType) +void get_gl_texture_formats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType) { *glInternalFormat = 0; *glFormat = 0; @@ -3283,77 +3322,77 @@ void RLGL_GetGlTextureFormats(int format, unsigned int *glInternalFormat, unsign { #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_ES2) // NOTE: on OpenGL ES 2.0 (WebGL), internalFormat must match format and options allowed are: GL_LUMINANCE, GL_RGB, GL_RGBA - case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_LUMINANCE_ALPHA; *glFormat = GL_LUMINANCE_ALPHA; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_LUMINANCE_ALPHA; *glFormat = GL_LUMINANCE_ALPHA; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; + case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; #if !defined(GRAPHICS_API_OPENGL_11) #if defined(GRAPHICS_API_OPENGL_ES3) - case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_R32F_EXT; *glFormat = GL_RED_EXT; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F_EXT; *glFormat = GL_RGB; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F_EXT; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_R16F_EXT; *glFormat = GL_RED_EXT; *glType = GL_HALF_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F_EXT; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F_EXT; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_R32F_EXT; *glFormat = GL_RED_EXT; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F_EXT; *glFormat = GL_RGB; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F_EXT; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_R16F_EXT; *glFormat = GL_RED_EXT; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F_EXT; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F_EXT; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; #else - case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case PIXELFORMAT_UNCOMPRESSED_R32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float #if defined(GRAPHICS_API_OPENGL_21) - case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_ARB; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_ARB; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_ARB; break; + case PIXELFORMAT_UNCOMPRESSED_R16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_ARB; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_ARB; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_ARB; break; #else // defined(GRAPHICS_API_OPENGL_ES2) - case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case PIXELFORMAT_UNCOMPRESSED_R16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float #endif #endif #endif #elif defined(GRAPHICS_API_OPENGL_33) - case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB565; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB8; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGB5_A1; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA4; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA8; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_R32F; *glFormat = GL_RED; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F; *glFormat = GL_RGB; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_R16F; *glFormat = GL_RED; *glType = GL_HALF_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL_GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB565; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB8; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGB5_A1; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; + case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA4; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA8; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; + case PIXELFORMAT_UNCOMPRESSED_R32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_R32F; *glFormat = GL_RED; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F; *glFormat = GL_RGB; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (GLOBAL_DATA.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_R16F; *glFormat = GL_RED; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (GLOBAL_DATA.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; #endif #if !defined(GRAPHICS_API_OPENGL_11) - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: if (RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; - case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; - case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; - case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: if (RLGL_GLOBAL_DATA.ExtSupported.texCompETC1) *glInternalFormat = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 - case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: if (RLGL_GLOBAL_DATA.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 - case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: if (RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU - case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 - case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: if (RLGL_GLOBAL_DATA.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case PIXELFORMAT_COMPRESSED_DXT1_RGB: if (GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; + case PIXELFORMAT_COMPRESSED_DXT1_RGBA: if (GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; + case PIXELFORMAT_COMPRESSED_DXT3_RGBA: if (GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; + case PIXELFORMAT_COMPRESSED_DXT5_RGBA: if (GLOBAL_DATA.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; + case PIXELFORMAT_COMPRESSED_ETC1_RGB: if (GLOBAL_DATA.ExtSupported.texCompETC1) *glInternalFormat = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 + case PIXELFORMAT_COMPRESSED_ETC2_RGB: if (GLOBAL_DATA.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: if (GLOBAL_DATA.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case PIXELFORMAT_COMPRESSED_PVRT_RGB: if (GLOBAL_DATA.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case PIXELFORMAT_COMPRESSED_PVRT_RGBA: if (GLOBAL_DATA.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: if (GLOBAL_DATA.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: if (GLOBAL_DATA.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 #endif - default: RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: Current format not supported (%i)", format); break; + default: RL_TRACELOG(LOG_WARNING, "TEXTURE: Current format not supported (%i)", format); break; } } // Unload texture from GPU memory -void RLGL_UnloadTexture(unsigned int id) +void unload_texture(unsigned int id) { glDeleteTextures(1, &id); } // Generate mipmap data for selected texture // NOTE: Only supports GPU mipmap generation -void RLGL_GenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps) +void gen_texture_mipmaps(unsigned int id, int width, int height, int format, int *mipmaps) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindTexture(GL_TEXTURE_2D, id); @@ -3364,7 +3403,7 @@ void RLGL_GenTextureMipmaps(unsigned int id, int width, int height, int format, if (((width > 0) && ((width & (width - 1)) == 0)) && ((height > 0) && ((height & (height - 1)) == 0))) texIsPOT = true; - if ((texIsPOT) || (RLGL_GLOBAL_DATA.ExtSupported.texNPOT)) + if ((texIsPOT) || (GLOBAL_DATA.ExtSupported.texNPOT)) { //glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); // Hint for mipmaps generation algorithm: GL_FASTEST, GL_NICEST, GL_DONT_CARE glGenerateMipmap(GL_TEXTURE_2D); // Generate mipmaps automatically @@ -3373,19 +3412,19 @@ void RLGL_GenTextureMipmaps(unsigned int id, int width, int height, int format, #define MAX(a,b) (((a)>(b))? (a):(b)) *mipmaps = 1 + (int)floor(log(MAX(width, height))/log(2)); - RL_TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Mipmaps generated automatically, total: %i", id, *mipmaps); + RL_TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Mipmaps generated automatically, total: %i", id, *mipmaps); } - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Failed to generate mipmaps", id); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: [ID %i] Failed to generate mipmaps", id); glBindTexture(GL_TEXTURE_2D, 0); #else - RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] GPU mipmap generation not supported", id); + RL_TRACELOG(LOG_WARNING, "TEXTURE: [ID %i] GPU mipmap generation not supported", id); #endif } // Read texture pixel data -void *RLGL_ReadTexturePixels(unsigned int id, int width, int height, int format) +void *read_texture_pixels(unsigned int id, int width, int height, int format) { void *pixels = NULL; @@ -3406,15 +3445,15 @@ void *RLGL_ReadTexturePixels(unsigned int id, int width, int height, int format) glPixelStorei(GL_PACK_ALIGNMENT, 1); unsigned int glInternalFormat, glFormat, glType; - RLGL_GetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); - unsigned int size = RLGL_GetPixelDataSize(width, height, format); + get_gl_texture_formats(format, &glInternalFormat, &glFormat, &glType); + unsigned int size = internal_get_pixel_data_size(width, height, format); - if ((glInternalFormat != 0) && (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB)) + if ((glInternalFormat != 0) && (format < PIXELFORMAT_COMPRESSED_DXT1_RGB)) { pixels = RL_MALLOC(size); glGetTexImage(GL_TEXTURE_2D, 0, glFormat, glType, pixels); } - else RL_TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Data retrieval not suported for pixel format (%i)", id, format); + else RL_TRACELOG(LOG_WARNING, "TEXTURE: [ID %i] Data retrieval not suported for pixel format (%i)", id, format); glBindTexture(GL_TEXTURE_2D, 0); #endif @@ -3427,7 +3466,7 @@ void *RLGL_ReadTexturePixels(unsigned int id, int width, int height, int format) // 2 - Create an fbo, activate it, render quad with texture, glReadPixels() // We are using Option 1, just need to care for texture format on retrieval // NOTE: This behaviour could be conditioned by graphic driver... - unsigned int fboId = RLGL_LoadFramebuffer(width, height); + unsigned int fboId = load_framebuffer(width, height); glBindFramebuffer(GL_FRAMEBUFFER, fboId); glBindTexture(GL_TEXTURE_2D, 0); @@ -3436,20 +3475,20 @@ void *RLGL_ReadTexturePixels(unsigned int id, int width, int height, int format) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, id, 0); // We read data as RGBA because FBO texture is configured as RGBA, despite binding another texture format - pixels = (unsigned char *)RL_MALLOC(RLGL_GetPixelDataSize(width, height, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8)); + pixels = (unsigned char *)RL_MALLOC(internal_get_pixel_data_size(width, height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8)); glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); glBindFramebuffer(GL_FRAMEBUFFER, 0); // Clean up temporal fbo - RLGL_UnloadFramebuffer(fboId); + unload_framebuffer(fboId); #endif return pixels; } // Read screen pixel data (color buffer) -unsigned char *RLGL_ReadScreenPixels(int width, int height) +unsigned char *read_screen_pixels(int width, int height) { unsigned char *screenData = (unsigned char *)RL_CALLOC(width*height*4, sizeof(unsigned char)); @@ -3481,7 +3520,7 @@ unsigned char *RLGL_ReadScreenPixels(int width, int height) //----------------------------------------------------------------------------------------- // Load a framebuffer to be used for rendering // NOTE: No textures attached -unsigned int RLGL_LoadFramebuffer(int width, int height) +unsigned int load_framebuffer(int width, int height) { unsigned int fboId = 0; @@ -3495,37 +3534,37 @@ unsigned int RLGL_LoadFramebuffer(int width, int height) // Attach color buffer texture to an fbo (unloads previous attachment) // NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture -void RLGL_FramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel) +void framebuffer_attach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) glBindFramebuffer(GL_FRAMEBUFFER, fboId); switch (attachType) { - case RL_ATTACHMENT_COLOR_CHANNEL0: - case RL_ATTACHMENT_COLOR_CHANNEL1: - case RL_ATTACHMENT_COLOR_CHANNEL2: - case RL_ATTACHMENT_COLOR_CHANNEL3: - case RL_ATTACHMENT_COLOR_CHANNEL4: - case RL_ATTACHMENT_COLOR_CHANNEL5: - case RL_ATTACHMENT_COLOR_CHANNEL6: - case RL_ATTACHMENT_COLOR_CHANNEL7: + case ATTACHMENT_COLOR_CHANNEL0: + case ATTACHMENT_COLOR_CHANNEL1: + case ATTACHMENT_COLOR_CHANNEL2: + case ATTACHMENT_COLOR_CHANNEL3: + case ATTACHMENT_COLOR_CHANNEL4: + case ATTACHMENT_COLOR_CHANNEL5: + case ATTACHMENT_COLOR_CHANNEL6: + case ATTACHMENT_COLOR_CHANNEL7: { - if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_2D, texId, mipLevel); - else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_RENDERBUFFER, texId); - else if (texType >= RL_ATTACHMENT_CUBEMAP_POSITIVE_X) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_CUBE_MAP_POSITIVE_X + texType, texId, mipLevel); + if (texType == ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_RENDERBUFFER, texId); + else if (texType >= ATTACHMENT_CUBEMAP_POSITIVE_X) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_CUBE_MAP_POSITIVE_X + texType, texId, mipLevel); } break; - case RL_ATTACHMENT_DEPTH: + case ATTACHMENT_DEPTH: { - if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); - else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, texId); + if (texType == ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, texId); } break; - case RL_ATTACHMENT_STENCIL: + case ATTACHMENT_STENCIL: { - if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); - else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, texId); + if (texType == ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, texId); } break; default: break; @@ -3536,7 +3575,7 @@ void RLGL_FramebufferAttach(unsigned int fboId, unsigned int texId, int attachTy } // Verify render texture is complete -bool RLGL_FramebufferComplete(unsigned int id) +bool framebuffer_complete(unsigned int id) { bool result = false; @@ -3549,12 +3588,12 @@ bool RLGL_FramebufferComplete(unsigned int id) { switch (status) { - case GL_FRAMEBUFFER_UNSUPPORTED: RL_TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer is unsupported", id); break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: RL_TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete attachment", id); break; + case GL_FRAMEBUFFER_UNSUPPORTED: RL_TRACELOG(LOG_WARNING, "FBO: [ID %i] Framebuffer is unsupported", id); break; + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: RL_TRACELOG(LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete attachment", id); break; #if defined(GRAPHICS_API_OPENGL_ES2) - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: RL_TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete dimensions", id); break; + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: RL_TRACELOG(LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete dimensions", id); break; #endif - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: RL_TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has a missing attachment", id); break; + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: RL_TRACELOG(LOG_WARNING, "FBO: [ID %i] Framebuffer has a missing attachment", id); break; default: break; } } @@ -3569,7 +3608,7 @@ bool RLGL_FramebufferComplete(unsigned int id) // Unload framebuffer from GPU memory // NOTE: All attached textures/cubemaps/renderbuffers are also deleted -void RLGL_UnloadFramebuffer(unsigned int id) +void unload_framebuffer(unsigned int id) { #if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) // Query depth attachment to automatically delete texture/renderbuffer @@ -3592,14 +3631,14 @@ void RLGL_UnloadFramebuffer(unsigned int id) glBindFramebuffer(GL_FRAMEBUFFER, 0); glDeleteFramebuffers(1, &id); - RL_TRACELOG(RL_LOG_INFO, "FBO: [ID %i] Unloaded framebuffer from VRAM (GPU)", id); + RL_TRACELOG(LOG_INFO, "FBO: [ID %i] Unloaded framebuffer from VRAM (GPU)", id); #endif } // Vertex data management //----------------------------------------------------------------------------------------- // Load a new attributes buffer -unsigned int RLGL_LoadVertexBuffer(const void *buffer, int size, bool dynamic) +unsigned int load_vertex_buffer(const void *buffer, int size, bool dynamic) { unsigned int id = 0; @@ -3613,7 +3652,7 @@ unsigned int RLGL_LoadVertexBuffer(const void *buffer, int size, bool dynamic) } // Load a new attributes element buffer -unsigned int RLGL_LoadVertexBufferElement(const void *buffer, int size, bool dynamic) +unsigned int load_vertex_buffer_element(const void *buffer, int size, bool dynamic) { unsigned int id = 0; @@ -3627,7 +3666,7 @@ unsigned int RLGL_LoadVertexBufferElement(const void *buffer, int size, bool dyn } // Enable vertex buffer (VBO) -void RLGL_EnableVertexBuffer(unsigned int id) +void enable_vertex_buffer(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ARRAY_BUFFER, id); @@ -3635,7 +3674,7 @@ void RLGL_EnableVertexBuffer(unsigned int id) } // Disable vertex buffer (VBO) -void RLGL_DisableVertexBuffer(void) +void disable_vertex_buffer(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ARRAY_BUFFER, 0); @@ -3643,7 +3682,7 @@ void RLGL_DisableVertexBuffer(void) } // Enable vertex buffer element (VBO element) -void RLGL_EnableVertexBufferElement(unsigned int id) +void enable_vertex_buffer_element(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); @@ -3651,7 +3690,7 @@ void RLGL_EnableVertexBufferElement(unsigned int id) } // Disable vertex buffer element (VBO element) -void RLGL_DisableVertexBufferElement(void) +void disable_vertex_buffer_element(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); @@ -3660,7 +3699,7 @@ void RLGL_DisableVertexBufferElement(void) // Update vertex buffer with new data // NOTE: dataSize and offset must be provided in bytes -void RLGL_UpdateVertexBuffer(unsigned int id, const void *data, int dataSize, int offset) +void update_vertex_buffer(unsigned int id, const void *data, int dataSize, int offset) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ARRAY_BUFFER, id); @@ -3670,7 +3709,7 @@ void RLGL_UpdateVertexBuffer(unsigned int id, const void *data, int dataSize, in // Update vertex buffer elements with new data // NOTE: dataSize and offset must be provided in bytes -void RLGL_UpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset) +void update_vertex_buffer_elements(unsigned int id, const void *data, int dataSize, int offset) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); @@ -3679,11 +3718,11 @@ void RLGL_UpdateVertexBufferElements(unsigned int id, const void *data, int data } // Enable vertex array object (VAO) -bool RLGL_EnableVertexArray(unsigned int vaoId) +bool enable_vertex_array(unsigned int vaoId) { bool result = false; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (RLGL_GLOBAL_DATA.ExtSupported.vao) + if (GLOBAL_DATA.ExtSupported.vao) { glBindVertexArray(vaoId); result = true; @@ -3693,15 +3732,15 @@ bool RLGL_EnableVertexArray(unsigned int vaoId) } // Disable vertex array object (VAO) -void RLGL_DisableVertexArray(void) +void disable_vertex_array(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (RLGL_GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); + if (GLOBAL_DATA.ExtSupported.vao) glBindVertexArray(0); #endif } // Enable vertex attribute index -void RLGL_EnableVertexAttribute(unsigned int index) +void enable_vertex_attribute(unsigned int index) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glEnableVertexAttribArray(index); @@ -3709,7 +3748,7 @@ void RLGL_EnableVertexAttribute(unsigned int index) } // Disable vertex attribute index -void RLGL_DisableVertexAttribute(unsigned int index) +void disable_vertex_attribute(unsigned int index) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glDisableVertexAttribArray(index); @@ -3717,13 +3756,13 @@ void RLGL_DisableVertexAttribute(unsigned int index) } // Draw vertex array -void RLGL_DrawVertexArray(int offset, int count) +void draw_vertex_array(int offset, int count) { glDrawArrays(GL_TRIANGLES, offset, count); } // Draw vertex array elements -void RLGL_DrawVertexArrayElements(int offset, int count, const void *buffer) +void draw_vertex_array_elements(int offset, int count, const void *buffer) { // NOTE: Added pointer math separately from function to avoid UBSAN complaining unsigned short *bufferPtr = (unsigned short *)buffer; @@ -3733,7 +3772,7 @@ void RLGL_DrawVertexArrayElements(int offset, int count, const void *buffer) } // Draw vertex array instanced -void RLGL_DrawVertexArrayInstanced(int offset, int count, int instances) +void draw_vertex_array_instanced(int offset, int count, int instances) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glDrawArraysInstanced(GL_TRIANGLES, 0, count, instances); @@ -3741,7 +3780,7 @@ void RLGL_DrawVertexArrayInstanced(int offset, int count, int instances) } // Draw vertex array elements instanced -void RLGL_DrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances) +void draw_vertex_array_elements_instanced(int offset, int count, const void *buffer, int instances) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // NOTE: Added pointer math separately from function to avoid UBSAN complaining @@ -3754,7 +3793,7 @@ void RLGL_DrawVertexArrayElementsInstanced(int offset, int count, const void *bu #if defined(GRAPHICS_API_OPENGL_11) // Enable vertex state pointer -void RLGL_EnableStatePointer(int vertexAttribType, void *buffer) +void enable_state_pointer(int vertexAttribType, void *buffer) { if (buffer != NULL) glEnableClientState(vertexAttribType); switch (vertexAttribType) @@ -3769,18 +3808,18 @@ void RLGL_EnableStatePointer(int vertexAttribType, void *buffer) } // Disable vertex state pointer -void RLGL_DisableStatePointer(int vertexAttribType) +void disable_state_pointer(int vertexAttribType) { glDisableClientState(vertexAttribType); } #endif // Load vertex array object (VAO) -unsigned int RLGL_LoadVertexArray(void) +unsigned int load_vertex_array(void) { unsigned int vaoId = 0; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (RLGL_GLOBAL_DATA.ExtSupported.vao) + if (GLOBAL_DATA.ExtSupported.vao) { glGenVertexArrays(1, &vaoId); } @@ -3789,7 +3828,7 @@ unsigned int RLGL_LoadVertexArray(void) } // Set vertex attribute -void RLGL_SetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer) +void set_vertex_attribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glVertexAttribPointer(index, compSize, type, normalized, stride, pointer); @@ -3797,7 +3836,7 @@ void RLGL_SetVertexAttribute(unsigned int index, int compSize, int type, bool no } // Set vertex attribute divisor -void RLGL_SetVertexAttributeDivisor(unsigned int index, int divisor) +void set_vertex_attribute_divisor(unsigned int index, int divisor) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glVertexAttribDivisor(index, divisor); @@ -3805,24 +3844,24 @@ void RLGL_SetVertexAttributeDivisor(unsigned int index, int divisor) } // Unload vertex array object (VAO) -void RLGL_UnloadVertexArray(unsigned int vaoId) +void unload_vertex_array(unsigned int vaoId) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (RLGL_GLOBAL_DATA.ExtSupported.vao) + if (GLOBAL_DATA.ExtSupported.vao) { glBindVertexArray(0); glDeleteVertexArrays(1, &vaoId); - RL_TRACELOG(RL_LOG_INFO, "VAO: [ID %i] Unloaded vertex array data from VRAM (GPU)", vaoId); + RL_TRACELOG(LOG_INFO, "VAO: [ID %i] Unloaded vertex array data from VRAM (GPU)", vaoId); } #endif } // Unload vertex buffer (VBO) -void RLGL_UnloadVertexBuffer(unsigned int vboId) +void unload_vertex_buffer(unsigned int vboId) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glDeleteBuffers(1, &vboId); - //RL_TRACELOG(RL_LOG_INFO, "VBO: Unloaded vertex data from VRAM (GPU)"); + //RL_TRACELOG(LOG_INFO, "VBO: Unloaded vertex data from VRAM (GPU)"); #endif } @@ -3830,7 +3869,7 @@ void RLGL_UnloadVertexBuffer(unsigned int vboId) //----------------------------------------------------------------------------------------------- // Load shader from code strings // NOTE: If shader string is NULL, using default vertex/fragment shaders -unsigned int RLGL_LoadShaderCode(const char *vsCode, const char *fsCode) +unsigned int load_shader_code(const char *vsCode, const char *fsCode) { unsigned int id = 0; @@ -3839,31 +3878,31 @@ unsigned int RLGL_LoadShaderCode(const char *vsCode, const char *fsCode) unsigned int fragmentShaderId = 0; // Compile vertex shader (if provided) - if (vsCode != NULL) vertexShaderId = RLGL_CompileShader(vsCode, GL_VERTEX_SHADER); + if (vsCode != NULL) vertexShaderId = compile_shader(vsCode, GL_VERTEX_SHADER); // In case no vertex shader was provided or compilation failed, we use default vertex shader - if (vertexShaderId == 0) vertexShaderId = RLGL_GLOBAL_DATA.State.defaultVShaderId; + if (vertexShaderId == 0) vertexShaderId = GLOBAL_DATA.State.defaultVShaderId; // Compile fragment shader (if provided) - if (fsCode != NULL) fragmentShaderId = RLGL_CompileShader(fsCode, GL_FRAGMENT_SHADER); + if (fsCode != NULL) fragmentShaderId = compile_shader(fsCode, GL_FRAGMENT_SHADER); // In case no fragment shader was provided or compilation failed, we use default fragment shader - if (fragmentShaderId == 0) fragmentShaderId = RLGL_GLOBAL_DATA.State.defaultFShaderId; + if (fragmentShaderId == 0) fragmentShaderId = GLOBAL_DATA.State.defaultFShaderId; // In case vertex and fragment shader are the default ones, no need to recompile, we can just assign the default shader program id - if ((vertexShaderId == RLGL_GLOBAL_DATA.State.defaultVShaderId) && (fragmentShaderId == RLGL_GLOBAL_DATA.State.defaultFShaderId)) id = RLGL_GLOBAL_DATA.State.defaultShaderId; + if ((vertexShaderId == GLOBAL_DATA.State.defaultVShaderId) && (fragmentShaderId == GLOBAL_DATA.State.defaultFShaderId)) id = GLOBAL_DATA.State.defaultShaderId; else { // One of or both shader are new, we need to compile a new shader program - id = RLGL_LoadShaderProgram(vertexShaderId, fragmentShaderId); + id = load_shader_program(vertexShaderId, fragmentShaderId); // We can detach and delete vertex/fragment shaders (if not default ones) // NOTE: We detach shader before deletion to make sure memory is freed - if (vertexShaderId != RLGL_GLOBAL_DATA.State.defaultVShaderId) + if (vertexShaderId != GLOBAL_DATA.State.defaultVShaderId) { // WARNING: Shader program linkage could fail and returned id is 0 if (id > 0) glDetachShader(id, vertexShaderId); glDeleteShader(vertexShaderId); } - if (fragmentShaderId != RLGL_GLOBAL_DATA.State.defaultFShaderId) + if (fragmentShaderId != GLOBAL_DATA.State.defaultFShaderId) { // WARNING: Shader program linkage could fail and returned id is 0 if (id > 0) glDetachShader(id, fragmentShaderId); @@ -3874,8 +3913,8 @@ unsigned int RLGL_LoadShaderCode(const char *vsCode, const char *fsCode) if (id == 0) { // In case shader loading fails, we return the default shader - RL_TRACELOG(RL_LOG_WARNING, "SHADER: Failed to load custom shader code, using default shader"); - id = RLGL_GLOBAL_DATA.State.defaultShaderId; + RL_TRACELOG(LOG_WARNING, "SHADER: Failed to load custom shader code, using default shader"); + id = GLOBAL_DATA.State.defaultShaderId; } /* else @@ -3907,7 +3946,7 @@ unsigned int RLGL_LoadShaderCode(const char *vsCode, const char *fsCode) } // Compile custom shader and return shader id -unsigned int RLGL_CompileShader(const char *shaderCode, int type) +unsigned int compile_shader(const char *shaderCode, int type) { unsigned int shader = 0; @@ -3923,11 +3962,11 @@ unsigned int RLGL_CompileShader(const char *shaderCode, int type) { switch (type) { - case GL_VERTEX_SHADER: RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile vertex shader code", shader); break; - case GL_FRAGMENT_SHADER: RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile fragment shader code", shader); break; + case GL_VERTEX_SHADER: RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to compile vertex shader code", shader); break; + case GL_FRAGMENT_SHADER: RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to compile fragment shader code", shader); break; //case GL_GEOMETRY_SHADER: #if defined(GRAPHICS_API_OPENGL_43) - case GL_COMPUTE_SHADER: RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile compute shader code", shader); break; + case GL_COMPUTE_SHADER: RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to compile compute shader code", shader); break; #endif default: break; } @@ -3940,7 +3979,7 @@ unsigned int RLGL_CompileShader(const char *shaderCode, int type) int length = 0; char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); glGetShaderInfoLog(shader, maxLength, &length, log); - RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Compile error: %s", shader, log); + RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Compile error: %s", shader, log); RL_FREE(log); } } @@ -3948,11 +3987,11 @@ unsigned int RLGL_CompileShader(const char *shaderCode, int type) { switch (type) { - case GL_VERTEX_SHADER: RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Vertex shader compiled successfully", shader); break; - case GL_FRAGMENT_SHADER: RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Fragment shader compiled successfully", shader); break; + case GL_VERTEX_SHADER: RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Vertex shader compiled successfully", shader); break; + case GL_FRAGMENT_SHADER: RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Fragment shader compiled successfully", shader); break; //case GL_GEOMETRY_SHADER: #if defined(GRAPHICS_API_OPENGL_43) - case GL_COMPUTE_SHADER: RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader compiled successfully", shader); break; + case GL_COMPUTE_SHADER: RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Compute shader compiled successfully", shader); break; #endif default: break; } @@ -3963,7 +4002,7 @@ unsigned int RLGL_CompileShader(const char *shaderCode, int type) } // Load custom shader strings and return program id -unsigned int RLGL_LoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId) +unsigned int load_shader_program(unsigned int vShaderId, unsigned int fShaderId) { unsigned int program = 0; @@ -3992,7 +4031,7 @@ unsigned int RLGL_LoadShaderProgram(unsigned int vShaderId, unsigned int fShader if (success == GL_FALSE) { - RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to link shader program", program); + RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to link shader program", program); int maxLength = 0; glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); @@ -4002,7 +4041,7 @@ unsigned int RLGL_LoadShaderProgram(unsigned int vShaderId, unsigned int fShader int length = 0; char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); glGetProgramInfoLog(program, maxLength, &length, log); - RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); + RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); RL_FREE(log); } @@ -4017,85 +4056,85 @@ unsigned int RLGL_LoadShaderProgram(unsigned int vShaderId, unsigned int fShader //GLint binarySize = 0; //glGetProgramiv(id, GL_PROGRAM_BINARY_LENGTH, &binarySize); - RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Program shader loaded successfully", program); + RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Program shader loaded successfully", program); } #endif return program; } // Unload shader program -void RLGL_UnloadShaderProgram(unsigned int id) +void unload_shader_program(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glDeleteProgram(id); - RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Unloaded shader program data from VRAM (GPU)", id); + RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Unloaded shader program data from VRAM (GPU)", id); #endif } // Get shader location uniform -int RLGL_GetLocationUniform(unsigned int shaderId, const char *uniformName) +int get_location_uniform(unsigned int shaderId, const char *uniformName) { int location = -1; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) location = glGetUniformLocation(shaderId, uniformName); - //if (location == -1) RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to find shader uniform: %s", shaderId, uniformName); - //else RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Shader uniform (%s) set at location: %i", shaderId, uniformName, location); + //if (location == -1) RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to find shader uniform: %s", shaderId, uniformName); + //else RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Shader uniform (%s) set at location: %i", shaderId, uniformName, location); #endif return location; } // Get shader location attribute -int RLGL_GetLocationAttrib(unsigned int shaderId, const char *attribName) +int get_location_attrib(unsigned int shaderId, const char *attribName) { int location = -1; #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) location = glGetAttribLocation(shaderId, attribName); - //if (location == -1) RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to find shader attribute: %s", shaderId, attribName); - //else RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Shader attribute (%s) set at location: %i", shaderId, attribName, location); + //if (location == -1) RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to find shader attribute: %s", shaderId, attribName); + //else RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Shader attribute (%s) set at location: %i", shaderId, attribName, location); #endif return location; } // Set shader value uniform -void RLGL_SetUniform(int locIndex, const void *value, int uniformType, int count) +void set_uniform(int locIndex, const void *value, int uniformType, int count) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) switch (uniformType) { - case RL_SHADER_UNIFORM_FLOAT: glUniform1fv(locIndex, count, (float *)value); break; - case RL_SHADER_UNIFORM_VEC2: glUniform2fv(locIndex, count, (float *)value); break; - case RL_SHADER_UNIFORM_VEC3: glUniform3fv(locIndex, count, (float *)value); break; - case RL_SHADER_UNIFORM_VEC4: glUniform4fv(locIndex, count, (float *)value); break; - case RL_SHADER_UNIFORM_INT: glUniform1iv(locIndex, count, (int *)value); break; - case RL_SHADER_UNIFORM_IVEC2: glUniform2iv(locIndex, count, (int *)value); break; - case RL_SHADER_UNIFORM_IVEC3: glUniform3iv(locIndex, count, (int *)value); break; - case RL_SHADER_UNIFORM_IVEC4: glUniform4iv(locIndex, count, (int *)value); break; - case RL_SHADER_UNIFORM_SAMPLER2D: glUniform1iv(locIndex, count, (int *)value); break; - default: RL_TRACELOG(RL_LOG_WARNING, "SHADER: Failed to set uniform value, data type not recognized"); + case SHADER_UNIFORM_FLOAT: glUniform1fv(locIndex, count, (float *)value); break; + case SHADER_UNIFORM_VEC2: glUniform2fv(locIndex, count, (float *)value); break; + case SHADER_UNIFORM_VEC3: glUniform3fv(locIndex, count, (float *)value); break; + case SHADER_UNIFORM_VEC4: glUniform4fv(locIndex, count, (float *)value); break; + case SHADER_UNIFORM_INT: glUniform1iv(locIndex, count, (int *)value); break; + case SHADER_UNIFORM_IVEC2: glUniform2iv(locIndex, count, (int *)value); break; + case SHADER_UNIFORM_IVEC3: glUniform3iv(locIndex, count, (int *)value); break; + case SHADER_UNIFORM_IVEC4: glUniform4iv(locIndex, count, (int *)value); break; + case SHADER_UNIFORM_SAMPLER2D: glUniform1iv(locIndex, count, (int *)value); break; + default: RL_TRACELOG(LOG_WARNING, "SHADER: Failed to set uniform value, data type not recognized"); } #endif } // Set shader value attribute -void RLGL_SetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count) +void set_vertex_attribute_default(int locIndex, const void *value, int attribType, int count) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) switch (attribType) { - case RL_SHADER_ATTRIB_FLOAT: if (count == 1) glVertexAttrib1fv(locIndex, (float *)value); break; - case RL_SHADER_ATTRIB_VEC2: if (count == 2) glVertexAttrib2fv(locIndex, (float *)value); break; - case RL_SHADER_ATTRIB_VEC3: if (count == 3) glVertexAttrib3fv(locIndex, (float *)value); break; - case RL_SHADER_ATTRIB_VEC4: if (count == 4) glVertexAttrib4fv(locIndex, (float *)value); break; - default: RL_TRACELOG(RL_LOG_WARNING, "SHADER: Failed to set attrib default value, data type not recognized"); + case SHADER_ATTRIB_FLOAT: if (count == 1) glVertexAttrib1fv(locIndex, (float *)value); break; + case SHADER_ATTRIB_VEC2: if (count == 2) glVertexAttrib2fv(locIndex, (float *)value); break; + case SHADER_ATTRIB_VEC3: if (count == 3) glVertexAttrib3fv(locIndex, (float *)value); break; + case SHADER_ATTRIB_VEC4: if (count == 4) glVertexAttrib4fv(locIndex, (float *)value); break; + default: RL_TRACELOG(LOG_WARNING, "SHADER: Failed to set attrib default value, data type not recognized"); } #endif } // Set shader value uniform matrix -void RLGL_SetUniformMatrix(int locIndex, RL_Matrix mat) +void set_uniform_matrix(int locIndex, Matrix mat) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) float matfloat[16] = { @@ -4109,20 +4148,20 @@ void RLGL_SetUniformMatrix(int locIndex, RL_Matrix mat) } // Set shader value uniform sampler -void RLGL_SetUniformSampler(int locIndex, unsigned int textureId) +void set_uniform_sampler(int locIndex, unsigned int textureId) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Check if texture is already active - for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) if (RLGL_GLOBAL_DATA.State.activeTextureId[i] == textureId) return; + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) if (GLOBAL_DATA.State.activeTextureId[i] == textureId) return; // Register a new active texture for the internal batch system // NOTE: Default texture is always activated as GL_TEXTURE0 for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) { - if (RLGL_GLOBAL_DATA.State.activeTextureId[i] == 0) + if (GLOBAL_DATA.State.activeTextureId[i] == 0) { glUniform1i(locIndex, 1 + i); // Activate new texture unit - RLGL_GLOBAL_DATA.State.activeTextureId[i] = textureId; // Save texture id for binding on drawing + GLOBAL_DATA.State.activeTextureId[i] = textureId; // Save texture id for binding on drawing break; } } @@ -4130,20 +4169,20 @@ void RLGL_SetUniformSampler(int locIndex, unsigned int textureId) } // Set shader currently active (id and locations) -void RLGL_SetShader(unsigned int id, int *locs) +void set_shader(unsigned int id, int *locs) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (RLGL_GLOBAL_DATA.State.currentShaderId != id) + if (GLOBAL_DATA.State.currentShaderId != id) { - RLGL_DrawRenderBatch(RLGL_GLOBAL_DATA.currentBatch); - RLGL_GLOBAL_DATA.State.currentShaderId = id; - RLGL_GLOBAL_DATA.State.currentShaderLocs = locs; + draw_render_batch(GLOBAL_DATA.currentBatch); + GLOBAL_DATA.State.currentShaderId = id; + GLOBAL_DATA.State.currentShaderLocs = locs; } #endif } // Load compute shader program -unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId) +unsigned int load_compute_shader_program(unsigned int shaderId) { unsigned int program = 0; @@ -4159,7 +4198,7 @@ unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId) if (success == GL_FALSE) { - RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to link compute shader program", program); + RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to link compute shader program", program); int maxLength = 0; glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); @@ -4169,7 +4208,7 @@ unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId) int length = 0; char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); glGetProgramInfoLog(program, maxLength, &length, log); - RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); + RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); RL_FREE(log); } @@ -4184,7 +4223,7 @@ unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId) //GLint binarySize = 0; //glGetProgramiv(id, GL_PROGRAM_BINARY_LENGTH, &binarySize); - RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader program loaded successfully", program); + RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Compute shader program loaded successfully", program); } #endif @@ -4192,7 +4231,7 @@ unsigned int RLGL_LoadComputeShaderProgram(unsigned int shaderId) } // Dispatch compute shader (equivalent to *draw* for graphics pilepine) -void RLGL_ComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ) +void compute_shader_dispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ) { #if defined(GRAPHICS_API_OPENGL_43) glDispatchCompute(groupX, groupY, groupZ); @@ -4200,7 +4239,7 @@ void RLGL_ComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsign } // Load shader storage buffer object (SSBO) -unsigned int RLGL_LoadShaderBuffer(unsigned int size, const void *data, int usageHint) +unsigned int load_shader_buffer(unsigned int size, const void *data, int usageHint) { unsigned int ssbo = 0; @@ -4216,7 +4255,7 @@ unsigned int RLGL_LoadShaderBuffer(unsigned int size, const void *data, int usag } // Unload shader storage buffer object (SSBO) -void RLGL_UnloadShaderBuffer(unsigned int ssboId) +void unload_shader_buffer(unsigned int ssboId) { #if defined(GRAPHICS_API_OPENGL_43) glDeleteBuffers(1, &ssboId); @@ -4224,7 +4263,7 @@ void RLGL_UnloadShaderBuffer(unsigned int ssboId) } // Update SSBO buffer data -void RLGL_UpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset) +void update_shader_buffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset) { #if defined(GRAPHICS_API_OPENGL_43) glBindBuffer(GL_SHADER_STORAGE_BUFFER, id); @@ -4233,7 +4272,7 @@ void RLGL_UpdateShaderBuffer(unsigned int id, const void *data, unsigned int dat } // Get SSBO buffer size -unsigned int RLGL_GetShaderBufferSize(unsigned int id) +unsigned int get_shader_buffer_size(unsigned int id) { long long size = 0; @@ -4246,7 +4285,7 @@ unsigned int RLGL_GetShaderBufferSize(unsigned int id) } // Read SSBO buffer data (GPU->CPU) -void RLGL_ReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset) +void read_shader_buffer(unsigned int id, void *dest, unsigned int count, unsigned int offset) { #if defined(GRAPHICS_API_OPENGL_43) glBindBuffer(GL_SHADER_STORAGE_BUFFER, id); @@ -4255,7 +4294,7 @@ void RLGL_ReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsi } // Bind SSBO buffer -void RLGL_BindShaderBuffer(unsigned int id, unsigned int index) +void bind_shader_buffer(unsigned int id, unsigned int index) { #if defined(GRAPHICS_API_OPENGL_43) glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, id); @@ -4263,7 +4302,7 @@ void RLGL_BindShaderBuffer(unsigned int id, unsigned int index) } // Copy SSBO buffer data -void RLGL_CopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count) +void copy_shader_buffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count) { #if defined(GRAPHICS_API_OPENGL_43) glBindBuffer(GL_COPY_READ_BUFFER, srcId); @@ -4273,22 +4312,22 @@ void RLGL_CopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int } // Bind image texture -void RLGL_BindImageTexture(unsigned int id, unsigned int index, int format, bool readonly) +void bind_image_texture(unsigned int id, unsigned int index, int format, bool readonly) { #if defined(GRAPHICS_API_OPENGL_43) unsigned int glInternalFormat = 0, glFormat = 0, glType = 0; - RLGL_GetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + get_gl_texture_formats(format, &glInternalFormat, &glFormat, &glType); glBindImageTexture(index, id, 0, 0, 0, readonly? GL_READ_ONLY : GL_READ_WRITE, glInternalFormat); #endif } -// RL_Matrix state management +// Matrix state management //----------------------------------------------------------------------------------------- // Get internal modelview matrix -RL_Matrix RLGL_GetMatrixModelview(void) +Matrix get_matrix_modelview(void) { - RL_Matrix matrix = RLGL_MatrixIdentity(); + Matrix matrix = internal_matrix_identity(); #if defined(GRAPHICS_API_OPENGL_11) float mat[16]; glGetFloatv(GL_MODELVIEW_MATRIX, mat); @@ -4309,18 +4348,18 @@ RL_Matrix RLGL_GetMatrixModelview(void) matrix.m14 = mat[14]; matrix.m15 = mat[15]; #else - matrix = RLGL_GLOBAL_DATA.State.modelview; + matrix = GLOBAL_DATA.State.modelview; #endif return matrix; } // Get internal projection matrix -RL_Matrix RLGL_GetMatrixProjection(void) +Matrix get_matrix_projection(void) { #if defined(GRAPHICS_API_OPENGL_11) float mat[16]; glGetFloatv(GL_PROJECTION_MATRIX,mat); - RL_Matrix m; + Matrix m; m.m0 = mat[0]; m.m1 = mat[1]; m.m2 = mat[2]; @@ -4339,80 +4378,80 @@ RL_Matrix RLGL_GetMatrixProjection(void) m.m15 = mat[15]; return m; #else - return RLGL_GLOBAL_DATA.State.projection; + return GLOBAL_DATA.State.projection; #endif } // Get internal accumulated transform matrix -RL_Matrix RLGL_GetMatrixTransform(void) +Matrix get_matrix_transform(void) { - RL_Matrix mat = RLGL_MatrixIdentity(); + Matrix mat = internal_matrix_identity(); #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - // TODO: Consider possible transform matrices in the RLGL_GLOBAL_DATA.State.stack + // TODO: Consider possible transform matrices in the GLOBAL_DATA.State.stack // Is this the right order? or should we start with the first stored matrix instead of the last one? - //RL_Matrix matStackTransform = RLGL_MatrixIdentity(); - //for (int i = RLGL_GLOBAL_DATA.State.stackCounter; i > 0; i--) matStackTransform = RLGL_MatrixMultiply(RLGL_GLOBAL_DATA.State.stack[i], matStackTransform); - mat = RLGL_GLOBAL_DATA.State.transform; + //Matrix matStackTransform = internal_matrix_identity(); + //for (int i = GLOBAL_DATA.State.stackCounter; i > 0; i--) matStackTransform = internal_matrix_multiply(GLOBAL_DATA.State.stack[i], matStackTransform); + mat = GLOBAL_DATA.State.transform; #endif return mat; } // Get internal projection matrix for stereo render (selected eye) -RLAPI RL_Matrix RLGL_GetMatrixProjectionStereo(int eye) +RLAPI Matrix get_matrix_projection_stereo(int eye) { - RL_Matrix mat = RLGL_MatrixIdentity(); + Matrix mat = internal_matrix_identity(); #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - mat = RLGL_GLOBAL_DATA.State.projectionStereo[eye]; + mat = GLOBAL_DATA.State.projectionStereo[eye]; #endif return mat; } // Get internal view offset matrix for stereo render (selected eye) -RLAPI RL_Matrix RLGL_GetMatrixViewOffsetStereo(int eye) +RLAPI Matrix get_matrix_view_offset_stereo(int eye) { - RL_Matrix mat = RLGL_MatrixIdentity(); + Matrix mat = internal_matrix_identity(); #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - mat = RLGL_GLOBAL_DATA.State.viewOffsetStereo[eye]; + mat = GLOBAL_DATA.State.viewOffsetStereo[eye]; #endif return mat; } // Set a custom modelview matrix (replaces internal modelview matrix) -void RLGL_SetMatrixModelview(RL_Matrix view) +void set_matrix_modelview(Matrix view) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.modelview = view; + GLOBAL_DATA.State.modelview = view; #endif } // Set a custom projection matrix (replaces internal projection matrix) -void RLGL_SetMatrixProjection(RL_Matrix projection) +void set_matrix_projection(Matrix projection) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.projection = projection; + GLOBAL_DATA.State.projection = projection; #endif } // Set eyes projection matrices for stereo rendering -void RLGL_SetMatrixProjectionStereo(RL_Matrix right, RL_Matrix left) +void set_matrix_projection_stereo(Matrix right, Matrix left) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.projectionStereo[0] = right; - RLGL_GLOBAL_DATA.State.projectionStereo[1] = left; + GLOBAL_DATA.State.projectionStereo[0] = right; + GLOBAL_DATA.State.projectionStereo[1] = left; #endif } // Set eyes view offsets matrices for stereo rendering -void RLGL_SetMatrixViewOffsetStereo(RL_Matrix right, RL_Matrix left) +void set_matrix_view_offset_stereo(Matrix right, Matrix left) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - RLGL_GLOBAL_DATA.State.viewOffsetStereo[0] = right; - RLGL_GLOBAL_DATA.State.viewOffsetStereo[1] = left; + GLOBAL_DATA.State.viewOffsetStereo[0] = right; + GLOBAL_DATA.State.viewOffsetStereo[1] = left; #endif } // Load and draw a quad in NDC -void RLGL_LoadDrawQuad(void) +void load_draw_quad(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) unsigned int quadVAO = 0; @@ -4453,7 +4492,7 @@ void RLGL_LoadDrawQuad(void) } // Load and draw a cube in NDC -void RLGL_LoadDrawCube(void) +void load_draw_cube(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) unsigned int cubeVAO = 0; @@ -4531,34 +4570,34 @@ void RLGL_LoadDrawCube(void) } // Get name string for pixel format -const char *RLGL_GetPixelFormatName(unsigned int format) +const char *get_pixel_format_name(unsigned int format) { switch (format) { - case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: return "GRAYSCALE"; break; // 8 bit per pixel (no alpha) - case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: return "GRAY_ALPHA"; break; // 8*2 bpp (2 channels) - case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: return "R5G6B5"; break; // 16 bpp - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: return "R8G8B8"; break; // 24 bpp - case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: return "R5G5B5A1"; break; // 16 bpp (1 bit alpha) - case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: return "R4G4B4A4"; break; // 16 bpp (4 bit alpha) - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: return "R8G8B8A8"; break; // 32 bpp - case RL_PIXELFORMAT_UNCOMPRESSED_R32: return "R32"; break; // 32 bpp (1 channel - float) - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: return "R32G32B32"; break; // 32*3 bpp (3 channels - float) - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: return "R32G32B32A32"; break; // 32*4 bpp (4 channels - float) - case RL_PIXELFORMAT_UNCOMPRESSED_R16: return "R16"; break; // 16 bpp (1 channel - half float) - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: return "R16G16B16"; break; // 16*3 bpp (3 channels - half float) - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: return "R16G16B16A16"; break; // 16*4 bpp (4 channels - half float) - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: return "DXT1_RGB"; break; // 4 bpp (no alpha) - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: return "DXT1_RGBA"; break; // 4 bpp (1 bit alpha) - case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: return "DXT3_RGBA"; break; // 8 bpp - case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: return "DXT5_RGBA"; break; // 8 bpp - case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: return "ETC1_RGB"; break; // 4 bpp - case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: return "ETC2_RGB"; break; // 4 bpp - case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: return "ETC2_RGBA"; break; // 8 bpp - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: return "PVRT_RGB"; break; // 4 bpp - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: return "PVRT_RGBA"; break; // 4 bpp - case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: return "ASTC_4x4_RGBA"; break; // 8 bpp - case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: return "ASTC_8x8_RGBA"; break; // 2 bpp + case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: return "GRAYSCALE"; break; // 8 bit per pixel (no alpha) + case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: return "GRAY_ALPHA"; break; // 8*2 bpp (2 channels) + case PIXELFORMAT_UNCOMPRESSED_R5G6B5: return "R5G6B5"; break; // 16 bpp + case PIXELFORMAT_UNCOMPRESSED_R8G8B8: return "R8G8B8"; break; // 24 bpp + case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: return "R5G5B5A1"; break; // 16 bpp (1 bit alpha) + case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: return "R4G4B4A4"; break; // 16 bpp (4 bit alpha) + case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: return "R8G8B8A8"; break; // 32 bpp + case PIXELFORMAT_UNCOMPRESSED_R32: return "R32"; break; // 32 bpp (1 channel - float) + case PIXELFORMAT_UNCOMPRESSED_R32G32B32: return "R32G32B32"; break; // 32*3 bpp (3 channels - float) + case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: return "R32G32B32A32"; break; // 32*4 bpp (4 channels - float) + case PIXELFORMAT_UNCOMPRESSED_R16: return "R16"; break; // 16 bpp (1 channel - half float) + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: return "R16G16B16"; break; // 16*3 bpp (3 channels - half float) + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: return "R16G16B16A16"; break; // 16*4 bpp (4 channels - half float) + case PIXELFORMAT_COMPRESSED_DXT1_RGB: return "DXT1_RGB"; break; // 4 bpp (no alpha) + case PIXELFORMAT_COMPRESSED_DXT1_RGBA: return "DXT1_RGBA"; break; // 4 bpp (1 bit alpha) + case PIXELFORMAT_COMPRESSED_DXT3_RGBA: return "DXT3_RGBA"; break; // 8 bpp + case PIXELFORMAT_COMPRESSED_DXT5_RGBA: return "DXT5_RGBA"; break; // 8 bpp + case PIXELFORMAT_COMPRESSED_ETC1_RGB: return "ETC1_RGB"; break; // 4 bpp + case PIXELFORMAT_COMPRESSED_ETC2_RGB: return "ETC2_RGB"; break; // 4 bpp + case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: return "ETC2_RGBA"; break; // 8 bpp + case PIXELFORMAT_COMPRESSED_PVRT_RGB: return "PVRT_RGB"; break; // 4 bpp + case PIXELFORMAT_COMPRESSED_PVRT_RGBA: return "PVRT_RGBA"; break; // 4 bpp + case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: return "ASTC_4x4_RGBA"; break; // 8 bpp + case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: return "ASTC_8x8_RGBA"; break; // 2 bpp default: return "UNKNOWN"; break; } } @@ -4569,13 +4608,13 @@ const char *RLGL_GetPixelFormatName(unsigned int format) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Load default shader (just vertex positioning and texture coloring) // NOTE: This shader program is used for internal buffers -// NOTE: Loaded: RLGL_GLOBAL_DATA.State.defaultShaderId, RLGL_GLOBAL_DATA.State.defaultShaderLocs -static void RLGL_LoadShaderDefault(void) +// NOTE: Loaded: GLOBAL_DATA.State.defaultShaderId, GLOBAL_DATA.State.defaultShaderLocs +static void load_shader_default(void) { - RLGL_GLOBAL_DATA.State.defaultShaderLocs = (int *)RL_CALLOC(RL_MAX_SHADER_LOCATIONS, sizeof(int)); + GLOBAL_DATA.State.defaultShaderLocs = (int *)RL_CALLOC(RL_MAX_SHADER_LOCATIONS, sizeof(int)); // NOTE: All locations must be reseted to -1 (no location) - for (int i = 0; i < RL_MAX_SHADER_LOCATIONS; i++) RLGL_GLOBAL_DATA.State.defaultShaderLocs[i] = -1; + for (int i = 0; i < RL_MAX_SHADER_LOCATIONS; i++) GLOBAL_DATA.State.defaultShaderLocs[i] = -1; // Vertex shader directly defined, no external file required const char *defaultVShaderCode = @@ -4653,49 +4692,49 @@ static void RLGL_LoadShaderDefault(void) // NOTE: Compiled vertex/fragment shaders are not deleted, // they are kept for re-use as default shaders in case some shader loading fails - RLGL_GLOBAL_DATA.State.defaultVShaderId = RLGL_CompileShader(defaultVShaderCode, GL_VERTEX_SHADER); // Compile default vertex shader - RLGL_GLOBAL_DATA.State.defaultFShaderId = RLGL_CompileShader(defaultFShaderCode, GL_FRAGMENT_SHADER); // Compile default fragment shader + GLOBAL_DATA.State.defaultVShaderId = compile_shader(defaultVShaderCode, GL_VERTEX_SHADER); // Compile default vertex shader + GLOBAL_DATA.State.defaultFShaderId = compile_shader(defaultFShaderCode, GL_FRAGMENT_SHADER); // Compile default fragment shader - RLGL_GLOBAL_DATA.State.defaultShaderId = RLGL_LoadShaderProgram(RLGL_GLOBAL_DATA.State.defaultVShaderId, RLGL_GLOBAL_DATA.State.defaultFShaderId); + GLOBAL_DATA.State.defaultShaderId = load_shader_program(GLOBAL_DATA.State.defaultVShaderId, GLOBAL_DATA.State.defaultFShaderId); - if (RLGL_GLOBAL_DATA.State.defaultShaderId > 0) + if (GLOBAL_DATA.State.defaultShaderId > 0) { - RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Default shader loaded successfully", RLGL_GLOBAL_DATA.State.defaultShaderId); + RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Default shader loaded successfully", GLOBAL_DATA.State.defaultShaderId); // Set default shader locations: attributes locations - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_POSITION] = glGetAttribLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "vertexPosition"); - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "vertexTexCoord"); - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_COLOR] = glGetAttribLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "vertexColor"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_VERTEX_POSITION] = glGetAttribLocation(GLOBAL_DATA.State.defaultShaderId, "vertexPosition"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(GLOBAL_DATA.State.defaultShaderId, "vertexTexCoord"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_VERTEX_COLOR] = glGetAttribLocation(GLOBAL_DATA.State.defaultShaderId, "vertexColor"); // Set default shader locations: uniform locations - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_MATRIX_MVP] = glGetUniformLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "mvp"); - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_COLOR_DIFFUSE] = glGetUniformLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "colDiffuse"); - RLGL_GLOBAL_DATA.State.defaultShaderLocs[RL_SHADER_LOC_MAP_DIFFUSE] = glGetUniformLocation(RLGL_GLOBAL_DATA.State.defaultShaderId, "texture0"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_MATRIX_MVP] = glGetUniformLocation(GLOBAL_DATA.State.defaultShaderId, "mvp"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_COLOR_DIFFUSE] = glGetUniformLocation(GLOBAL_DATA.State.defaultShaderId, "colDiffuse"); + GLOBAL_DATA.State.defaultShaderLocs[SHADER_LOC_MAP_DIFFUSE] = glGetUniformLocation(GLOBAL_DATA.State.defaultShaderId, "texture0"); } - else RL_TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to load default shader", RLGL_GLOBAL_DATA.State.defaultShaderId); + else RL_TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to load default shader", GLOBAL_DATA.State.defaultShaderId); } // Unload default shader -// NOTE: Unloads: RLGL_GLOBAL_DATA.State.defaultShaderId, RLGL_GLOBAL_DATA.State.defaultShaderLocs -static void RLGL_UnloadShaderDefault(void) +// NOTE: Unloads: GLOBAL_DATA.State.defaultShaderId, GLOBAL_DATA.State.defaultShaderLocs +static void unload_shader_default(void) { glUseProgram(0); - glDetachShader(RLGL_GLOBAL_DATA.State.defaultShaderId, RLGL_GLOBAL_DATA.State.defaultVShaderId); - glDetachShader(RLGL_GLOBAL_DATA.State.defaultShaderId, RLGL_GLOBAL_DATA.State.defaultFShaderId); - glDeleteShader(RLGL_GLOBAL_DATA.State.defaultVShaderId); - glDeleteShader(RLGL_GLOBAL_DATA.State.defaultFShaderId); + glDetachShader(GLOBAL_DATA.State.defaultShaderId, GLOBAL_DATA.State.defaultVShaderId); + glDetachShader(GLOBAL_DATA.State.defaultShaderId, GLOBAL_DATA.State.defaultFShaderId); + glDeleteShader(GLOBAL_DATA.State.defaultVShaderId); + glDeleteShader(GLOBAL_DATA.State.defaultFShaderId); - glDeleteProgram(RLGL_GLOBAL_DATA.State.defaultShaderId); + glDeleteProgram(GLOBAL_DATA.State.defaultShaderId); - RL_FREE(RLGL_GLOBAL_DATA.State.defaultShaderLocs); + RL_FREE(GLOBAL_DATA.State.defaultShaderLocs); - RL_TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Default shader unloaded successfully", RLGL_GLOBAL_DATA.State.defaultShaderId); + RL_TRACELOG(LOG_INFO, "SHADER: [ID %i] Default shader unloaded successfully", GLOBAL_DATA.State.defaultShaderId); } #if defined(RLGL_SHOW_GL_DETAILS_INFO) // Get compressed format official GL identifier name -static const char *RLGL_GetCompressedFormatName(int format) +static const char *GetCompressedFormatName(int format) { switch (format) { @@ -4773,37 +4812,37 @@ static const char *RLGL_GetCompressedFormatName(int format) // Get pixel data size in bytes (image or texture) // NOTE: Size depends on pixel format -static int RLGL_GetPixelDataSize(int width, int height, int format) +static int internal_get_pixel_data_size(int width, int height, int format) { int dataSize = 0; // Size in bytes int bpp = 0; // Bits per pixel switch (format) { - case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; - case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: - case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: - case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: - case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16: bpp = 16; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 16*3; break; - case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 16*4; break; - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: - case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: - case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: - case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: - case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; - case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: - case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: - case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: - case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; - case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; + case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; + case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; + case PIXELFORMAT_UNCOMPRESSED_R16: bpp = 16; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 16*3; break; + case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 16*4; break; + case PIXELFORMAT_COMPRESSED_DXT1_RGB: + case PIXELFORMAT_COMPRESSED_DXT1_RGBA: + case PIXELFORMAT_COMPRESSED_ETC1_RGB: + case PIXELFORMAT_COMPRESSED_ETC2_RGB: + case PIXELFORMAT_COMPRESSED_PVRT_RGB: + case PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case PIXELFORMAT_COMPRESSED_DXT3_RGBA: + case PIXELFORMAT_COMPRESSED_DXT5_RGBA: + case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: + case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; + case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; default: break; } @@ -4813,8 +4852,8 @@ static int RLGL_GetPixelDataSize(int width, int height, int format) // if texture is smaller, minimum dataSize is 8 or 16 if ((width < 4) && (height < 4)) { - if ((format >= RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA)) dataSize = 8; - else if ((format >= RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16; + if ((format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < PIXELFORMAT_COMPRESSED_DXT3_RGBA)) dataSize = 8; + else if ((format >= PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16; } return dataSize; @@ -4822,10 +4861,12 @@ static int RLGL_GetPixelDataSize(int width, int height, int format) // Auxiliar math functions +// #if !defined(RAYMATH_H) && !defined(RL_REFACTORED_C) && !defined(RL_REFACTORED_CPP) + // Get identity matrix -static RL_Matrix RLGL_MatrixIdentity(void) +static Matrix internal_matrix_identity(void) { - RL_Matrix result = { + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, @@ -4837,9 +4878,9 @@ static RL_Matrix RLGL_MatrixIdentity(void) // Get two matrix multiplication // NOTE: When multiplying matrices... the order matters! -static RL_Matrix RLGL_MatrixMultiply(RL_Matrix left, RL_Matrix right) +static Matrix internal_matrix_multiply(Matrix left, Matrix right) { - RL_Matrix result = { 0 }; + Matrix result = { 0 }; result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; @@ -4860,5 +4901,10 @@ static RL_Matrix RLGL_MatrixMultiply(RL_Matrix left, RL_Matrix right) return result; } +// #endif + +RLGL_EXTERN_C_END + +RLGL_NS_END #endif // RLGL_IMPLEMENTATION diff --git a/project/auxillary/vis_ast/dependencies/raylib/include/utils.h b/project/auxillary/vis_ast/dependencies/raylib/include/utils.h index 397a4af..7253ea1 100644 --- a/project/auxillary/vis_ast/dependencies/raylib/include/utils.h +++ b/project/auxillary/vis_ast/dependencies/raylib/include/utils.h @@ -33,10 +33,10 @@ #endif #if defined(RL_SUPPORT_TRACELOG) - #define RL_TRACELOG(level, ...) RL_TraceLog(level, __VA_ARGS__) + #define RL_TRACELOG(level, ...) RL_NS(trace_log)(level, __VA_ARGS__) #if defined(RL_SUPPORT_TRACELOG_DEBUG) - #define TRACELOGD(...) RL_TraceLog(RL_LOG_DEBUG, __VA_ARGS__) + #define TRACELOGD(...) RL_NS(trace_log)(LOG_DEBUG, __VA_ARGS__) #else #define TRACELOGD(...) (void)0 #endif @@ -70,7 +70,7 @@ extern "C" { // Prevents name mangling of functions #endif #if defined(PLATFORM_ANDROID) -void InitAssetManager(AAssetManager *manager, const char *dataPath); // Initialize asset manager from android app +void init_asset_manager(AAssetManager *manager, const char *dataPath); // Initialize asset manager from android app FILE *android_fopen(const char *fileName, const char *mode); // Replacement for fopen() -> Read-only! #endif diff --git a/project/auxillary/vis_ast/dependencies/raylib/lib/raylib.exp b/project/auxillary/vis_ast/dependencies/raylib/lib/raylib.exp new file mode 100644 index 0000000..ed2035b Binary files /dev/null and b/project/auxillary/vis_ast/dependencies/raylib/lib/raylib.exp differ diff --git a/project/auxillary/vis_ast/dependencies/raylib/raylib_c.refactor b/project/auxillary/vis_ast/dependencies/raylib/raylib_c.refactor deleted file mode 100644 index 1dbc3ac..0000000 --- a/project/auxillary/vis_ast/dependencies/raylib/raylib_c.refactor +++ /dev/null @@ -1,1340 +0,0 @@ - __VERSION 1 - - -// Config.h -word CONFIG_H, RL_CONFIG_H - -word SUPPORT_MODULE_RSHAPES, RL_SUPPORT_MODULE_RSHAPES -word SUPPORT_MODULE_RTEXTURES, RL_SUPPORT_MODULE_RTEXTURES -word SUPPORT_MODULE_RTEXT, RL_SUPPORT_MODULE_RTEXT -word SUPPORT_MODULE_RMODELS, RL_SUPPORT_MODULE_RMODELS -word SUPPORT_MODULE_RAUDIO, RL_SUPPORT_MODULE_RAUDIO -word SUPPORT_CAMERA_SYSTEM, RL_SUPPORT_CAMERA_SYSTEM -word SUPPORT_GESTURES_SYSTEM, RL_SUPPORT_GESTURES_SYSTEM -word SUPPORT_MOUSE_GESTURES, RL_SUPPORT_MOUSE_GESTURES -word SUPPORT_SSH_KEYBOARD_RPI, RL_SUPPORT_SSH_KEYBOARD_RPI -word SUPPORT_WINMM_HIGHRES_TIMER, RL_SUPPORT_WINMM_HIGHRES_TIMER -word SUPPORT_PARTIALBUSY_WAIT_LOOP, RL_SUPPORT_PARTIALBUSY_WAIT_LOOP -word SUPPORT_SCREEN_CAPTURE, RL_SUPPORT_SCREEN_CAPTURE -word SUPPORT_GIF_RECORDING, RL_SUPPORT_GIF_RECORDING -word SUPPORT_COMPRESSION_API, RL_SUPPORT_COMPRESSION_API -word SUPPORT_AUTOMATION_EVENTS, RL_SUPPORT_AUTOMATION_EVENTS - -word MAX_FILEPATH_CAPACITY, RL_MAX_FILEPATH_CAPACITY -word MAX_FILEPATH_LENGTH, RL_MAX_FILEPATH_LENGTH -word MAX_KEYBOARD_KEYS, RL_MAX_KEYBOARD_KEYS -word MAX_MOUSE_BUTTONS, RL_MAX_MOUSE_BUTTONS -word MAX_GAMEPADS, RL_MAX_GAMEPADS -word MAX_GAMEPAD_AXIS, RL_MAX_GAMEPAD_AXIS -word MAX_GAMEPAD_BUTTONS, RL_MAX_GAMEPAD_BUTTONS -word MAX_TOUCH_POINTS, RL_MAX_TOUCH_POINTS -word MAX_KEY_PRESSED_QUEUE, RL_MAX_KEY_PRESSED_QUEUE -word MAX_CHAR_PRESSED_QUEUE, RL_MAX_CHAR_PRESSED_QUEUE -word MAX_DECOMPRESSION_SIZE, RL_MAX_DECOMPRESSION_SIZE -word MAX_AUTOMATION_EVENTS, RL_MAX_AUTOMATION_EVENTS - -word SUPPORT_QUADS_DRAW_MODE, RL_SUPPORT_QUADS_DRAW_MODE -word SUPPORT_FILEFORMAT_PNG, RL_SUPPORT_FILEFORMAT_PNG -word SUPPORT_FILEFORMAT_BMP, RL_SUPPORT_FILEFORMAT_BMP -word SUPPORT_FILEFORMAT_TGA, RL_SUPPORT_FILEFORMAT_TGA -word SUPPORT_FILEFORMAT_JPG, RL_SUPPORT_FILEFORMAT_JPG -word SUPPORT_FILEFORMAT_GIF, RL_SUPPORT_FILEFORMAT_GIF -word SUPPORT_FILEFORMAT_QOI, RL_SUPPORT_FILEFORMAT_QOI -word SUPPORT_FILEFORMAT_PSD, RL_SUPPORT_FILEFORMAT_PSD -word SUPPORT_FILEFORMAT_DDS, RL_SUPPORT_FILEFORMAT_DDS -word SUPPORT_FILEFORMAT_HDR, RL_SUPPORT_FILEFORMAT_HDR -word SUPPORT_FILEFORMAT_PIC, RL_SUPPORT_FILEFORMAT_PIC -word SUPPORT_FILEFORMAT_KTX, RL_SUPPORT_FILEFORMAT_KTX -word SUPPORT_FILEFORMAT_ASTC, RL_SUPPORT_FILEFORMAT_ASTC -word SUPPORT_FILEFORMAT_PKM, RL_SUPPORT_FILEFORMAT_PKM -word SUPPORT_FILEFORMAT_PVR, RL_SUPPORT_FILEFORMAT_PVR -word SUPPORT_FILEFORMAT_SVG, RL_SUPPORT_FILEFORMAT_SVG -word SUPPORT_IMAGE_EXPORT, RL_SUPPORT_IMAGE_EXPORT -word SUPPORT_IMAGE_GENERATION, RL_SUPPORT_IMAGE_GENERATION -word SUPPORT_IMAGE_MANIPULATION, RL_SUPPORT_IMAGE_MANIPULATION -word SUPPORT_DEFAULT_FONT, RL_SUPPORT_DEFAULT_FONT -word SUPPORT_FILEFORMAT_FNT, RL_SUPPORT_FILEFORMAT_FNT -word SUPPORT_FILEFORMAT_TTF, RL_SUPPORT_FILEFORMAT_TTF -word SUPPORT_TEXT_MANIPULATION, RL_SUPPORT_TEXT_MANIPULATION -word SUPPORT_FONT_ATLAS_WHITE_REC, RL_SUPPORT_FONT_ATLAS_WHITE_REC - -word MAX_TEXT_BUFFER_LENGTH, RL_MAX_TEXT_BUFFER_LENGTH -word MAX_TEXTSPLIT_COUNT, RL_MAX_TEXTSPLIT_COUNT - -word SUPPORT_FILEFORMAT_OBJ, RL_SUPPORT_FILEFORMAT_OBJ; -word SUPPORT_FILEFORMAT_MTL, RL_SUPPORT_FILEFORMAT_MTL; -word SUPPORT_FILEFORMAT_IQM, RL_SUPPORT_FILEFORMAT_IQM; -word SUPPORT_FILEFORMAT_GLTF, RL_SUPPORT_FILEFORMAT_GLTF; -word SUPPORT_FILEFORMAT_VOX, RL_SUPPORT_FILEFORMAT_VOX; -word SUPPORT_FILEFORMAT_M3D, RL_SUPPORT_FILEFORMAT_M3D; -word SUPPORT_MESH_GENERATION, RL_SUPPORT_MESH_GENERATION; - -word MAX_MATERIAL_MAPS, RL_MAX_MATERIAL_MAPS -word MAX_MESH_VERTEX_BUFFERS, RL_MAX_MESH_VERTEX_BUFFERS - -word SUPPORT_FILEFORMAT_WAV, RL_SUPPORT_FILEFORMAT_WAV -word SUPPORT_FILEFORMAT_OGG, RL_SUPPORT_FILEFORMAT_OGG -word SUPPORT_FILEFORMAT_MP3, RL_SUPPORT_FILEFORMAT_MP3 -word SUPPORT_FILEFORMAT_QOA, RL_SUPPORT_FILEFORMAT_QOA -word SUPPORT_FILEFORMAT_FLAC, RL_SUPPORT_FILEFORMAT_FLAC -word SUPPORT_FILEFORMAT_XM, RL_SUPPORT_FILEFORMAT_XM -word SUPPORT_FILEFORMAT_MOD, RL_SUPPORT_FILEFORMAT_MOD - -word AUDIO_DEVICE_FORMAT, RL_AUDIO_DEVICE_FORMAT -word AUDIO_DEVICE_CHANNELS, RL_AUDIO_DEVICE_CHANNELS -word AUDIO_DEVICE_SAMPLE_RATE, RL_AUDIO_DEVICE_SAMPLE_RATE - -word MAX_AUDIO_BUFFER_POOL_CHANNELS, RL_MAX_AUDIO_BUFFER_POOL_CHANNELS - -word SUPPORT_STANDARD_FILEIO, RL_SUPPORT_STANDARD_FILEIO -word SUPPORT_TRACELOG, RL_SUPPORT_TRACELOG -word SUPPORT_TRACELOG_DEBUG, RL_SUPPORT_TRACELOG_DEBUG - -word MAX_TRACELOG_MSG_LENGTH, RL_MAX_TRACELOG_MSG_LENGTH - -// raylib.h - -word BUILD_LIBTYPE_SHARED, RL_BUILD_LIBTYPE_SHARED -word USE_LIBTYPE_SHARED, RL_USE_LIBTYPE_SHARED -word PI, RL_PI -word DEG2RAD, RL_DEG2RAD -word RAD2DEG, RL_RAD2DEG - -word CLITERAL, RL_CLITERAL - -word LIGHTGRAY, RL_LIGHTGRAY -word GRAY, RL_GRAY -word DARKGRAY, RL_DARKGRAY -word YELLOW, RL_YELLOW -word GOLD, RL_GOLD -word ORANGE, RL_ORANGE -word PINK, RL_PINK -word RED, RL_RED -word MAROON, RL_MAROON -word GREEN, RL_GREEN -word LIME, RL_LIME -word DARKGREEN, RL_DARKGREEN -word SKYBLUE, RL_SKYBLUE -word BLUE, RL_BLUE -word DARKBLUE, RL_DARKBLUE -word PURPLE, RL_PURPLE -word VIOLET, RL_VIOLET -word DARKPURPLE, RL_DARKPURPLE -word BEIGE, RL_BEIGE -word BROWN, RL_BROWN -word DARKBROWN, RL_DARKBROWN - -word WHITE, RL_WHITE -word BLACK, RL_BLACK -word BLANK, RL_BLANK -word MAGENTA, RL_MAGENTA -word RAYWHITE, RL_RAYWHITE - -word Vector2, RL_Vector2 -word Vector3, RL_Vector3 -word Vector4, RL_Vector4 -word Quaternion, RL_Quaternion -word Matrix, RL_Matrix -word Color, RL_Color -word Rectangle, RL_Rectangle -word Image, RL_Image -word Texture, RL_Texture -word Texture2D, RL_Texture2D -word TextureCubemap, RL_TextureCubemap -word RenderTexture, RL_RenderTexture -word RenderTexture2D, RL_RenderTexture2D -word NPatchInfo, RL_NPatchInfo -word GlyphInfo, RL_GlyphInfo -word Font, RL_Font -word Camera3D, RL_Camera3D -word Camera, RL_Camera -word Camera2D, RL_Camera2D -word Mesh, RL_Mesh -word Shader, RL_Shader -word MaterialMap, RL_MaterialMap -word Material, RL_Material -word Transform, RL_Transform -word BoneInfo, RL_BoneInfo -word Model, RL_Model -word ModelAnimation, RL_ModelAnimation -word Ray, RL_Ray -word RayCollision, RL_RayCollision -word BoundingBox, RL_BoundingBox -word Wave, RL_Wave -word rAudioBuffer, RL_AudioBuffer -word rAudioProcessor, RL_AudioProcessor -word AudioStream, RL_AudioStream -word Sound, RL_Sound -word Music, RL_Music -word VrDeviceInfo, RL_VrDeviceInfo -word VrStereoConfig, RL_VrStereoConfig -word FilePathList, RL_FilePathList -word AutomationEvent, RL_AutomationEvent -word AutomationEventList, RL_AutomationEventList - -word ConfigFlags, RL_ConfigFlags - word FLAG_VSYNC_HINT, RL_FLAG_VSYNC_HINT - word FLAG_FULLSCREEN_MODE, RL_FLAG_FULLSCREEN_MODE - word FLAG_WINDOW_RESIZABLE, RL_FLAG_WINDOW_RESIZABLE - word FLAG_WINDOW_UNDECORATED, RL_FLAG_WINDOW_UNDECORATED - word FLAG_WINDOW_HIDDEN, RL_FLAG_WINDOW_HIDDEN - word FLAG_WINDOW_MINIMIZED, RL_FLAG_WINDOW_MINIMIZED - word FLAG_WINDOW_MAXIMIZED, RL_FLAG_WINDOW_MAXIMIZED - word FLAG_WINDOW_UNFOCUSED, RL_FLAG_WINDOW_UNFOCUSED - word FLAG_WINDOW_TOPMOST, RL_FLAG_WINDOW_TOPMOST - word FLAG_WINDOW_ALWAYS_RUN, RL_FLAG_WINDOW_ALWAYS_RUN - word FLAG_WINDOW_TRANSPARENT, RL_FLAG_WINDOW_TRANSPARENT - word FLAG_WINDOW_HIGHDPI, RL_FLAG_WINDOW_HIGHDPI - word FLAG_WINDOW_MOUSE_PASSTHROUGH, RL_FLAG_WINDOW_MOUSE_PASSTHROUGH - word FLAG_BORDERLESS_WINDOWED_MODE, RL_FLAG_BORDERLESS_WINDOWED_MODE - word FLAG_MSAA_4X_HINT, RL_FLAG_MSAA_4X_HINT - word FLAG_INTERLACED_HINT, RL_FLAG_INTERLACED_HINT -word TraceLogLevel, RL_TraceLogLevel - word LOG_ALL, RL_LOG_ALL - word LOG_TRACE, RL_LOG_TRACE - word LOG_DEBUG, RL_LOG_DEBUG - word LOG_INFO, RL_LOG_INFO - word LOG_WARNING, RL_LOG_WARNING - word LOG_ERROR, RL_LOG_ERROR - word LOG_FATAL, RL_LOG_FATAL - word LOG_NONE, RL_LOG_NONE -word KeyboardKey, RL_KeyboardKey - word KEY_NULL, RL_KEY_NULL - word KEY_APOSTROPHE, RL_KEY_APOSTROPHE - word KEY_COMMA, RL_KEY_COMMA - word KEY_MINUS, RL_KEY_MINUS - word KEY_PERIOD, RL_KEY_PERIOD - word KEY_SLASH, RL_KEY_SLASH - word KEY_ZERO, RL_KEY_ZERO - word KEY_ONE, RL_KEY_ONE - word KEY_TWO, RL_KEY_TWO - word KEY_THREE, RL_KEY_THREE - word KEY_FOUR, RL_KEY_FOUR - word KEY_FIVE, RL_KEY_FIVE - word KEY_SIX, RL_KEY_SIX - word KEY_SEVEN, RL_KEY_SEVEN - word KEY_EIGHT, RL_KEY_EIGHT - word KEY_NINE, RL_KEY_NINE - word KEY_SEMICOLON, RL_KEY_SEMICOLON - word KEY_EQUAL, RL_KEY_EQUAL - word KEY_A, RL_KEY_A - word KEY_B, RL_KEY_B - word KEY_C, RL_KEY_C - word KEY_D, RL_KEY_D - word KEY_E, RL_KEY_E - word KEY_F, RL_KEY_F - word KEY_G, RL_KEY_G - word KEY_H, RL_KEY_H - word KEY_I, RL_KEY_I - word KEY_J, RL_KEY_J - word KEY_K, RL_KEY_K - word KEY_L, RL_KEY_L - word KEY_M, RL_KEY_M - word KEY_N, RL_KEY_N - word KEY_O, RL_KEY_O - word KEY_P, RL_KEY_P - word KEY_Q, RL_KEY_Q - word KEY_R, RL_KEY_R - word KEY_S, RL_KEY_S - word KEY_T, RL_KEY_T - word KEY_U, RL_KEY_U - word KEY_V, RL_KEY_V - word KEY_W, RL_KEY_W - word KEY_X, RL_KEY_X - word KEY_Y, RL_KEY_Y - word KEY_Z, RL_KEY_Z - word KEY_LEFT_BRACKET, RL_KEY_LEFT_BRACKET - word KEY_GRAVE, RL_KEY_GRAVE - word KEY_SPACE, RL_KEY_SPACE - word KEY_ESCAPE, RL_KEY_ESCAPE - word KEY_ENTER, RL_KEY_ENTER - word KEY_TAB, RL_KEY_TAB - word KEY_BACKSPACE, RL_KEY_BACKSPACE - word KEY_INSERT, RL_KEY_INSERT - word KEY_DELETE, RL_KEY_DELETE - word KEY_RIGHT, RL_KEY_RIGHT - word KEY_LEFT, RL_KEY_LEFT - word KEY_DOWN, RL_KEY_DOWN - word KEY_UP, RL_KEY_UP - word KEY_PAGE_UP, RL_KEY_PAGE_UP - word KEY_PAGE_DOWN, RL_KEY_PAGE_DOWN - word KEY_HOME, RL_KEY_HOME - word KEY_END, RL_KEY_END - word KEY_CAPS_LOCK, RL_KEY_CAPS_LOCK - word KEY_SCROLL_LOCK, RL_KEY_SCROLL_LOCK - word KEY_NUM_LOCK, RL_KEY_NUM_LOCK - word KEY_PRINT_SCREEN, RL_KEY_PRINT_SCREEN - word KEY_PAUSE, RL_KEY_PAUSE - word KEY_F1, RL_KEY_F1 - word KEY_F2, RL_KEY_F2 - word KEY_F3, RL_KEY_F3 - word KEY_F4, RL_KEY_F4 - word KEY_F5, RL_KEY_F5 - word KEY_F6, RL_KEY_F6 - word KEY_F7, RL_KEY_F7 - word KEY_F8, RL_KEY_F8 - word KEY_F9, RL_KEY_F9 - word KEY_F10, RL_KEY_F10 - word KEY_F11, RL_KEY_F11 - word KEY_F12, RL_KEY_F12 - word KEY_LEFT_SHIFT, RL_KEY_LEFT_SHIFT - word KEY_LEFT_CONTROL, RL_KEY_LEFT_CONTROL - word KEY_LEFT_ALT, RL_KEY_LEFT_ALT - word KEY_LEFT_SUPER, RL_KEY_LEFT_SUPER - word KEY_RIGHT_SHIFT, RL_KEY_RIGHT_SHIFT - word KEY_RIGHT_CONTROL, RL_KEY_RIGHT_CONTROL - word KEY_RIGHT_ALT, RL_KEY_RIGHT_ALT - word KEY_RIGHT_SUPER, RL_KEY_RIGHT_SUPER - word KEY_KB_MENU, RL_KEY_KB_MENU - word KEY_KP_0, RL_KEY_KP_0 - word KEY_KP_1, RL_KEY_KP_1 - word KEY_KP_2, RL_KEY_KP_2 - word KEY_KP_3, RL_KEY_KP_3 - word KEY_KP_4, RL_KEY_KP_4 - word KEY_KP_5, RL_KEY_KP_5 - word KEY_KP_6, RL_KEY_KP_6 - word KEY_KP_7, RL_KEY_KP_7 - word KEY_KP_8, RL_KEY_KP_8 - word KEY_KP_9, RL_KEY_KP_9 - word KEY_KP_DECIMAL, RL_KEY_KP_DECIMAL - word KEY_KP_DIVIDE, RL_KEY_KP_DIVIDE - word KEY_KP_MULTIPLY, RL_KEY_KP_MULTIPLY - word KEY_KP_SUBTRACT, RL_KEY_KP_SUBTRACT - word KEY_KP_ADD, RL_KEY_KP_ADD - word KEY_KP_ENTER, RL_KEY_KP_ENTER - word KEY_KP_EQUAL, RL_KEY_KP_EQUAL - word KEY_BACK, RL_KEY_BACK - word KEY_MENU, RL_KEY_MENU - word KEY_VOLUME_UP, RL_KEY_VOLUME_UP - word KEY_VOLUME_DOWN, RL_KEY_VOLUME_DOWN -word MouseButton, RL_MouseButton - word MOUSE_BUTTON_LEFT, RL_MOUSE_BUTTON_LEFT - word MOUSE_BUTTON_RIGHT, RL_MOUSE_BUTTON_RIGHT - word MOUSE_BUTTON_MIDDLE, RL_MOUSE_BUTTON_MIDDLE - word MOUSE_BUTTON_SIDE, RL_MOUSE_BUTTON_SIDE - word MOUSE_BUTTON_EXTRA, RL_MOUSE_BUTTON_EXTRA - word MOUSE_BUTTON_FORWARD, RL_MOUSE_BUTTON_FORWARD - word MOUSE_BUTTON_BACK, RL_MOUSE_BUTTON_BACK - word MOUSE_LEFT_BUTTON, RL_MOUSE_LEFT_BUTTON - word MOUSE_RIGHT_BUTTON, RL_MOUSE_RIGHT_BUTTON - word MOUSE_MIDDLE_BUTTON, RL_MOUSE_MIDDLE_BUTTON -word MouseCursor, RL_MouseCursor - word MOUSE_CURSOR_DEFAULT, RL_MOUSE_CURSOR_DEFAULT - word MOUSE_CURSOR_ARROW, RL_MOUSE_CURSOR_ARROW - word MOUSE_CURSOR_IBEAM, RL_MOUSE_CURSOR_IBEAM - word MOUSE_CURSOR_CROSSHAIR, RL_MOUSE_CURSOR_CROSSHAIR - word MOUSE_CURSOR_POINTING_HAND, RL_MOUSE_CURSOR_POINTING_HAND - word MOUSE_CURSOR_RESIZE_EW, RL_MOUSE_CURSOR_RESIZE_EW - word MOUSE_CURSOR_RESIZE_NS, RL_MOUSE_CURSOR_RESIZE_NS - word MOUSE_CURSOR_RESIZE_NWSE, RL_MOUSE_CURSOR_RESIZE_NWSE - word MOUSE_CURSOR_RESIZE_NESW, RL_MOUSE_CURSOR_RESIZE_NESW - word MOUSE_CURSOR_RESIZE_ALL, RL_MOUSE_CURSOR_RESIZE_ALL - word MOUSE_CURSOR_NOT_ALLOWED, RL_MOUSE_CURSOR_NOT_ALLOWED -word GamepadButton, RL_GamepadButton - word GAMEPAD_BUTTON_UNKNOWN, RL_GAMEPAD_BUTTON_UNKNOWN - word GAMEPAD_BUTTON_LEFT_FACE_UP, RL_GAMEPAD_BUTTON_LEFT_FACE_UP - word GAMEPAD_BUTTON_LEFT_FACE_RIGHT, RL_GAMEPAD_BUTTON_LEFT_FACE_RIGHT - word GAMEPAD_BUTTON_LEFT_FACE_DOWN, RL_GAMEPAD_BUTTON_LEFT_FACE_DOWN - word GAMEPAD_BUTTON_LEFT_FACE_LEFT, RL_GAMEPAD_BUTTON_LEFT_FACE_LEFT - word GAMEPAD_BUTTON_RIGHT_FACE_UP, RL_GAMEPAD_BUTTON_RIGHT_FACE_UP - word GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, RL_GAMEPAD_BUTTON_RIGHT_FACE_RIGHT - word GAMEPAD_BUTTON_RIGHT_FACE_DOWN, RL_GAMEPAD_BUTTON_RIGHT_FACE_DOWN - word GAMEPAD_BUTTON_RIGHT_FACE_LEFT, RL_GAMEPAD_BUTTON_RIGHT_FACE_LEFT - word GAMEPAD_BUTTON_LEFT_TRIGGER_1, RL_GAMEPAD_BUTTON_LEFT_TRIGGER_1 - word GAMEPAD_BUTTON_LEFT_TRIGGER_2, RL_GAMEPAD_BUTTON_LEFT_TRIGGER_2 - word GAMEPAD_BUTTON_RIGHT_TRIGGER_1, RL_GAMEPAD_BUTTON_RIGHT_TRIGGER_1 - word GAMEPAD_BUTTON_RIGHT_TRIGGER_2, RL_GAMEPAD_BUTTON_RIGHT_TRIGGER_2 - word GAMEPAD_BUTTON_MIDDLE_LEFT, RL_GAMEPAD_BUTTON_MIDDLE_LEFT - word GAMEPAD_BUTTON_MIDDLE, RL_GAMEPAD_BUTTON_MIDDLE - word GAMEPAD_BUTTON_MIDDLE_RIGHT, RL_GAMEPAD_BUTTON_MIDDLE_RIGHT - word GAMEPAD_BUTTON_LEFT_THUMB, RL_GAMEPAD_BUTTON_LEFT_THUMB - word GAMEPAD_BUTTON_RIGHT_THUMB, RL_GAMEPAD_BUTTON_RIGHT_THUMB -word GamepadAxis, RL_GamepadAxis - word GAMEPAD_AXIS_LEFT_X, RL_GAMEPAD_AXIS_LEFT_X - word GAMEPAD_AXIS_LEFT_Y, RL_GAMEPAD_AXIS_LEFT_Y - word GAMEPAD_AXIS_RIGHT_X, RL_GAMEPAD_AXIS_RIGHT_X - word GAMEPAD_AXIS_RIGHT_Y, RL_GAMEPAD_AXIS_RIGHT_Y - word GAMEPAD_AXIS_LEFT_TRIGGER, RL_GAMEPAD_AXIS_LEFT_TRIGGER - word GAMEPAD_AXIS_RIGHT_TRIGGER, RL_GAMEPAD_AXIS_RIGHT_TRIGGER -word MaterialMapIndex, RL_MaterialMapIndex - word MATERIAL_MAP_ALBEDO, RL_MATERIAL_MAP_ALBEDO - word MATERIAL_MAP_METALNESS, RL_MATERIAL_MAP_METALNESS - word MATERIAL_MAP_NORMAL, RL_MATERIAL_MAP_NORMAL - word MATERIAL_MAP_ROUGHNESS, RL_MATERIAL_MAP_ROUGHNESS - word MATERIAL_MAP_OCCLUSION, RL_MATERIAL_MAP_OCCLUSION - word MATERIAL_MAP_EMISSION, RL_MATERIAL_MAP_EMISSION - word MATERIAL_MAP_HEIGHT, RL_MATERIAL_MAP_HEIGHT - word MATERIAL_MAP_CUBEMAP, RL_MATERIAL_MAP_CUBEMAP - word MATERIAL_MAP_IRRADIANCE, RL_MATERIAL_MAP_IRRADIANCE - word MATERIAL_MAP_PREFILTER, RL_MATERIAL_MAP_PREFILTER - word MATERIAL_MAP_BRDF, RL_MATERIAL_MAP_BRDF - word MATERIAL_MAP_DIFFUSE, RL_MATERIAL_MAP_DIFFUSE - word MATERIAL_MAP_SPECULAR, RL_MATERIAL_MAP_SPECULAR -word ShaderLocationIndex, RL_ShaderLocationIndex - word SHADER_LOC_VERTEX_POSITION, RL_SHADER_LOC_VERTEX_POSITION - word SHADER_LOC_VERTEX_TEXCOORD01, RL_SHADER_LOC_VERTEX_TEXCOORD01 - word SHADER_LOC_VERTEX_TEXCOORD02, RL_SHADER_LOC_VERTEX_TEXCOORD02 - word SHADER_LOC_VERTEX_NORMAL, RL_SHADER_LOC_VERTEX_NORMAL - word SHADER_LOC_VERTEX_TANGENT, RL_SHADER_LOC_VERTEX_TANGENT - word SHADER_LOC_VERTEX_COLOR, RL_SHADER_LOC_VERTEX_COLOR - word SHADER_LOC_MATRIX_MVP, RL_SHADER_LOC_MATRIX_MVP - word SHADER_LOC_MATRIX_VIEW, RL_SHADER_LOC_MATRIX_VIEW - word SHADER_LOC_MATRIX_PROJECTION, RL_SHADER_LOC_MATRIX_PROJECTION - word SHADER_LOC_MATRIX_MODEL, RL_SHADER_LOC_MATRIX_MODEL - word SHADER_LOC_MATRIX_NORMAL, RL_SHADER_LOC_MATRIX_NORMAL - word SHADER_LOC_VECTOR_VIEW, RL_SHADER_LOC_VECTOR_VIEW - word SHADER_LOC_COLOR_DIFFUSE, RL_SHADER_LOC_COLOR_DIFFUSE - word SHADER_LOC_COLOR_SPECULAR, RL_SHADER_LOC_COLOR_SPECULAR - word SHADER_LOC_COLOR_AMBIENT, RL_SHADER_LOC_COLOR_AMBIENT - word SHADER_LOC_MAP_ALBEDO, RL_SHADER_LOC_MAP_ALBEDO - word SHADER_LOC_MAP_METALNESS, RL_SHADER_LOC_MAP_METALNESS - word SHADER_LOC_MAP_NORMAL, RL_SHADER_LOC_MAP_NORMAL - word SHADER_LOC_MAP_ROUGHNESS, RL_SHADER_LOC_MAP_ROUGHNESS - word SHADER_LOC_MAP_OCCLUSION, RL_SHADER_LOC_MAP_OCCLUSION - word SHADER_LOC_MAP_EMISSION, RL_SHADER_LOC_MAP_EMISSION - word SHADER_LOC_MAP_HEIGHT, RL_SHADER_LOC_MAP_HEIGHT - word SHADER_LOC_MAP_CUBEMAP, RL_SHADER_LOC_MAP_CUBEMAP - word SHADER_LOC_MAP_IRRADIANCE, RL_SHADER_LOC_MAP_IRRADIANCE - word SHADER_LOC_MAP_PREFILTER, RL_SHADER_LOC_MAP_PREFILTER - word SHADER_LOC_MAP_BRDF, RL_SHADER_LOC_MAP_BRDF - word SHADER_LOC_MAP_DIFFUSE, RL_SHADER_LOC_MAP_DIFFUSE - word SHADER_LOC_MAP_SPECULAR, RL_SHADER_LOC_MAP_SPECULAR -word ShaderUniformDataType, RL_ShaderUniformDataType - word SHADER_UNIFORM_FLOAT, RL_SHADER_UNIFORM_FLOAT - word SHADER_UNIFORM_VEC2, RL_SHADER_UNIFORM_VEC2 - word SHADER_UNIFORM_VEC3, RL_SHADER_UNIFORM_VEC3 - word SHADER_UNIFORM_VEC4, RL_SHADER_UNIFORM_VEC4 - word SHADER_UNIFORM_INT, RL_SHADER_UNIFORM_INT - word SHADER_UNIFORM_IVEC2, RL_SHADER_UNIFORM_IVEC2 - word SHADER_UNIFORM_IVEC3, RL_SHADER_UNIFORM_IVEC3 - word SHADER_UNIFORM_IVEC4, RL_SHADER_UNIFORM_IVEC4 - word SHADER_UNIFORM_SAMPLER2D, RL_SHADER_UNIFORM_SAMPLER2D -word ShaderAttributeDataType, RL_ShaderAttributeDataType - word SHADER_ATTRIB_FLOAT, RL_SHADER_ATTRIB_FLOAT - word SHADER_ATTRIB_VEC2, RL_SHADER_ATTRIB_VEC2 - word SHADER_ATTRIB_VEC3, RL_SHADER_ATTRIB_VEC3 - word SHADER_ATTRIB_VEC4, RL_SHADER_ATTRIB_VEC4 -word PixelFormat, RL_PixelFormat - word PIXELFORMAT_UNCOMPRESSED_GRAYSCALE, RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE - word PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA - word PIXELFORMAT_UNCOMPRESSED_R5G6B5, RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5 - word PIXELFORMAT_UNCOMPRESSED_R8G8B8, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8 - word PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 - word PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 - word PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 - word PIXELFORMAT_UNCOMPRESSED_R32, RL_PIXELFORMAT_UNCOMPRESSED_R32 - word PIXELFORMAT_UNCOMPRESSED_R32G32B32, RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32 - word PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 - word PIXELFORMAT_UNCOMPRESSED_R16, RL_PIXELFORMAT_UNCOMPRESSED_R16 - word PIXELFORMAT_UNCOMPRESSED_R16G16B16, RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16 - word PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 - word PIXELFORMAT_COMPRESSED_DXT1_RGB, RL_PIXELFORMAT_COMPRESSED_DXT1_RGB - word PIXELFORMAT_COMPRESSED_DXT1_RGBA, RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA - word PIXELFORMAT_COMPRESSED_DXT3_RGBA, RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA - word PIXELFORMAT_COMPRESSED_DXT5_RGBA, RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA - word PIXELFORMAT_COMPRESSED_ETC1_RGB, RL_PIXELFORMAT_COMPRESSED_ETC1_RGB - word PIXELFORMAT_COMPRESSED_ETC2_RGB, RL_PIXELFORMAT_COMPRESSED_ETC2_RGB - word PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA - word PIXELFORMAT_COMPRESSED_PVRT_RGB, RL_PIXELFORMAT_COMPRESSED_PVRT_RGB - word PIXELFORMAT_COMPRESSED_PVRT_RGBA, RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA - word PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA - word PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA, RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA -word TextureFilter, RL_TextureFilter - word TEXTURE_FILTER_POINT, RL_TEXTURE_FILTER_POINT - word TEXTURE_FILTER_BILINEAR, RL_TEXTURE_FILTER_BILINEAR - word TEXTURE_FILTER_TRILINEAR, RL_TEXTURE_FILTER_TRILINEAR - word TEXTURE_FILTER_ANISOTROPIC_4X, RL_TEXTURE_FILTER_ANISOTROPIC_4X - word TEXTURE_FILTER_ANISOTROPIC_8X, RL_TEXTURE_FILTER_ANISOTROPIC_8X - word TEXTURE_FILTER_ANISOTROPIC_16X, RL_TEXTURE_FILTER_ANISOTROPIC_16X -word TextureWrap, RL_TextureWrap - word TEXTURE_WRAP_REPEAT, RL_TEXTURE_WRAP_REPEAT - word TEXTURE_WRAP_CLAMP, RL_TEXTURE_WRAP_CLAMP - word TEXTURE_WRAP_MIRROR_REPEAT, RL_TEXTURE_WRAP_MIRROR_REPEAT - word TEXTURE_WRAP_MIRROR_CLAMP, RL_TEXTURE_WRAP_MIRROR_CLAMP -word CubemapLayout, RL_CubemapLayout - word CUBEMAP_LAYOUT_AUTO_DETECT, RL_CUBEMAP_LAYOUT_AUTO_DETECT - word CUBEMAP_LAYOUT_LINE_VERTICAL, RL_CUBEMAP_LAYOUT_LINE_VERTICAL - word CUBEMAP_LAYOUT_LINE_HORIZONTAL, RL_CUBEMAP_LAYOUT_LINE_HORIZONTAL - word CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, RL_CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR - word CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE, RL_CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE - word CUBEMAP_LAYOUT_PANORAMA, RL_CUBEMAP_LAYOUT_PANORAMA -word FontType, RL_FontType - word FONT_DEFAULT, RL_FONT_DEFAULT - word FONT_BITMAP, RL_FONT_BITMAP - word FONT_SDF, RL_FONT_SDF -word BlendMode, RL_BlendMode - word BLEND_ALPHA, RL_BLEND_ALPHA - word BLEND_ADDITIVE, RL_BLEND_ADDITIVE - word BLEND_MULTIPLIED, RL_BLEND_MULTIPLIED - word BLEND_ADD_COLORS, RL_BLEND_ADD_COLORS - word BLEND_SUBTRACT_COLORS, RL_BLEND_SUBTRACT_COLORS - word BLEND_ALPHA_PREMULTIPLY, RL_BLEND_ALPHA_PREMULTIPLY - word BLEND_CUSTOM, RL_BLEND_CUSTOM - word BLEND_CUSTOM_SEPARATE, RL_BLEND_CUSTOM_SEPARATE -word Gesture, RL_Gesture - word GESTURE_NONE, RL_GESTURE_NONE - word GESTURE_TAP, RL_GESTURE_TAP - word GESTURE_DOUBLETAP, RL_GESTURE_DOUBLETAP - word GESTURE_HOLD, RL_GESTURE_HOLD - word GESTURE_DRAG, RL_GESTURE_DRAG - word GESTURE_SWIPE_RIGHT, RL_GESTURE_SWIPE_RIGHT - word GESTURE_SWIPE_LEFT, RL_GESTURE_SWIPE_LEFT - word GESTURE_SWIPE_UP, RL_GESTURE_SWIPE_UP - word GESTURE_SWIPE_DOWN, RL_GESTURE_SWIPE_DOWN - word GESTURE_PINCH_IN, RL_GESTURE_PINCH_IN - word GESTURE_PINCH_OUT, RL_GESTURE_PINCH_OUT -word CameraMode, RL_CameraMode -word CAMERA_CUSTOM, RL_CAMERA_CUSTOM -word CAMERA_FREE, RL_CAMERA_FREE -word CAMERA_ORBITAL, RL_CAMERA_ORBITAL -word CAMERA_FIRST_PERSON, RL_CAMERA_FIRST_PERSON -word CAMERA_THIRD_PERSON, RL_CAMERA_THIRD_PERSON -word CameraProjection, RL_CameraProjection - word CAMERA_PERSPECTIVE, RL_CAMERA_PERSPECTIVE - word CAMERA_ORTHOGRAPHIC, RL_CAMERA_ORTHOGRAPHIC -word NPatchLayout, RL_NPatchLayout - word NPATCH_NINE_PATCH, RL_NPATCH_NINE_PATCH - word NPATCH_THREE_PATCH_VERTICAL, RL_NPATCH_THREE_PATCH_VERTICAL - word NPATCH_THREE_PATCH_HORIZONTAL, RL_NPATCH_THREE_PATCH_HORIZONTAL - -word TraceLogCallback, RL_TraceLogCallback -word LoadFileDataCallback, RL_LoadFileDataCallback -word SaveFileDataCallback, RL_SaveFileDataCallback -word LoadFileTextCallback, RL_LoadFileTextCallback -word SaveFileTextCallback, RL_SaveFileTextCallback - -word InitWindow, RL_InitWindow -word CloseWindow, RL_CloseWindow -word WindowShouldClose, RL_WindowShouldClose -word IsWindowReady, RL_IsWindowReady -word IsWindowFullscreen, RL_IsWindowFullscreen -word IsWindowHidden, RL_IsWindowHidden -word IsWindowMinimized, RL_IsWindowMinimized -word IsWindowMaximized, RL_IsWindowMaximized -word IsWindowFocused, RL_IsWindowFocused -word IsWindowResized, RL_IsWindowResized -word IsWindowState, RL_IsWindowState -word SetWindowState, RL_SetWindowState -word ClearWindowState, RL_ClearWindowState -word ToggleFullscreen, RL_ToggleFullscreen -word ToggleBorderlessWindowed, RL_ToggleBorderlessWindowed -word MaximizeWindow, RL_MaximizeWindow -word MinimizeWindow, RL_MinimizeWindow -word RestoreWindow, RL_RestoreWindow -word SetWindowIcon, RL_SetWindowIcon -word SetWindowIcons, RL_SetWindowIcons -word SetWindowTitle, RL_SetWindowTitle -word SetWindowPosition, RL_SetWindowPosition -word SetWindowMonitor, RL_SetWindowMonitor -word SetWindowMinSize, RL_SetWindowMinSize -word SetWindowMaxSize, RL_SetWindowMaxSize -word SetWindowSize, RL_SetWindowSize -word SetWindowOpacity, RL_SetWindowOpacity -word SetWindowFocused, RL_SetWindowFocused -word GetWindowHandle, RL_GetWindowHandle -word GetScreenWidth, RL_GetScreenWidth -word GetScreenHeight, RL_GetScreenHeight -word GetRenderWidth, RL_GetRenderWidth -word GetRenderHeight, RL_GetRenderHeight -word GetMonitorCount, RL_GetMonitorCount -word GetCurrentMonitor, RL_GetCurrentMonitor -word GetMonitorPosition, RL_GetMonitorPosition -word GetMonitorWidth, RL_GetMonitorWidth -word GetMonitorHeight, RL_GetMonitorHeight -word GetMonitorPhysicalWidth, RL_GetMonitorPhysicalWidth -word GetMonitorPhysicalHeight, RL_GetMonitorPhysicalHeight -word GetMonitorRefreshRate, RL_GetMonitorRefreshRate -word GetWindowPosition, RL_GetWindowPosition -word GetWindowScaleDPI, RL_GetWindowScaleDPI -word GetMonitorName, RL_GetMonitorName -word SetClipboardText, RL_SetClipboardText -word GetClipboardText, RL_GetClipboardText -word EnableEventWaiting, RL_EnableEventWaiting -word DisableEventWaiting, RL_DisableEventWaiting -word ShowCursor, RL_ShowCursor -word HideCursor, RL_HideCursor -word IsCursorHidden, RL_IsCursorHidden -word EnableCursor, RL_EnableCursor -word DisableCursor, RL_DisableCursor -word IsCursorOnScreen, RL_IsCursorOnScreen -word ClearBackground, RL_ClearBackground -word BeginDrawing, RL_BeginDrawing -word EndDrawing, RL_EndDrawing -word BeginMode2D, RL_BeginMode2D -word EndMode2D, RL_EndMode2D -word BeginMode3D, RL_BeginMode3D -word EndMode3D, RL_EndMode3D -word BeginTextureMode, RL_BeginTextureMode -word EndTextureMode, RL_EndTextureMode -word BeginShaderMode, RL_BeginShaderMode -word EndShaderMode, RL_EndShaderMode -word BeginBlendMode, RL_BeginBlendMode -word EndBlendMode, RL_EndBlendMode -word BeginScissorMode, RL_BeginScissorMode -word EndScissorMode, RL_EndScissorMode -word BeginVrStereoMode, RL_BeginVrStereoMode -word EndVrStereoMode, RL_EndVrStereoMode -word LoadVrStereoConfig, RL_LoadVrStereoConfig -word UnloadVrStereoConfig, RL_UnloadVrStereoConfig -word LoadShader, RL_LoadShader -word LoadShaderFromMemory, RL_LoadShaderFromMemory -word IsShaderReady, RL_IsShaderReady -word GetShaderLocation, RL_GetShaderLocation -word GetShaderLocationAttrib, RL_GetShaderLocationAttrib -word SetShaderValue, RL_SetShaderValue -word SetShaderValueV, RL_SetShaderValueV -word SetShaderValueMatrix, RL_SetShaderValueMatrix -word SetShaderValueTexture, RL_SetShaderValueTexture -word UnloadShader, RL_UnloadShader -word GetMouseRay, RL_GetMouseRay -word GetCameraMatrix, RL_GetCameraMatrix -word GetCameraMatrix2D, RL_GetCameraMatrix2D -word GetWorldToScreen, RL_GetWorldToScreen -word GetScreenToWorld2D, RL_GetScreenToWorld2D -word GetWorldToScreenEx, RL_GetWorldToScreenEx -word GetWorldToScreen2D, RL_GetWorldToScreen2D -word SetTargetFPS, RL_SetTargetFPS -word GetFrameTime, RL_GetFrameTime -word GetTime, RL_GetTime -word GetFPS, RL_GetFPS -word SwapScreenBuffer, RL_SwapScreenBuffer -word PollInputEvents, RL_PollInputEvents -word WaitTime, RL_WaitTime -word GetRandomValue, RL_GetRandomValue -word SetRandomSeed, RL_SetRandomSeed -word TakeScreenshot, RL_TakeScreenshot -word SetConfigFlags, RL_SetConfigFlags -word OpenURL, RL_OpenURL -word TraceLog, RL_TraceLog -word SetTraceLogLevel, RL_SetTraceLogLevel -word MemAlloc, RL_MemAlloc -word MemRealloc, RL_MemRealloc -word MemFree, RL_MemFree -word SetTraceLogCallback, RL_SetTraceLogCallback -word SetLoadFileDataCallback, RL_SetLoadFileDataCallback -word SetSaveFileDataCallback, RL_SetSaveFileDataCallback -word SetLoadFileTextCallback, RL_SetLoadFileTextCallback -word SetSaveFileTextCallback, RL_SetSaveFileTextCallback -word LoadFileData, RL_LoadFileData -word UnloadFileData, RL_UnloadFileData -word SaveFileData, RL_SaveFileData -word ExportDataAsCode, RL_ExportDataAsCode -word LoadFileText, RL_LoadFileText -word UnloadFileText, RL_UnloadFileText -word SaveFileText, RL_SaveFileText -word FileExists, RL_FileExists -word DirectoryExists, RL_DirectoryExists -word IsFileExtension, RL_IsFileExtension -word GetFileLength, RL_GetFileLength -word GetFileExtension, RL_GetFileExtension -word GetFileName, RL_GetFileName -word GetFileNameWithoutExt, RL_GetFileNameWithoutExt -word GetDirectoryPath, RL_GetDirectoryPath -word GetPrevDirectoryPath, RL_GetPrevDirectoryPath -word GetWorkingDirectory, RL_GetWorkingDirectory -word GetApplicationDirectory, RL_GetApplicationDirectory -word ChangeDirectory, RL_ChangeDirectory -word IsPathFile, RL_IsPathFile -word LoadDirectoryFiles, RL_LoadDirectoryFiles -word LoadDirectoryFilesEx, RL_LoadDirectoryFilesEx -word UnloadDirectoryFiles, RL_UnloadDirectoryFiles -word IsFileDropped, RL_IsFileDropped -word LoadDroppedFiles, RL_LoadDroppedFiles -word UnloadDroppedFiles, RL_UnloadDroppedFiles -word GetFileModTime, RL_GetFileModTime -word CompressData, RL_CompressData -word DecompressData, RL_DecompressData -word EncodeDataBase64, RL_EncodeDataBase64 -word DecodeDataBase64, RL_DecodeDataBase64 -word LoadAutomationEventList, RL_LoadAutomationEventList -word UnloadAutomationEventList, RL_UnloadAutomationEventList -word ExportAutomationEventList, RL_ExportAutomationEventList -word SetAutomationEventList, RL_SetAutomationEventList -word SetAutomationEventBaseFrame, RL_SetAutomationEventBaseFrame -word StartAutomationEventRecording, RL_StartAutomationEventRecording -word StopAutomationEventRecording, RL_StopAutomationEventRecording -word PlayAutomationEvent, RL_PlayAutomationEvent -word IsKeyPressed, RL_IsKeyPressed -word IsKeyPressedRepeat, RL_IsKeyPressedRepeat -word IsKeyDown, RL_IsKeyDown -word IsKeyReleased, RL_IsKeyReleased -word IsKeyUp, RL_IsKeyUp -word GetKeyPressed, RL_GetKeyPressed -word GetCharPressed, RL_GetCharPressed -word SetExitKey, RL_SetExitKey -word IsGamepadAvailable, RL_IsGamepadAvailable -word GetGamepadName, RL_GetGamepadName -word IsGamepadButtonPressed, RL_IsGamepadButtonPressed -word IsGamepadButtonDown, RL_IsGamepadButtonDown -word IsGamepadButtonReleased, RL_IsGamepadButtonReleased -word IsGamepadButtonUp, RL_IsGamepadButtonUp -word GetGamepadButtonPressed, RL_GetGamepadButtonPressed -word GetGamepadAxisCount, RL_GetGamepadAxisCount -word GetGamepadAxisMovement, RL_GetGamepadAxisMovement -word SetGamepadMappings, RL_SetGamepadMappings -word IsMouseButtonPressed, RL_IsMouseButtonPressed -word IsMouseButtonDown, RL_IsMouseButtonDown -word IsMouseButtonReleased, RL_IsMouseButtonReleased -word IsMouseButtonUp, RL_IsMouseButtonUp -word GetMouseX, RL_GetMouseX -word GetMouseY, RL_GetMouseY -word GetMousePosition, RL_GetMousePosition -word GetMouseDelta, RL_GetMouseDelta -word SetMousePosition, RL_SetMousePosition -word SetMouseOffset, RL_SetMouseOffset -word SetMouseScale, RL_SetMouseScale -word GetMouseWheelMove, RL_GetMouseWheelMove -word GetMouseWheelMoveV, RL_GetMouseWheelMoveV -word SetMouseCursor, RL_SetMouseCursor -word GetTouchX, RL_GetTouchX -word GetTouchY, RL_GetTouchY -word GetTouchPosition, RL_GetTouchPosition -word GetTouchPointId, RL_GetTouchPointId -word GetTouchPointCount, RL_GetTouchPointCount -word SetGesturesEnabled, RL_SetGesturesEnabled -word IsGestureDetected, RL_IsGestureDetected -word GetGestureDetected, RL_GetGestureDetected -word GetGestureHoldDuration, RL_GetGestureHoldDuration -word GetGestureDragVector, RL_GetGestureDragVector -word GetGestureDragAngle, RL_GetGestureDragAngle -word GetGesturePinchVector, RL_GetGesturePinchVector -word GetGesturePinchAngle, RL_GetGesturePinchAngle -word UpdateCamera, RL_UpdateCamera -word UpdateCameraPro, RL_UpdateCameraPro -word SetShapesTexture, RL_SetShapesTexture -word DrawPixel, RL_DrawPixel -word DrawPixelV, RL_DrawPixelV -word DrawLine, RL_DrawLine -word DrawLineV, RL_DrawLineV -word DrawLineEx, RL_DrawLineEx -word DrawLineBezier, RL_DrawLineBezier -word DrawLineBezierQuad, RL_DrawLineBezierQuad -word DrawLineBezierCubic, RL_DrawLineBezierCubic -word DrawLineBSpline, RL_DrawLineBSpline -word DrawLineCatmullRom, RL_DrawLineCatmullRom -word DrawLineStrip, RL_DrawLineStrip -word DrawCircle, RL_DrawCircle -word DrawCircleSector, RL_DrawCircleSector -word DrawCircleSectorLines, RL_DrawCircleSectorLines -word DrawCircleGradient, RL_DrawCircleGradient -word DrawCircleV, RL_DrawCircleV -word DrawCircleLines, RL_DrawCircleLines -word DrawCircleLinesV, RL_DrawCircleLinesV -word DrawEllipse, RL_DrawEllipse -word DrawEllipseLines, RL_DrawEllipseLines -word DrawRing, RL_DrawRing -word DrawRingLines, RL_DrawRingLines -word DrawRectangle, RL_DrawRectangle -word DrawRectangleV, RL_DrawRectangleV -word DrawRectangleRec, RL_DrawRectangleRec -word DrawRectanglePro, RL_DrawRectanglePro -word DrawRectangleGradientV, RL_DrawRectangleGradientV -word DrawRectangleGradientH, RL_DrawRectangleGradientH -word DrawRectangleGradientEx, RL_DrawRectangleGradientEx -word DrawRectangleLines, RL_DrawRectangleLines -word DrawRectangleLinesEx, RL_DrawRectangleLinesEx -word DrawRectangleRounded, RL_DrawRectangleRounded -word DrawRectangleRoundedLines, RL_DrawRectangleRoundedLines -word DrawTriangle, RL_DrawTriangle -word DrawTriangleLines, RL_DrawTriangleLines -word DrawTriangleFan, RL_DrawTriangleFan -word DrawTriangleStrip, RL_DrawTriangleStrip -word DrawPoly, RL_DrawPoly -word DrawPolyLines, RL_DrawPolyLines -word DrawPolyLinesEx, RL_DrawPolyLinesEx -word CheckCollisionRecs, RL_CheckCollisionRecs -word CheckCollisionCircles, RL_CheckCollisionCircles -word CheckCollisionCircleRec, RL_CheckCollisionCircleRec -word CheckCollisionPointRec, RL_CheckCollisionPointRec -word CheckCollisionPointCircle, RL_CheckCollisionPointCircle -word CheckCollisionPointTriangle, RL_CheckCollisionPointTriangle -word CheckCollisionPointPoly, RL_CheckCollisionPointPoly -word CheckCollisionLines, RL_CheckCollisionLines -word CheckCollisionPointLine, RL_CheckCollisionPointLine -word GetCollisionRec, RL_GetCollisionRec -word LoadImage, RL_LoadImage -word LoadImageRaw, RL_LoadImageRaw -word LoadImageSvg, RL_LoadImageSvg -word LoadImageAnim, RL_LoadImageAnim -word LoadImageFromMemory, RL_LoadImageFromMemory -word LoadImageFromTexture, RL_LoadImageFromTexture -word LoadImageFromScreen, RL_LoadImageFromScreen -word IsImageReady, RL_IsImageReady -word UnloadImage, RL_UnloadImage -word ExportImage, RL_ExportImage -word ExportImageToMemory, RL_ExportImageToMemory -word ExportImageAsCode, RL_ExportImageAsCode -word GenImageColor, RL_GenImageColor -word GenImageGradientLinear, RL_GenImageGradientLinear -word GenImageGradientRadial, RL_GenImageGradientRadial -word GenImageGradientSquare, RL_GenImageGradientSquare -word GenImageChecked, RL_GenImageChecked -word GenImageWhiteNoise, RL_GenImageWhiteNoise -word GenImagePerlinNoise, RL_GenImagePerlinNoise -word GenImageCellular, RL_GenImageCellular -word GenImageText, RL_GenImageText -word ImageCopy, RL_ImageCopy -word ImageFromImage, RL_ImageFromImage -word ImageText, RL_ImageText -word ImageTextEx, RL_ImageTextEx -word ImageFormat, RL_ImageFormat -word ImageToPOT, RL_ImageToPOT -word ImageCrop, RL_ImageCrop -word ImageAlphaCrop, RL_ImageAlphaCrop -word ImageAlphaClear, RL_ImageAlphaClear -word ImageAlphaMask, RL_ImageAlphaMask -word ImageAlphaPremultiply, RL_ImageAlphaPremultiply -word ImageBlurGaussian, RL_ImageBlurGaussian -word ImageResize, RL_ImageResize -word ImageResizeNN, RL_ImageResizeNN -word ImageResizeCanvas, RL_ImageResizeCanvas -word ImageMipmaps, RL_ImageMipmaps -word ImageDither, RL_ImageDither -word ImageFlipVertical, RL_ImageFlipVertical -word ImageFlipHorizontal, RL_ImageFlipHorizontal -word ImageRotate, RL_ImageRotate -word ImageRotateCW, RL_ImageRotateCW -word ImageRotateCCW, RL_ImageRotateCCW -word ImageColorTint, RL_ImageColorTint -word ImageColorInvert, RL_ImageColorInvert -word ImageColorGrayscale, RL_ImageColorGrayscale -word ImageColorContrast, RL_ImageColorContrast -word ImageColorBrightness, RL_ImageColorBrightness -word ImageColorReplace, RL_ImageColorReplace -word LoadImageColors, RL_LoadImageColors -word LoadImagePalette, RL_LoadImagePalette -word UnloadImageColors, RL_UnloadImageColors -word UnloadImagePalette, RL_UnloadImagePalette -word GetImageAlphaBorder, RL_GetImageAlphaBorder -word GetImageColor, RL_GetImageColor -word ImageClearBackground, RL_ImageClearBackground -word ImageDrawPixel, RL_ImageDrawPixel -word ImageDrawPixelV, RL_ImageDrawPixelV -word ImageDrawLine, RL_ImageDrawLine -word ImageDrawLineV, RL_ImageDrawLineV -word ImageDrawCircle, RL_ImageDrawCircle -word ImageDrawCircleV, RL_ImageDrawCircleV -word ImageDrawCircleLines, RL_ImageDrawCircleLines -word ImageDrawCircleLinesV, RL_ImageDrawCircleLinesV -word ImageDrawRectangle, RL_ImageDrawRectangle -word ImageDrawRectangleV, RL_ImageDrawRectangleV -word ImageDrawRectangleRec, RL_ImageDrawRectangleRec -word ImageDrawRectangleLines, RL_ImageDrawRectangleLines -word ImageDraw, RL_ImageDraw -word ImageDrawText, RL_ImageDrawText -word ImageDrawTextEx, RL_ImageDrawTextEx -word LoadTexture, RL_LoadTexture -word LoadTextureFromImage, RL_LoadTextureFromImage -word LoadTextureCubemap, RL_LoadTextureCubemap -word LoadRenderTexture, RL_LoadRenderTexture -word IsTextureReady, RL_IsTextureReady -word UnloadTexture, RL_UnloadTexture -word IsRenderTextureReady, RL_IsRenderTextureReady -word UnloadRenderTexture, RL_UnloadRenderTexture -word UpdateTexture, RL_UpdateTexture -word UpdateTextureRec, RL_UpdateTextureRec -word GenTextureMipmaps, RL_GenTextureMipmaps -word SetTextureFilter, RL_SetTextureFilter -word SetTextureWrap, RL_SetTextureWrap -word DrawTexture, RL_DrawTexture -word DrawTextureV, RL_DrawTextureV -word DrawTextureEx, RL_DrawTextureEx -word DrawTextureRec, RL_DrawTextureRec -word DrawTexturePro, RL_DrawTexturePro -word DrawTextureNPatch, RL_DrawTextureNPatch -word Fade, RL_Fade -word ColorToInt, RL_ColorToInt -word ColorNormalize, RL_ColorNormalize -word ColorFromNormalized, RL_ColorFromNormalized -word ColorToHSV, RL_ColorToHSV -word ColorFromHSV, RL_ColorFromHSV -word ColorTint, RL_ColorTint -word ColorBrightness, RL_ColorBrightness -word ColorContrast, RL_ColorContrast -word ColorAlpha, RL_ColorAlpha -word ColorAlphaBlend, RL_ColorAlphaBlend -word GetColor, RL_GetColor -word GetPixelColor, RL_GetPixelColor -word SetPixelColor, RL_SetPixelColor -word GetPixelDataSize, RL_GetPixelDataSize -word GetFontDefault, RL_GetFontDefault -word LoadFont, RL_LoadFont -word LoadFontEx, RL_LoadFontEx -word LoadFontFromImage, RL_LoadFontFromImage -word LoadFontFromMemory, RL_LoadFontFromMemory -word IsFontReady, RL_IsFontReady -word LoadFontData, RL_LoadFontData -word GenImageFontAtlas, RL_GenImageFontAtlas -word UnloadFontData, RL_UnloadFontData -word UnloadFont, RL_UnloadFont -word ExportFontAsCode, RL_ExportFontAsCode -word DrawFPS, RL_DrawFPS -word DrawText, RL_DrawText -word DrawTextEx, RL_DrawTextEx -word DrawTextPro, RL_DrawTextPro -word DrawTextCodepoint, RL_DrawTextCodepoint -word DrawTextCodepoints, RL_DrawTextCodepoints -word SetTextLineSpacing, RL_SetTextLineSpacing -word MeasureText, RL_MeasureText -word MeasureTextEx, RL_MeasureTextEx -word GetGlyphIndex, RL_GetGlyphIndex -word GetGlyphInfo, RL_GetGlyphInfo -word GetGlyphAtlasRec, RL_GetGlyphAtlasRec -word LoadUTF8, RL_LoadUTF8 -word UnloadUTF8, RL_UnloadUTF8 -word LoadCodepoints, RL_LoadCodepoints -word UnloadCodepoints, RL_UnloadCodepoints -word GetCodepointCount, RL_GetCodepointCount -word GetCodepoint, RL_GetCodepoint -word GetCodepointNext, RL_GetCodepointNext -word GetCodepointPrevious, RL_GetCodepointPrevious -word CodepointToUTF8, RL_CodepointToUTF8 -word TextCopy, RL_TextCopy -word TextIsEqual, RL_TextIsEqual -word TextLength, RL_TextLength -word TextFormat, RL_TextFormat -word TextSubtext, RL_TextSubtext -word TextReplace, RL_TextReplace -word TextInsert, RL_TextInsert -word TextJoin, RL_TextJoin -word TextAppend, RL_TextAppend -word TextFindIndex, RL_TextFindIndex -word TextToUpper, RL_TextToUpper -word TextToLower, RL_TextToLower -word TextToPascal, RL_TextToPascal -word TextToInteger, RL_TextToInteger -word DrawLine3D, RL_DrawLine3D -word DrawPoint3D, RL_DrawPoint3D -word DrawCircle3D, RL_DrawCircle3D -word DrawTriangle3D, RL_DrawTriangle3D -word DrawTriangleStrip3D, RL_DrawTriangleStrip3D -word DrawCube, RL_DrawCube -word DrawCubeV, RL_DrawCubeV -word DrawCubeWires, RL_DrawCubeWires -word DrawCubeWiresV, RL_DrawCubeWiresV -word DrawSphere, RL_DrawSphere -word DrawSphereEx, RL_DrawSphereEx -word DrawSphereWires, RL_DrawSphereWires -word DrawCylinder, RL_DrawCylinder -word DrawCylinderEx, RL_DrawCylinderEx -word DrawCylinderWires, RL_DrawCylinderWires -word DrawCylinderWiresEx, RL_DrawCylinderWiresEx -word DrawCapsule, RL_DrawCapsule -word DrawCapsuleWires, RL_DrawCapsuleWires -word DrawPlane, RL_DrawPlane -word DrawRay, RL_DrawRay -word DrawGrid, RL_DrawGrid -word LoadModel, RL_LoadModel -word LoadModelFromMesh, RL_LoadModelFromMesh -word IsModelReady, RL_IsModelReady -word UnloadModel, RL_UnloadModel -word GetModelBoundingBox, RL_GetModelBoundingBox -word DrawModel, RL_DrawModel -word DrawModelEx, RL_DrawModelEx -word DrawModelWires, RL_DrawModelWires -word DrawModelWiresEx, RL_DrawModelWiresEx -word DrawBoundingBox, RL_DrawBoundingBox -word DrawBillboard, RL_DrawBillboard -word DrawBillboardRec, RL_DrawBillboardRec -word DrawBillboardPro, RL_DrawBillboardPro -word UploadMesh, RL_UploadMesh -word UpdateMeshBuffer, RL_UpdateMeshBuffer -word UnloadMesh, RL_UnloadMesh -word DrawMesh, RL_DrawMesh -word DrawMeshInstanced, RL_DrawMeshInstanced -word ExportMesh, RL_ExportMesh -word GetMeshBoundingBox, RL_GetMeshBoundingBox -word GenMeshTangents, RL_GenMeshTangents -word GenMeshPoly, RL_GenMeshPoly -word GenMeshPlane, RL_GenMeshPlane -word GenMeshCube, RL_GenMeshCube -word GenMeshSphere, RL_GenMeshSphere -word GenMeshHemiSphere, RL_GenMeshHemiSphere -word GenMeshCylinder, RL_GenMeshCylinder -word GenMeshCone, RL_GenMeshCone -word GenMeshTorus, RL_GenMeshTorus -word GenMeshKnot, RL_GenMeshKnot -word GenMeshHeightmap, RL_GenMeshHeightmap -word GenMeshCubicmap, RL_GenMeshCubicmap -word LoadMaterials, RL_LoadMaterials -word LoadMaterialDefault, RL_LoadMaterialDefault -word IsMaterialReady, RL_IsMaterialReady -word UnloadMaterial, RL_UnloadMaterial -word SetMaterialTexture, RL_SetMaterialTexture -word SetModelMeshMaterial, RL_SetModelMeshMaterial -word LoadModelAnimations, RL_LoadModelAnimations -word UpdateModelAnimation, RL_UpdateModelAnimation -word UnloadModelAnimation, RL_UnloadModelAnimation -word UnloadModelAnimations, RL_UnloadModelAnimations -word IsModelAnimationValid, RL_IsModelAnimationValid -word CheckCollisionSpheres, RL_CheckCollisionSpheres -word CheckCollisionBoxes, RL_CheckCollisionBoxes -word CheckCollisionBoxSphere, RL_CheckCollisionBoxSphere -word GetRayCollisionSphere, RL_GetRayCollisionSphere -word GetRayCollisionBox, RL_GetRayCollisionBox -word GetRayCollisionMesh, RL_GetRayCollisionMesh -word GetRayCollisionTriangle, RL_GetRayCollisionTriangle -word GetRayCollisionQuad, RL_GetRayCollisionQuad -word InitAudioDevice, RL_InitAudioDevice -word CloseAudioDevice, RL_CloseAudioDevice -word IsAudioDeviceReady, RL_IsAudioDeviceReady -word SetMasterVolume, RL_SetMasterVolume -word GetMasterVolume, RL_GetMasterVolume -word LoadWave, RL_LoadWave -word LoadWaveFromMemory, RL_LoadWaveFromMemory -word IsWaveReady, RL_IsWaveReady -word LoadSound, RL_LoadSound -word LoadSoundFromWave, RL_LoadSoundFromWave -word LoadSoundAlias, RL_LoadSoundAlias -word IsSoundReady, RL_IsSoundReady -word UpdateSound, RL_UpdateSound -word UnloadWave, RL_UnloadWave -word UnloadSound, RL_UnloadSound -word UnloadSoundAlias, RL_UnloadSoundAlias -word ExportWave, RL_ExportWave -word ExportWaveAsCode, RL_ExportWaveAsCode -word PlaySound, RL_PlaySound -word StopSound, RL_StopSound -word PauseSound, RL_PauseSound -word ResumeSound, RL_ResumeSound -word IsSoundPlaying, RL_IsSoundPlaying -word SetSoundVolume, RL_SetSoundVolume -word SetSoundPitch, RL_SetSoundPitch -word SetSoundPan, RL_SetSoundPan -word WaveCopy, RL_WaveCopy -word WaveCrop, RL_WaveCrop -word WaveFormat, RL_WaveFormat -word LoadWaveSamples, RL_LoadWaveSamples -word UnloadWaveSamples, RL_UnloadWaveSamples -word LoadMusicStream, RL_LoadMusicStream -word LoadMusicStreamFromMemory, RL_LoadMusicStreamFromMemory -word IsMusicReady, RL_IsMusicReady -word UnloadMusicStream, RL_UnloadMusicStream -word PlayMusicStream, RL_PlayMusicStream -word IsMusicStreamPlaying, RL_IsMusicStreamPlaying -word UpdateMusicStream, RL_UpdateMusicStream -word StopMusicStream, RL_StopMusicStream -word PauseMusicStream, RL_PauseMusicStream -word ResumeMusicStream, RL_ResumeMusicStream -word SeekMusicStream, RL_SeekMusicStream -word SetMusicVolume, RL_SetMusicVolume -word SetMusicPitch, RL_SetMusicPitch -word SetMusicPan, RL_SetMusicPan -word GetMusicTimeLength, RL_GetMusicTimeLength -word GetMusicTimePlayed, RL_GetMusicTimePlayed -word LoadAudioStream, RL_LoadAudioStream -word IsAudioStreamReady, RL_IsAudioStreamReady -word UnloadAudioStream, RL_UnloadAudioStream -word UpdateAudioStream, RL_UpdateAudioStream -word IsAudioStreamProcessed, RL_IsAudioStreamProcessed -word PlayAudioStream, RL_PlayAudioStream -word PauseAudioStream, RL_PauseAudioStream -word ResumeAudioStream, RL_ResumeAudioStream -word IsAudioStreamPlaying, RL_IsAudioStreamPlaying -word StopAudioStream, RL_StopAudioStream -word SetAudioStreamVolume, RL_SetAudioStreamVolume -word SetAudioStreamPitch, RL_SetAudioStreamPitch -word SetAudioStreamPan, RL_SetAudioStreamPan -word SetAudioStreamBufferSizeDefault, RL_SetAudioStreamBufferSizeDefault -word SetAudioStreamCallback, RL_SetAudioStreamCallback -word AttachAudioStreamProcessor, RL_AttachAudioStreamProcessor -word DetachAudioStreamProcessor, RL_DetachAudioStreamProcessor -word AttachAudioMixedProcessor, RL_AttachAudioMixedProcessor -word DetachAudioMixedProcessor, RL_DetachAudioMixedProcessor - -// raudio.c -// Since its a TU, only going to refactor if there is a symbol conflict - -// word NOGDICAPMASKS, RL_NOGDICAPMASKS -// word NOVIRTUALKEYCODES, RL_NOVIRTUALKEYCODES -// word NOWINMESSAGES, RL_NOWINMESSAGES -// word NOWINSTYLES, RL_NOWINSTYLES -// word NOSYSMETRICS, RL_NOSYSMETRICS -// word NOMENUS, RL_NOMENUS -// word NOICONS, RL_NOICONS -// word NOKEYSTATES, RL_NOKEYSTATES -// word NOSYSCOMMANDS, RL_NOSYSCOMMANDS -// word NORASTEROPS, RL_NORASTEROPS -// word NOSHOWWINDOW, RL_NOSHOWWINDOW -// word OEMRESOURCE, RL_OEMRESOURCE -// word NOATOM, RL_NOATOM -// word NOCLIPBOARD, RL_NOCLIPBOARD -// word NOCOLOR, RL_NOCOLOR -// word NOCTLMGR, RL_NOCTLMGR -// word NODRAWTEXT, RL_NODRAWTEXT -// word NOGDI, RL_NOGDI -// word NOKERNEL, RL_NOKERNEL -// word NOUSER, RL_NOUSER -// word NONLS, RL_NONLS -// word NOMB, RL_NOMB -// word NOMEMMGR, RL_NOMEMMGR -// word NOMETAFILE, RL_NOMETAFILE -// word NOMINMAX, RL_NOMINMAX -// word NOMSG, RL_NOMSG -// word NOOPENFILE, RL_NOOPENFILE -// word NOSCROLL, RL_NOSCROLL -// word NOSERVICE, RL_NOSERVICE -// word NOSOUND, RL_NOSOUND -// word NOTEXTMETRIC, RL_NOTEXTMETRIC -// word NOWH, RL_NOWH -// word NOWINOFFSETS, RL_NOWINOFFSETS -// word NOCOMM, RL_NOCOMM -// word NOKANJI, RL_NOKANJI -// word NOHELP, RL_NOHELP -// word NOPROFILER, RL_NOPROFILER -// word NODEFERWINDOWPOS, RL_NODEFERWINDOWPOS -// word NOMCX, RL_NOMCX - -// word tagMSG, RL_tagMSG; -// word tagBITMAPINFOHEADER, RL_tagBITMAPINFOHEADER; -// word BITMAPINFOHEADER, RL_BITMAPINFOHEADER; -// word PBITMAPINFOHEADER, RL_BITMAPINFOHEADER; - -// word MA_MALLOC RL_MALLOC, RL_MA_MALLOC RL_MALLOC -// word MA_FREE RL_FREE, RL_MA_FREE RL_FREE -// word MA_NO_JACK, RL_MA_NO_JACK -// word MA_NO_WAV, RL_MA_NO_WAV -// word MA_NO_FLAC, RL_MA_NO_FLAC -// word MA_NO_MP3, RL_MA_NO_MP3 -// word MA_COINIT_VALUE, RL_MA_COINIT_VALUE - -// raymath.h - -word MatrixToFloat, RL_MatrixToFloat -word Vector3ToFloat, RL_Vector3ToFloat - -word float3, RL_float3 -word float16, RL_float16 - -word Clamp, RL_Clamp -word Lerp, RL_Lerp -word Normalize, RL_Normalize -word Remap, RL_Remap -word Wrap, RL_Wrap -word FloatEquals, RL_FloatEquals -word Vector2Zero, RL_Vector2Zero -word Vector2One, RL_Vector2One -word Vector2Add, RL_Vector2Add -word Vector2AddValue, RL_Vector2AddValue -word Vector2Subtract, RL_Vector2Subtract -word Vector2SubtractValue, RL_Vector2SubtractValue -word Vector2Length, RL_Vector2Length -word Vector2LengthSqr, RL_Vector2LengthSqr -word Vector2DotProduct, RL_Vector2DotProduct -word Vector2Distance, RL_Vector2Distance -word Vector2DistanceSqr, RL_Vector2DistanceSqr -word Vector2Angle, RL_Vector2Angle -word Vector2LineAngle, RL_Vector2LineAngle -word Vector2Scale, RL_Vector2Scale -word Vector2Multiply, RL_Vector2Multiply -word Vector2Negate, RL_Vector2Negate -word Vector2Divide, RL_Vector2Divide -word Vector2Normalize, RL_Vector2Normalize -word Vector2Transform, RL_Vector2Transform -word Vector2Lerp, RL_Vector2Lerp -word Vector2Reflect, RL_Vector2Reflect -word Vector2Rotate, RL_Vector2Rotate -word Vector2MoveTowards, RL_Vector2MoveTowards -word Vector2Invert, RL_Vector2Invert -word Vector2Clamp, RL_Vector2Clamp -word Vector2ClampValue, RL_Vector2ClampValue -word Vector2Equals, RL_Vector2Equals -word Vector3Zero, RL_Vector3Zero -word Vector3One, RL_Vector3One -word Vector3Add, RL_Vector3Add -word Vector3AddValue, RL_Vector3AddValue -word Vector3Subtract, RL_Vector3Subtract -word Vector3SubtractValue, RL_Vector3SubtractValue -word Vector3Scale, RL_Vector3Scale -word Vector3Multiply, RL_Vector3Multiply -word Vector3CrossProduct, RL_Vector3CrossProduct -word Vector3Perpendicular, RL_Vector3Perpendicular -word Vector3Length, RL_Vector3Length -word Vector3LengthSqr, RL_Vector3LengthSqr -word Vector3DotProduct, RL_Vector3DotProduct -word Vector3Distance, RL_Vector3Distance -word Vector3DistanceSqr, RL_Vector3DistanceSqr -word Vector3Angle, RL_Vector3Angle -word Vector3Negate, RL_Vector3Negate -word Vector3Divide, RL_Vector3Divide -word Vector3Normalize, RL_Vector3Normalize -word Vector3Project, RL_Vector3Project -word Vector3Reject, RL_Vector3Reject -word Vector3OrthoNormalize, RL_Vector3OrthoNormalize -word Vector3Transform, RL_Vector3Transform -word Vector3RotateByQuaternion, RL_Vector3RotateByQuaternion -word Vector3RotateByAxisAngle, RL_Vector3RotateByAxisAngle -word Vector3Lerp, RL_Vector3Lerp -word Vector3Reflect, RL_Vector3Reflect -word Vector3Min, RL_Vector3Min -word Vector3Max, RL_Vector3Max -word Vector3Barycenter, RL_Vector3Barycenter -word Vector3Unproject, RL_Vector3Unproject -word Vector3ToFloatV, RL_Vector3ToFloatV -word Vector3Invert, RL_Vector3Invert -word Vector3Clamp, RL_Vector3Clamp -word Vector3ClampValue, RL_Vector3ClampValue -word Vector3Equals, RL_Vector3Equals -word Vector3Refract, RL_Vector3Refract -word MatrixDeterminant, RL_MatrixDeterminant -word MatrixTrace, RL_MatrixTrace -word MatrixTranspose, RL_MatrixTranspose -word MatrixInvert, RL_MatrixInvert -word MatrixIdentity, RL_MatrixIdentity -word MatrixAdd, RL_MatrixAdd -word MatrixSubtract, RL_MatrixSubtract -word MatrixMultiply, RL_MatrixMultiply -word MatrixTranslate, RL_MatrixTranslate -word MatrixRotate, RL_MatrixRotate -word MatrixRotateX, RL_MatrixRotateX -word MatrixRotateY, RL_MatrixRotateY -word MatrixRotateZ, RL_MatrixRotateZ -word MatrixRotateXYZ, RL_MatrixRotateXYZ -word MatrixRotateZYX, RL_MatrixRotateZYX -word MatrixScale, RL_MatrixScale -word MatrixFrustum, RL_MatrixFrustum -word MatrixPerspective, RL_MatrixPerspective -word MatrixOrtho, RL_MatrixOrtho -word MatrixLookAt, RL_MatrixLookAt -word MatrixToFloatV, RL_MatrixToFloatV -word QuaternionAdd, RL_QuaternionAdd -word QuaternionAddValue, RL_QuaternionAddValue -word QuaternionSubtract, RL_QuaternionSubtract -word QuaternionSubtractValue, RL_QuaternionSubtractValue -word QuaternionIdentity, RL_QuaternionIdentity -word QuaternionLength, RL_QuaternionLength -word QuaternionNormalize, RL_QuaternionNormalize -word QuaternionInvert, RL_QuaternionInvert -word QuaternionMultiply, RL_QuaternionMultiply -word QuaternionScale, RL_QuaternionScale -word QuaternionDivide, RL_QuaternionDivide -word QuaternionLerp, RL_QuaternionLerp -word QuaternionNlerp, RL_QuaternionNlerp -word QuaternionSlerp, RL_QuaternionSlerp -word QuaternionFromVector3ToVector3, RL_QuaternionFromVector3ToVector3 -word QuaternionFromMatrix, RL_QuaternionFromMatrix -word QuaternionToMatrix, RL_QuaternionToMatrix -word QuaternionFromAxisAngle, RL_QuaternionFromAxisAngle -word QuaternionToAxisAngle, RL_QuaternionToAxisAngle -word QuaternionFromEuler, RL_QuaternionFromEuler -word QuaternionToEuler, RL_QuaternionToEuler -word QuaternionTransform, RL_QuaternionTransform -word QuaternionEquals, RL_QuaternionEquals - -// rcamera.hMAX_MOUSE_BUTTONS - -word CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_NEAR -word CAMERA_CULL_DISTANCE_FAR, RL_CAMERA_CULL_DISTANCE_FAR - -GetCameraForward -GetCameraUp -GetCameraRight -CameraMoveForward -CameraMoveUp -CameraMoveRight -CameraMoveToTarget -CameraYaw -CameraPitch -CameraRoll -GetCameraViewMatrix -GetCameraProjectionMatrix - -word CAMERA_MOVE_SPEED, RL_CAMERA_MOVE_SPEED -word CAMERA_ROTATION_SPEED, RL_CAMERA_ROTATION_SPEED -word CAMERA_PAN_SPEED, RL_CAMERA_PAN_SPEED -word CAMERA_MOUSE_MOVE_SENSITIVITY, RL_CAMERA_MOUSE_MOVE_SENSITIVITY -word CAMERA_MOUSE_SCROLL_SENSITIVITY, RL_CAMERA_MOUSE_SCROLL_SENSITIVITY -word CAMERA_ORBITAL_SPEED, RL_CAMERA_ORBITAL_SPEED -word CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER, RL_CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER -word CAMERA_FIRST_PERSON_STEP_DIVIDER, RL_CAMERA_FIRST_PERSON_STEP_DIVIDER -word CAMERA_FIRST_PERSON_WAVING_DIVIDER, RL_CAMERA_FIRST_PERSON_WAVING_DIVIDER -word PLAYER_MOVEMENT_SENSITIVITY, RL_PLAYER_MOVEMENT_SENSITIVITY - -// rcore.h - -// config header has these covered -// MAX_FILEPATH_CAPACITY -// MAX_FILEPATH_LENGTH -// MAX_KEYBOARD_KEYS -// MAX_MOUSE_BUTTONS -// MAX_GAMEPADS -// MAX_GAMEPAD_AXIS -// MAX_GAMEPAD_BUTTONS -// MAX_TOUCH_POINTS -// MAX_KEY_PRESSED_QUEUE -// MAX_CHAR_PRESSED_QUEUE -// MAX_DECOMPRESSION_SIZE -// MAX_AUTOMATION_EVENTS - -word FLAG_SET, RL_FLAG_SET -word FLAG_CLEAR, RL_FLAG_CLEAR -word FLAG_TOGGLE, RL_FLAG_TOGGLE -word FLAG_CHECK, RL_FLAG_CHECK - -word Point, RL_Point -word Size, RL_Size -word CoreData, RL_CoreData -word CORE, RL_CORE - -// rgestures.h - -// MAX_TOUCH_POINTS - -word TouchAction, RL_TouchAction -word GestureEvent, RL_GestureEvent - -word ProcessGestureEvent, RL_ProcessGestureEvent -word UpdateGestures, RL_UpdateGestures -word SetGesturesEnabled, RL_SetGesturesEnabled -word IsGestureDetected, RL_IsGestureDetected -word GetGestureDetected, RL_GetGestureDetected -word GetGestureHoldDuration, RL_GetGestureHoldDuration -word GetGestureDragVector, RL_GetGestureDragVector -word GetGestureDragAngle, RL_GetGestureDragAngle -word GetGesturePinchVector, RL_GetGesturePinchVector -word GetGesturePinchAngle, RL_GetGesturePinchAngle -word QueryPerformanceCounter, RL_QueryPerformanceCounter -word QueryPerformanceFrequency, RL_QueryPerformanceFrequency - -word FORCE_TO_SWIPE, RL_FORCE_TO_SWIPE -word MINIMUM_DRAG, RL_MINIMUM_DRAG -word DRAG_TIMEOUT, RL_DRAG_TIMEOUT -word MINIMUM_PINCH, RL_MINIMUM_PINCH -word TAP_TIMEOUT, RL_TAP_TIMEOUT -word PINCH_TIMEOUT, RL_PINCH_TIMEOUT -word DOUBLETAP_RANGE, RL_DOUBLETAP_RANGE - -word GesturesData, RL_GesturesData - -word GESTURES, RL_GESTURES - -// word rgVector2Angle, RL_Vector2Angle -// word rgVector2Distance, RL_Vector2Distance -// word rgGetCurrentTime, RL_GetCurrentTime - -// rlgl.h -// This file has badly defined definitions, so I have to do a separate pass for it later. - -namespace rlgl, RLGL_ -namespace rl, RLGL_ - -namespace RL_OPENGL, RLGL_OPENGL - -// word RL_TEXTURE_MIN_FILTER, RLGL_TEXTURE_MIN_FILTE -// word RL_TEXTURE_MAG_FILTER, RLGL_TEXTURE_MAG_FILTER -// word RL_TEXTURE_FILTER_LINEAR, RLGL_TEXTURE_FILTER_LINEAR -// word RL_PROJECTION, RLGL_PROJECTION -// word RL_MODELVIEW, RLGL_MODELVIEW - -not include rlgl.h - -word TRACELOG, RL_TRACELOG - -word rlglInit, RLGL_Init -word rlglClose, RLGL_Close - -// utils.h - -// TRACELOG - -not include external/rl_gputex.h diff --git a/project/auxillary/vis_ast/dependencies/raylib/raylib_c_gl.refactor b/project/auxillary/vis_ast/dependencies/raylib/raylib_c_gl.refactor deleted file mode 100644 index 26b3975..0000000 --- a/project/auxillary/vis_ast/dependencies/raylib/raylib_c_gl.refactor +++ /dev/null @@ -1,34 +0,0 @@ -// rlgl.h - -//namespace rlgl, RL_ -namespace rl, RLGL_ -//namespace RL_, RLGL_ - -namespace RL_OPENGL, RLGL_OPENGL - -//word RLAPI, RLGLAPI - -not include rlgl.h - -word TRACELOG, RL_TRACELOG - -not word RL_TEXTURE_MIN_FILTER -not word RL_TEXTURE_MAG_FILTER -not word RL_TEXTURE_FILTER_LINEAR -not word RL_PROJECTION -not word RL_MODELVIEW -not word RL_LINES -not word RL_TRIANGLES -not word RL_QUADS -not word RL_FLOAT -not word RL_UNSIGNED_BYTE -not word RL_MATRIX - -word RLGL, RLGL_GLOBAL_DATA - -word Matrix, RL_Matrix - -word LOG_WARNING, RL_LOG_WARNING - -word rlglInit, RLGL_Init -word rlglClose, RLGL_Close diff --git a/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp.refactor b/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp.refactor new file mode 100644 index 0000000..c829f83 --- /dev/null +++ b/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp.refactor @@ -0,0 +1,1019 @@ + __VERSION 1 + +// Config.h + +namespace SUPPORT_, RL_SUPPORT_ +namespace MAX_, RL_MAX_ +namespace AUDIO_, RL_AUDIO_ + +word RL_NOT_REFACTORED, RL_REFACTORED_CPP + +// raylib.h + +word BUILD_LIBTYPE_SHARED, RL_BUILD_LIBTYPE_SHARED +word USE_LIBTYPE_SHARED, RL_USE_LIBTYPE_SHARED +word PI, RL_PI +word DEG2RAD, RL_DEG2RAD +word RAD2DEG, RL_RAD2DEG + +word CLITERAL, RL_CLITERAL + +word LIGHTGRAY, RL_LIGHTGRAY +word GRAY, RL_GRAY +word DARKGRAY, RL_DARKGRAY +word YELLOW, RL_YELLOW +word GOLD, RL_GOLD +word ORANGE, RL_ORANGE +word PINK, RL_PINK +word RED, RL_RED +word MAROON, RL_MAROON +word GREEN, RL_GREEN +word LIME, RL_LIME +word DARKGREEN, RL_DARKGREEN +word SKYBLUE, RL_SKYBLUE +word BLUE, RL_BLUE +word DARKBLUE, RL_DARKBLUE +word PURPLE, RL_PURPLE +word VIOLET, RL_VIOLET +word DARKPURPLE, RL_DARKPURPLE +word BEIGE, RL_BEIGE +word BROWN, RL_BROWN +word DARKBROWN, RL_DARKBROWN + +word WHITE, RL_WHITE +word BLACK, RL_BLACK +word BLANK, RL_BLANK +word MAGENTA, RL_MAGENTA +word RAYWHITE, RL_RAYWHITE + +word Vector2, Vector2 +word Vector3, Vector3 +word Vector4, Vector4 +word Quaternion, Quaternion +word Matrix, Matrix +word Color, Color +word Rectangle, Rectangle +word Image, Image +word Texture, Texture +word Texture2D, Texture2d +word TextureCubemap, Texture_Cubemap +word RenderTexture, Render_Texture +word RenderTexture2D, Render_Texture2D +word NPatchInfo, N_Patch_Info +word GlyphInfo, Glyph_Info +word Font, Font +word Camera3D, Camera3D +word Camera, Camera +word Camera2D, Camera2D +word Mesh, Mesh +word Shader, Shader +word MaterialMap, Material_Map +word Material, Material +word Transform, Transform +word BoneInfo, Bone_Info +word Model, Model +word ModelAnimation, Model_Animation +word Ray, Ray +word RayCollision, Ray_Collision +word BoundingBox, Bounding_box +word Wave, Wave +word rAudioBuffer, Audio_Buffer +word rAudioProcessor, Audio_Processor +word AudioStream, Audio_Stream +word Sound, Sound +word Music, Music +word VrDeviceInfo, VR_Device_Info +word VrStereoConfig, VR_Stereo_Config +word FilePathList, File_Path_List +word AutomationEvent, Automation_Event +word AutomationEventList, Automation_Event_List + +// raymath.h + +// rcamera.h + +word CAMERA_CULL_DISTANCE_NEAR, RL_CAMERA_CULL_DISTANCE_NEAR +word CAMERA_CULL_DISTANCE_FAR, RL_CAMERA_CULL_DISTANCE_FAR + +word GetCameraForward, get_camera_forward +word GetCameraUp, get_camera_up +word GetCameraRight, get_camera_right +word CameraMoveForward, camera_move_forward +word CameraMoveUp, camera_move_up +word CameraMoveRight, camera_move_right +word CameraMoveToTarget, camera_move_to_target +word CameraYaw, camera_yaw +word CameraPitch, camera_pitch +word CameraRoll, camera_roll +word GetCameraViewMatrix, get_camera_view_matrix +word GetCameraProjectionMatrix, get_camera_projection_matrix + +word CAMERA_MOVE_SPEED, CAMERA_MOVE_SPEED +word CAMERA_ROTATION_SPEED, CAMERA_ROTATION_SPEED +word CAMERA_PAN_SPEED, CAMERA_PAN_SPEED +word CAMERA_MOUSE_MOVE_SENSITIVITY, CAMERA_MOUSE_MOVE_SENSITIVITY +word CAMERA_MOUSE_SCROLL_SENSITIVITY, CAMERA_MOUSE_SCROLL_SENSITIVITY +word CAMERA_ORBITAL_SPEED, CAMERA_ORBITAL_SPEED +word CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER, CAMERA_FIRST_PERSON_STEP_TRIGONOMETRIC_DIVIDER +word CAMERA_FIRST_PERSON_STEP_DIVIDER, CAMERA_FIRST_PERSON_STEP_DIVIDER +word CAMERA_FIRST_PERSON_WAVING_DIVIDER, CAMERA_FIRST_PERSON_WAVING_DIVIDER +word PLAYER_MOVEMENT_SENSITIVITY, PLAYER_MOVEMENT_SENSITIVITY + +// rcore.h + +// config header has these covered +// MAX_FILEPATH_CAPACITY +// MAX_FILEPATH_LENGTH +// MAX_KEYBOARD_KEYS +// MAX_MOUSE_BUTTONS +// MAX_GAMEPADS +// MAX_GAMEPAD_AXIS +// MAX_GAMEPAD_BUTTONS +// MAX_TOUCH_POINTS +// MAX_KEY_PRESSED_QUEUE +// MAX_CHAR_PRESSED_QUEUE +// MAX_DECOMPRESSION_SIZE +// MAX_AUTOMATION_EVENTS + +word FLAG_SET, RL_FLAG_SET +word FLAG_CLEAR, RL_FLAG_CLEAR +word FLAG_TOGGLE, RL_FLAG_TOGGLE +word FLAG_CHECK, RL_FLAG_CHECK + +// rgestures.h + +// MAX_TOUCH_POINTS + +word FORCE_TO_SWIPE, RL_FORCE_TO_SWIPE +word MINIMUM_DRAG, RL_MINIMUM_DRAG +word DRAG_TIMEOUT, RL_DRAG_TIMEOUT +word MINIMUM_PINCH, RL_MINIMUM_PINCH +word TAP_TIMEOUT, RL_TAP_TIMEOUT +word PINCH_TIMEOUT, RL_PINCH_TIMEOUT +word DOUBLETAP_RANGE, RL_DOUBLETAP_RANGE + +// word rgVector2Angle, rlVector2Angle +// word rgVector2Distance, rlVector2Distance +// word rgGetCurrentTime, rlGetCurrentTime + +// rlgl.h +// This file has badly defined definitions, so I have to do a separate pass for it later. + + namespace rl_, + namespace rl, + namespace rlgl, +not word rl +not word rlgl + +//namespace rlOPENGL, RLGL_OPENGL + +word RL_TEXTURE_MIN_FILTER, TEXTURE_MIN_FILTER +word RL_TEXTURE_MAG_FILTER, TEXTURE_MAG_FILTER +word RL_TEXTURE_FILTER_LINEAR, TEXTURE_FILTER_LINEAR + +namespace RL_ATTACHMENT_, ATTACHMENT_ +namespace RL_TEXTURE_, TEXTURE_ + +not include rlgl.h + +word TRACELOG, RL_TRACELOG + +// utils.h + +// TRACELOG + + +// Mix + +not include external/rl_gputex.h + +word get_pixel_data_size, gpu_get_pixel_data_size + +word MatrixMultiply, matrix_multiply +word MatrixSubtract, matrix_subtract +word Matrix +word ProcessGestureEvent, process_gesture_event +word UpdateGestures, update_gestures +word SetGesturesEnabled, set_gestures_enabled +word IsGestureDetected, is_gesture_detected +word GetGestureDetected, get_gesture_detected +word GetGestureHoldDuration, get_gesture_hold_duration +word GetGestureDragVector, get_gesture_drag_vector +word GetGestureDragAngle, get_gesture_drag_angle +word GetGesturePinchVector, get_gesture_pinch_vector +word GetGesturePinchAngle, get_gesture_pinch_angle +word QueryPerformanceCounter, query_performance_counter +word QueryPerformanceFrequency, query_performance_frequency +word rgVector2Angle, rg_vector2_angle +word rgVector2Distance, rg_vector2_distance +word rgGetCurrentTime, rg_get_current_time +word InitAssetManager, init_asset_manager +word InitWindow, init_window +word CloseWindow, close_window +word WindowShouldClose, window_should_close +word IsWindowReady, is_window_ready +word IsWindowFullscreen, is_window_fullscreen +word IsWindowHidden, is_window_hidden +word IsWindowMinimized, is_window_minimized +word IsWindowMaximized, is_window_maximized +word IsWindowFocused, is_window_focused +word IsWindowResized, is_window_resized +word IsWindowState, is_window_state +word SetWindowState, set_window_state +word ClearWindowState, clear_window_state +word ToggleFullscreen, toggle_fullscreen +word ToggleBorderlessWindowed, toggle_borderless_windowed +word MaximizeWindow, maximize_window +word MinimizeWindow, minimize_window +word RestoreWindow, restore_window +word SetWindowIcon, set_window_icon +word SetWindowIcons, set_window_icons +word SetWindowTitle, set_window_title +word SetWindowPosition, set_window_position +word SetWindowMonitor, set_window_monitor +word SetWindowMinSize, set_window_min_size +word SetWindowMaxSize, set_window_max_size +word SetWindowSize, set_window_size +word SetWindowOpacity, set_window_opacity +word SetWindowFocused, set_window_focused +word GetScreenWidth, get_screen_width +word GetScreenHeight, get_screen_height +word GetRenderWidth, get_render_width +word GetRenderHeight, get_render_height +word GetMonitorCount, get_monitor_count +word GetCurrentMonitor, get_current_monitor +word GetMonitorPosition, get_monitor_position +word GetMonitorWidth, get_monitor_width +word GetMonitorHeight, get_monitor_height +word GetMonitorPhysicalWidth, get_monitor_physical_width +word GetMonitorPhysicalHeight, get_monitor_physical_height +word GetMonitorRefreshRate, get_monitor_refresh_rate +word GetWindowPosition, get_window_position +word GetWindowScaleDPI, get_window_scale_dpi +word SetClipboardText, set_clipboard_text +word EnableEventWaiting, enable_event_waiting +word DisableEventWaiting, disable_event_waiting +word ShowCursor, show_cursor +word HideCursor, hide_cursor +word IsCursorHidden, is_cursor_hidden +word EnableCursor, enable_cursor +word DisableCursor, disable_cursor +word IsCursorOnScreen, is_cursor_on_screen +word ClearBackground, clear_background +word BeginDrawing, begin_drawing +word EndDrawing, end_drawing +word BeginMode2D, begin_mode2d +word EndMode2D, end_mode2_d +word BeginMode3D, begin_mode3d +word EndMode3D, end_mode3d +word BeginTextureMode, begin_texture_mode +word EndTextureMode, end_texture_mode +word BeginShaderMode, begin_shader_mode +word EndShaderMode, end_shader_mode +word BeginBlendMode, begin_blend_mode +word EndBlendMode, end_blend_mode +word BeginScissorMode, begin_scissor_mode +word EndScissorMode, end_scissor_mode +word BeginVrStereoMode, begin_vr_stereo_mode +word EndVrStereoMode, end_vr_stereo_mode +word LoadVrStereoConfig, load_vr_stereo_config +word UnloadVrStereoConfig, unload_vr_stereo_config +word LoadShader, load_shader +word LoadShaderFromMemory, load_shader_from_memory +word IsShaderReady, is_shader_ready +word GetShaderLocation, get_shader_location +word GetShaderLocationAttrib, get_shader_location_attrib +word SetShaderValue, set_shader_value +word SetShaderValueV, set_shader_value_v +word SetShaderValueMatrix, set_shader_value_matrix +word SetShaderValueTexture, set_shader_value_texture +word UnloadShader, unload_shader +word GetMouseRay, get_mouse_ray +word GetCameraMatrix, get_camera_matrix +word GetCameraMatrix2D, get_camera_matrix2d +word GetWorldToScreen, get_world_to_screen +word GetScreenToWorld2D, get_screen_to_world2d +word GetWorldToScreenEx, get_world_to_screen_ex +word GetWorldToScreen2D, get_world_to_screen2d +word SetTargetFPS, set_target_fps +word GetFrameTime, get_frame_time +word GetTime, get_time +word GetFPS, get_fps +word SwapScreenBuffer, swap_screen_buffer +word PollInputEvents, poll_input_events +word WaitTime, wait_time +word SetRandomSeed, set_random_seed +word GetRandomValue, get_random_value +word UnloadRandomSequence, unload_random_sequence +word TakeScreenshot, take_screenshot +word SetConfigFlags, set_config_flags +word OpenURL, open_url +word TraceLog, trace_log +word SetTraceLogLevel, set_trace_log_level +word MemFree, mem_free +word SetTraceLogCallback, set_trace_log_callback +word SetLoadFileDataCallback, set_load_file_data_callback +word SetSaveFileDataCallback, set_save_file_data_callback +word SetLoadFileTextCallback, set_load_file_text_callback +word SetSaveFileTextCallback, set_save_file_text_callback +word UnloadFileData, unload_file_data +word SaveFileData, save_file_data +word ExportDataAsCode, export_data_as_code +word UnloadFileText, unload_file_text +word SaveFileText, save_file_text +word FileExists, file_exists +word DirectoryExists, directory_exists +word IsFileExtension, is_file_extension +word GetFileLength, get_file_length +word ChangeDirectory, change_directory +word IsPathFile, is_path_file +word LoadDirectoryFiles, load_directory_files +word LoadDirectoryFilesEx, load_directory_files_ex +word UnloadDirectoryFiles, unload_directory_files +word IsFileDropped, is_file_dropped +word LoadDroppedFiles, load_dropped_files +word UnloadDroppedFiles, unload_dropped_files +word GetFileModTime, get_file_mod_time +word LoadAutomationEventList, load_automation_event_list +word UnloadAutomationEventList, unload_automation_event_list +word ExportAutomationEventList, export_automation_event_list +word SetAutomationEventList, set_automation_event_list +word SetAutomationEventBaseFrame, set_automation_event_base_frame +word StartAutomationEventRecording, start_automation_event_recording +word StopAutomationEventRecording, stop_automation_event_recording +word PlayAutomationEvent, play_automation_event +word IsKeyPressed, is_key_pressed +word IsKeyPressedRepeat, is_key_pressed_repeat +word IsKeyDown, is_key_down +word IsKeyReleased, is_key_released +word IsKeyUp, is_key_up +word GetKeyPressed, get_key_pressed +word GetCharPressed, get_char_pressed +word SetExitKey, set_exit_key +word IsGamepadAvailable, is_gamepad_available +word IsGamepadButtonPressed, is_gamepad_button_pressed +word IsGamepadButtonDown, is_gamepad_button_down +word IsGamepadButtonReleased, is_gamepad_button_released +word IsGamepadButtonUp, is_gamepad_button_up +word GetGamepadButtonPressed, get_gamepad_button_pressed +word GetGamepadAxisCount, get_gamepad_axis_count +word GetGamepadAxisMovement, get_gamepad_axis_movement +word SetGamepadMappings, set_gamepad_mappings +word IsMouseButtonPressed, is_mouse_button_pressed +word IsMouseButtonDown, is_mouse_button_down +word IsMouseButtonReleased, is_mouse_button_released +word IsMouseButtonUp, is_mouse_button_up +word GetMouseX, get_mouse_x +word GetMouseY, get_mouse_y +word GetMousePosition, get_mouse_position +word GetMouseDelta, get_mouse_delta +word SetMousePosition, set_mouse_position +word SetMouseOffset, set_mouse_offset +word SetMouseScale, set_mouse_scale +word GetMouseWheelMove, get_mouse_wheel_move +word GetMouseWheelMoveV, get_mouse_wheel_move_v +word SetMouseCursor, set_mouse_cursor +word GetTouchX, get_touch_x +word GetTouchY, get_touch_y +word GetTouchPosition, get_touch_position +word GetTouchPointId, get_touch_point_id +word GetTouchPointCount, get_touch_point_count +word SetGesturesEnabled, set_gestures_enabled +word IsGestureDetected, is_gesture_detected +word GetGestureDetected, get_gesture_detected +word GetGestureHoldDuration, get_gesture_hold_duration +word GetGestureDragVector, get_gesture_drag_vector +word GetGestureDragAngle, get_gesture_drag_angle +word GetGesturePinchVector, get_gesture_pinch_vector +word GetGesturePinchAngle, get_gesture_pinch_angle +word UpdateCamera, update_camera +word UpdateCameraPro, update_camera_pro +word SetShapesTexture, set_shapes_texture +word DrawPixel, draw_pixel +word DrawPixelV, draw_pixel_v +word DrawLine, draw_line +word DrawLineV, draw_line_v +word DrawLineEx, draw_line_ex +word DrawLineStrip, draw_line_strip +word DrawLineBezier, draw_line_bezier +word DrawCircle, draw_circle +word DrawCircleSector, draw_circle_sector +word DrawCircleSectorLines, draw_circle_sector_lines +word DrawCircleGradient, draw_circle_gradient +word DrawCircleV, draw_circle_v +word DrawCircleLines, draw_circle_lines +word DrawCircleLinesV, draw_circle_lines_v +word DrawEllipse, draw_ellipse +word DrawEllipseLines, draw_ellipse_lines +word DrawRing, draw_ring +word DrawRingLines, draw_ring_lines +word DrawRectangle, draw_rectangle +word DrawRectangleV, draw_rectangle_v +word DrawRectangleRec, draw_rectangle_rec +word DrawRectanglePro, draw_rectangle_pro +word DrawRectangleGradientV, draw_rectangle_gradient_v +word DrawRectangleGradientH, draw_rectangle_gradient_h +word DrawRectangleGradientEx, draw_rectangle_gradient_ex +word DrawRectangleLines, draw_rectangle_lines +word DrawRectangleLinesEx, draw_rectangle_lines_ex +word DrawRectangleRounded, draw_rectangle_rounded +word DrawRectangleRoundedLines, draw_rectangle_rounded_lines +word DrawTriangle, draw_triangle +word DrawTriangleLines, draw_triangle_lines +word DrawTriangleFan, draw_triangle_fan +word DrawTriangleStrip, draw_triangle_strip +word DrawPoly, draw_poly +word DrawPolyLines, draw_poly_lines +word DrawPolyLinesEx, draw_poly_lines_ex +word DrawSplineLinear, draw_spline_linear +word DrawSplineBasis, draw_spline_basis +word DrawSplineCatmullRom, draw_spline_catmull_rom +word DrawSplineBezierQuadratic, draw_spline_bezier_quadratic +word DrawSplineBezierCubic, draw_spline_bezier_cubic +word DrawSplineSegmentLinear, draw_spline_segment_linear +word DrawSplineSegmentBasis, draw_spline_segment_basis +word DrawSplineSegmentCatmullRom, draw_spline_segment_catmull_rom +word DrawSplineSegmentBezierQuadratic, draw_spline_segment_bezier_quadratic +word DrawSplineSegmentBezierCubic, draw_spline_segment_bezier_cubic +word GetSplinePointLinear, get_spline_point_linear +word GetSplinePointBasis, get_spline_point_basis +word GetSplinePointCatmullRom, get_spline_point_catmull_rom +word GetSplinePointBezierQuad, get_spline_point_bezier_quad +word GetSplinePointBezierCubic, get_spline_point_bezier_cubic +word CheckCollisionRecs, check_collision_recs +word CheckCollisionCircles, check_collision_circles +word CheckCollisionCircleRec, check_collision_circle_rec +word CheckCollisionPointRec, check_collision_point_rec +word CheckCollisionPointCircle, check_collision_point_circle +word CheckCollisionPointTriangle, check_collision_point_triangle +word CheckCollisionPointPoly, check_collision_point_poly +word CheckCollisionLines, check_collision_lines +word CheckCollisionPointLine, check_collision_point_line +word GetCollisionRec, get_collision_rec +word LoadImage, load_image +word LoadImageRaw, load_image_raw +word LoadImageSvg, load_image_svg +word LoadImageAnim, load_image_anim +word LoadImageFromMemory, load_image_from_memory +word LoadImageFromTexture, load_image_from_texture +word LoadImageFromScreen, load_image_from_screen +word IsImageReady, is_image_ready +word UnloadImage, unload_image +word ExportImage, export_image +word ExportImageAsCode, export_image_as_code +word GenImageColor, gen_image_color +word GenImageGradientLinear, gen_image_gradient_linear +word GenImageGradientRadial, gen_image_gradient_radial +word GenImageGradientSquare, gen_image_gradient_square +word GenImageChecked, gen_image_checked +word GenImageWhiteNoise, gen_image_white_noise +word GenImagePerlinNoise, gen_image_perlin_noise +word GenImageCellular, gen_image_cellular +word GenImageText, gen_image_text +word ImageCopy, image_copy +word ImageFromImage, image_from_image +word ImageText, image_text +word ImageTextEx, image_text_ex +word ImageFormat, image_format +word ImageToPOT, image_to_pot +word ImageCrop, image_crop +word ImageAlphaCrop, image_alpha_crop +word ImageAlphaClear, image_alpha_clear +word ImageAlphaMask, image_alpha_mask +word ImageAlphaPremultiply, image_alpha_premultiply +word ImageBlurGaussian, image_blur_gaussian +word ImageResize, image_resize +word ImageResizeNN, image_resize_nn +word ImageResizeCanvas, image_resize_canvas +word ImageMipmaps, image_mipmaps +word ImageDither, image_dither +word ImageFlipVertical, image_flip_vertical +word ImageFlipHorizontal, image_flip_horizontal +word ImageRotate, image_rotate +word ImageRotateCW, image_rotate_cw +word ImageRotateCCW, image_rotate_ccw +word ImageColorTint, image_color_tint +word ImageColorInvert, image_color_invert +word ImageColorGrayscale, image_color_grayscale +word ImageColorContrast, image_color_contrast +word ImageColorBrightness, image_color_brightness +word ImageColorReplace, image_color_replace +word UnloadImageColors, unload_image_colors +word UnloadImagePalette, unload_image_palette +word GetImageAlphaBorder, get_image_alpha_border +word GetImageColor, get_image_color +word ImageClearBackground, ImageClearBackground +word ImageDrawPixel, image_draw_pixel +word ImageDrawPixelV, image_draw_pixel_v +word ImageDrawLine, image_draw_line +word ImageDrawLineV, image_draw_line_v +word ImageDrawCircle, image_draw_circle +word ImageDrawCircleV, image_draw_circle_v +word ImageDrawCircleLines, image_draw_circle_lines +word ImageDrawCircleLinesV, image_draw_circle_lines_v +word ImageDrawRectangle, image_draw_rectangle +word ImageDrawRectangleV, image_draw_rectangle_v +word ImageDrawRectangleRec, image_draw_rectangle_rec +word ImageDrawRectangleLines, image_draw_rectangle_lines +word ImageDraw, image_draw +word ImageDrawText, image_draw_text +word ImageDrawTextEx, image_draw_text_ex +word LoadTexture, load_texture +word LoadTextureFromImage, load_texture_from_image +word LoadTextureCubemap, load_texture_cubemap +word LoadRenderTexture, load_render_texture +word IsTextureReady, is_texture_ready +word UnloadTexture, unload_texture +word IsRenderTextureReady, is_render_texture_ready +word UnloadRenderTexture, unload_render_texture +word UpdateTexture, update_texture +word UpdateTextureRec, update_texture_rec +word GenTextureMipmaps, gen_texture_mipmaps +word SetTextureFilter, set_texture_filter +word SetTextureWrap, set_texture_wrap +word DrawTexture, draw_texture +word DrawTextureV, draw_texture_v +word DrawTextureEx, draw_texture_ex +word DrawTextureRec, draw_texture_rec +word DrawTexturePro, draw_texture_pro +word DrawTextureNPatch, draw_texture_npatch +word Fade, fade +word ColorToInt, color_to_int +word ColorNormalize, color_normalize +word ColorFromNormalized, color_from_normalized +word ColorToHSV, color_to_hsv +word ColorFromHSV, color_from_hsv +word ColorTint, color_tint +word ColorBrightness, color_brightness +word ColorContrast, color_contrast +word ColorAlpha, color_alpha +word ColorAlphaBlend, color_alpha_blend +word GetColor, get_color +word GetPixelColor, get_pixel_color +word SetPixelColor, set_pixel_color +word GetPixelDataSize, get_pixel_data_size +word GetFontDefault, get_font_default +word LoadFont, load_font +word LoadFontEx, load_font_ex +word LoadFontFromImage, load_font_from_image +word LoadFontFromMemory, load_font_from_memory +word IsFontReady, is_font_ready +word GenImageFontAtlas, gen_image_font_atlas +word UnloadFontData, unload_font_data +word UnloadFont, unload_font +word ExportFontAsCode, export_font_as_code +word DrawFPS, draw_fps +word DrawText, draw_text +word DrawTextEx, draw_text_ex +word DrawTextPro, draw_text_pro +word DrawTextCodepoint, draw_text_codepoint +word DrawTextCodepoints, draw_text_codepoints +word SetTextLineSpacing, set_text_line_spacing +word MeasureText, measure_text +word MeasureTextEx, measure_text_ex +word GetGlyphIndex, get_glyph_index +word GetGlyphInfo, get_glyph_info +word GetGlyphAtlasRec, get_glyph_atlas_rec +word UnloadUTF8, unload_utf8 +word UnloadCodepoints, unload_codepoints +word GetCodepointCount, get_codepoint_count +word GetCodepoint, get_codepoint +word GetCodepointNext, get_codepoint_next +word GetCodepointPrevious, get_codepoint_previous +word TextCopy, text_copy +word TextIsEqual, text_is_equal +word TextLength, text_length +word TextAppend, text_append +word TextFindIndex, text_find_index +word TextToInteger, text_to_integer +word DrawLine3D, draw_line3_d +word DrawPoint3D, draw_point3_d +word DrawCircle3D, draw_circle3_d +word DrawTriangle3D, draw_triangle3_d +word DrawTriangleStrip3D, draw_triangle_strip3d +word DrawCube, draw_cube +word DrawCubeV, draw_cube_v +word DrawCubeWires, draw_cube_wires +word DrawCubeWiresV, draw_cube_wires_v +word DrawSphere, draw_sphere +word DrawSphereEx, draw_sphere_ex +word DrawSphereWires, draw_sphere_wires +word DrawCylinder, draw_cylinder +word DrawCylinderEx, draw_cylinder_ex +word DrawCylinderWires, draw_cylinder_wires +word DrawCylinderWiresEx, draw_cylinder_wires_ex +word DrawCapsule, draw_capsule +word DrawCapsuleWires, draw_capsule_wires +word DrawPlane, draw_plane +word DrawRay, draw_ray +word DrawGrid, draw_grid +word LoadModel, load_model +word LoadModelFromMesh, load_model_from_mesh +word IsModelReady, is_model_ready +word UnloadModel, unload_model +word GetModelBoundingBox, get_model_bounding_box +word DrawModel, draw_model +word DrawModelEx, draw_model_ex +word DrawModelWires, draw_model_wires +word DrawModelWiresEx, draw_model_wires_ex +word DrawBoundingBox, draw_bounding_box +word DrawBillboard, draw_billboard +word DrawBillboardRec, draw_billboard_rec +word DrawBillboardPro, draw_billboard_pro +word UploadMesh, upload_mesh +word UpdateMeshBuffer, update_mesh_buffer +word UnloadMesh, unload_mesh +word DrawMesh, draw_mesh +word DrawMeshInstanced, draw_mesh_instanced +word ExportMesh, export_mesh +word GetMeshBoundingBox, get_mesh_bounding_box +word GenMeshTangents, gen_mesh_tangents +word GenMeshPoly, gen_mesh_poly +word GenMeshPlane, gen_mesh_plane +word GenMeshCube, gen_mesh_cube +word GenMeshSphere, gen_mesh_sphere +word GenMeshHemiSphere, gen_mesh_hemi_sphere +word GenMeshCylinder, gen_mesh_cylinder +word GenMeshCone, gen_mesh_cone +word GenMeshTorus, gen_mesh_torus +word GenMeshKnot, gen_mesh_knot +word GenMeshHeightmap, gen_mesh_heightmap +word GenMeshCubicmap, gen_mesh_cubicmap +word LoadMaterialDefault, load_material_default +word IsMaterialReady, is_material_ready +word UnloadMaterial, unload_material +word SetMaterialTexture, set_material_texture +word SetModelMeshMaterial, set_model_mesh_material +word UpdateModelAnimation, update_model_animation +word UnloadModelAnimation, unload_model_animation +word UnloadModelAnimations, unload_model_animations +word IsModelAnimationValid, is_model_animation_valid +word CheckCollisionSpheres, check_collision_spheres +word CheckCollisionBoxes, check_collision_boxes +word CheckCollisionBoxSphere, check_collision_box_sphere +word GetRayCollisionSphere, get_ray_collision_sphere +word GetRayCollisionBox, get_ray_collision_box +word GetRayCollisionMesh, get_ray_collision_mesh +word GetRayCollisionTriangle, get_ray_collision_triangle +word GetRayCollisionQuad, get_ray_collision_quad +word InitAudioDevice, init_audio_device +word CloseAudioDevice, close_audio_device +word IsAudioDeviceReady, is_audio_device_ready +word SetMasterVolume, set_master_volume +word GetMasterVolume, get_master_volume +word LoadWave, load_wave +word LoadWaveFromMemory, load_wave_from_memory +word IsWaveReady, is_wave_ready +word LoadSound, load_sound +word LoadSoundFromWave, load_sound_from_wave +word LoadSoundAlias, load_sound_alias +word IsSoundReady, is_sound_ready +word UpdateSound, update_sound +word UnloadWave, unload_wave +word UnloadSound, unload_sound +word UnloadSoundAlias, unload_sound_alias +word ExportWave, export_wave +word ExportWaveAsCode, export_wave_as_code +word PlaySound, play_sound +word StopSound, stop_sound +word PauseSound, pause_sound +word ResumeSound, resume_sound +word IsSoundPlaying, is_sound_playing +word SetSoundVolume, set_sound_volume +word SetSoundPitch, set_sound_pitch +word SetSoundPan, set_sound_pan +word WaveCopy, wave_copy +word WaveCrop, wave_crop +word WaveFormat, wave_format +word UnloadWaveSamples, unload_wave_samples +word LoadMusicStream, load_music_stream +word LoadMusicStreamFromMemory, load_music_stream_from_memory +word IsMusicReady, is_music_ready +word UnloadMusicStream, unload_music_stream +word PlayMusicStream, play_music_stream +word IsMusicStreamPlaying, is_music_stream_playing +word UpdateMusicStream, update_music_stream +word StopMusicStream, stop_music_stream +word PauseMusicStream, pause_music_stream +word ResumeMusicStream, resume_music_stream +word SeekMusicStream, seek_music_stream +word SetMusicVolume, set_music_volume +word SetMusicPitch, set_music_pitch +word SetMusicPan, set_music_pan +word GetMusicTimeLength, get_music_time_length +word GetMusicTimePlayed, get_music_time_played +word LoadAudioStream, load_audio_stream +word IsAudioStreamReady, is_audio_stream_ready +word UnloadAudioStream, unload_audio_stream +word UpdateAudioStream, update_audio_stream +word IsAudioStreamProcessed, is_audio_stream_processed +word PlayAudioStream, play_audio_stream +word PauseAudioStream, pause_audio_stream +word ResumeAudioStream, resume_audio_stream +word IsAudioStreamPlaying, is_audio_stream_playing +word StopAudioStream, stop_audio_stream +word SetAudioStreamVolume, set_audio_stream_volume +word SetAudioStreamPitch, set_audio_stream_pitch +word SetAudioStreamPan, set_audio_stream_pan +word SetAudioStreamBufferSizeDefault, set_audio_stream_buffer_size_default +word SetAudioStreamCallback, set_audio_stream_callback +word AttachAudioStreamProcessor, attach_audio_stream_processor +word DetachAudioStreamProcessor, detach_audio_stream_processor +word AttachAudioMixedProcessor, attach_audio_mixed_processor +word DetachAudioMixedProcessor, detach_audio_mixed_processor +word GetCameraForward, get_camera_forward +word GetCameraUp, get_camera_up +word GetCameraRight, get_camera_right +word CameraMoveForward, camera_move_forward +word CameraMoveUp, camera_move_up +word CameraMoveRight, camera_move_right +word CameraMoveToTarget, camera_move_to_target +word CameraYaw, camera_yaw +word CameraPitch, camera_pitch +word CameraRoll, camera_roll +word GetCameraViewMatrix, get_camera_view_matrix +word GetCameraProjectionMatrix, get_camera_projection_matrix +word Vector3Normalize, vector3_normalize +word Vector3CrossProduct, vector3_cross_product +word MatrixLookAt, matrix_look_at +word MatrixPerspective, matrix_perspective +word MatrixOrtho, matrix_ortho +word MatrixIdentity, matrix_identity +word CameraYaw, camera_yaw +word CameraPitch, camera_pitch +word CameraMoveForward, camera_move_forward +word CameraMoveToTarget, camera_move_to_target + +word Clamp, clamp +word Lerp, lerp +word Normalize, normalize +word Remap, remap +word Wrap, wrap +word FloatEquals, float_equals +word Vector2Zero, vector2_zero +word Vector2One, vector2_one +word Vector2Add, vector2_add +word Vector2AddValue, vector2_add_value +word Vector2Subtract, vector2_subtract +word Vector2SubtractValue, vector2_subtract_value +word Vector2Length, vector2_length +word Vector2LengthSqr, vector2_length_sqr +word Vector2DotProduct, vector2_dot_product +word Vector2Distance, vector2_distance +word Vector2DistanceSqr, vector2_distance_sqr +word Vector2Angle, vector2_angle +word Vector2LineAngle, vector2_line_angle +word Vector2Scale, vector2_scale +word Vector2Multiply, vector2_multiply +word Vector2Negate, vector2_negate +word Vector2Divide, vector2_divide +word Vector2Normalize, vector2_normalize +word Vector2Transform, vector2_transform +word Vector2Lerp, vector2_lerp +word Vector2Reflect, vector2_reflect +word Vector2Rotate, vector2_rotate +word Vector2MoveTowards, vector2_move_towards +word Vector2Invert, vector2_invert +word Vector2Clamp, vector2_clamp +word Vector2ClampValue, vector2_clamp_value +word Vector2Equals, vector2_equals +word Vector3Zero, vector3_zero +word Vector3One, vector3_one +word Vector3Add, vector3_add +word Vector3AddValue, vector3_add_value +word Vector3Subtract, vector3_subtract +word Vector3SubtractValue, vector3_subtract_value +word Vector3Scale, vector3_scale +word Vector3Multiply, vector3_multiply +word Vector3CrossProduct, vector3_cross_product +word Vector3Perpendicular, vector3_perpendicular +word Vector3Length, vector3_length +word Vector3LengthSqr, vector3_length_sqr +word Vector3DotProduct, vector3_dot_product +word Vector3Distance, vector3_distance +word Vector3DistanceSqr, vector3_distance_sqr +word Vector3Angle, vector3_angle +word Vector3Negate, vector3_negate +word Vector3Divide, vector3_divide +word Vector3Normalize, vector3_normalize +word Vector3Project, vector3_project +word Vector3Reject, vector3_reject +word Vector3OrthoNormalize, vector3_ortho_normalize +word Vector3Transform, vector3_transform +word Vector3RotateByQuaternion, vector3_rotate_by_quaternion +word Vector3RotateByAxisAngle, vector3_rotate_by_axis_angle +word Vector3Lerp, vector3_lerp +word Vector3Reflect, vector3_reflect +word Vector3Min, vector3_min +word Vector3Max, vector3_max +word Vector3Barycenter, vector3_barycenter +word Vector3Unproject, vector3_unproject +word Vector3ToFloatV, vector3_to_float_v +word Vector3Invert, vector3_invert +word Vector3Clamp, vector3_clamp +word Vector3ClampValue, vector3_clamp_value +word Vector3Equals, vector3_equals +word Vector3Refract, vector3_refract +word MatrixDeterminant, matrix_determinant +word MatrixTrace, matrix_trace +word MatrixTranspose, matrix_transpose +word MatrixInvert, matrix_invert +word MatrixIdentity, matrix_identity +word MatrixAdd, matrix_add +word MatrixSubtract, matrix_subtract +word MatrixMultiply, matrix_multiply +word MatrixTranslate, matrix_translate +word MatrixRotate, matrix_rotate +word MatrixRotateX, matrix_rotate_x +word MatrixRotateY, matrix_rotate_y +word MatrixRotateZ, matrix_rotate_z +word MatrixRotateXYZ, matrix_rotate_xyz +word MatrixRotateZYX, matrix_rotate_zyx +word MatrixScale, matrix_scale +word MatrixFrustum, matrix_frustum +word MatrixPerspective, matrix_perspective +word MatrixOrtho, matrix_ortho +word MatrixLookAt, matrix_look_at +word MatrixToFloatV, matrix_to_float_v +word QuaternionAdd, quaternion_add +word QuaternionAddValue, quaternion_add_value +word QuaternionSubtract, quaternion_subtract +word QuaternionSubtractValue, quaternion_subtract_value +word QuaternionIdentity, quaternion_identity +word QuaternionLength, quaternion_length +word QuaternionNormalize, quaternion_normalize +word QuaternionInvert, quaternion_invert +word QuaternionMultiply, quaternion_multiply +word QuaternionScale, quaternion_scale +word QuaternionDivide, quaternion_divide +word QuaternionLerp, quaternion_lerp +word QuaternionNlerp, quaternion_nlerp +word QuaternionSlerp, quaternion_slerp +word QuaternionFromVector3ToVector3, quaternion_from_vector3_to_vector3 +word QuaternionFromMatrix, quaternion_from_matrix +word QuaternionToMatrix, quaternion_to_matrix +word QuaternionFromAxisAngle, quaternion_from_axis_angle +word QuaternionToAxisAngle, quaternion_to_axis_angle +word QuaternionFromEuler, quaternion_from_euler +word QuaternionToEuler, quaternion_to_euler +word QuaternionTransform, quaternion_transform +word QuaternionEquals, quaternion_equals + +word rlMatrixMode, matrix_mode +word rlPushMatrix, push_matrix +word rlPopMatrix, pop_matrix +word rlLoadIdentity, load_identity +word rlTranslatef, translatef +word rlRotatef, rotatef +word rlScalef, scalef +word rlMultMatrixf, mult_matrixf +word rlFrustum, frustum +word rlOrtho, ortho +word rlViewport, viewport +word rlBegin, begin +word rlEnd, end +word rlVertex2i, vertex2i +word rlVertex2f, vertex2f +word rlVertex3f, vertex3f +word rlTexCoord2f, tex_coord2f +word rlNormal3f, normal3f +word rlColor4ub, color4ub +word rlColor3f, color3f +word rlColor4f, color4f +word rlEnableVertexArray, enable_vertex_array +word rlDisableVertexArray, disable_vertex_array +word rlEnableVertexBuffer, enable_vertex_buffer +word rlDisableVertexBuffer, disable_vertex_buffer +word rlEnableVertexBufferElement, enable_vertex_buffer_element +word rlDisableVertexBufferElement, disable_vertex_buffer_element +word rlEnableVertexAttribute, enable_vertex_attribute +word rlDisableVertexAttribute, disable_vertex_attribute +word rlEnableStatePointer, enable_state_pointer +word rlDisableStatePointer, disable_state_pointer +word rlActiveTextureSlot, active_texture_slot +word rlEnableTexture, enable_texture +word rlDisableTexture, disable_texture +word rlEnableTextureCubemap, enable_texture_cubemap +word rlDisableTextureCubemap, disable_texture_cubemap +word rlTextureParameters, texture_parameters +word rlCubemapParameters, cubemap_parameters +word rlEnableShader, enable_shader +word rlDisableShader, disable_shader +word rlEnableFramebuffer, enable_framebuffer +word rlDisableFramebuffer, disable_framebuffer +word rlActiveDrawBuffers, active_draw_buffers +word rlBlitFramebuffer, blit_framebuffer +word rlEnableColorBlend, enable_color_blend +word rlDisableColorBlend, disable_color_blend +word rlEnableDepthTest, enable_depth_test +word rlDisableDepthTest, disable_depth_test +word rlEnableDepthMask, enable_depth_mask +word rlDisableDepthMask, disable_depth_mask +word rlEnableBackfaceCulling, enable_backface_culling +word rlDisableBackfaceCulling, disable_backface_culling +word rlSetCullFace, set_cull_face +word rlEnableScissorTest, enable_scissor_test +word rlDisableScissorTest, disable_scissor_test +word rlScissor, scissor +word rlEnableWireMode, enable_wire_mode +word rlEnablePointMode, enable_point_mode +word rlDisableWireMode, disable_wire_mode +word rlSetLineWidth, set_line_width +word rlGetLineWidth, get_line_width +word rlEnableSmoothLines, enable_smooth_lines +word rlDisableSmoothLines, disable_smooth_lines +word rlEnableStereoRender, enable_stereo_render +word rlDisableStereoRender, disable_stereo_render +word rlIsStereoRenderEnabled, is_stereo_render_enabled +word rlClearColor, clear_color +word rlClearScreenBuffers, clear_screen_buffers +word rlCheckErrors, check_errors +word rlSetBlendMode, set_blend_mode +word rlSetBlendFactors, set_blend_factors +word rlSetBlendFactorsSeparate, set_blend_factors_separate +word rlglInit, init +word rlglClose, close +word rlLoadExtensions, load_extensions +word rlGetVersion, get_version +word rlSetFramebufferWidth, set_framebuffer_width +word rlGetFramebufferWidth, get_framebuffer_width +word rlSetFramebufferHeight, set_framebuffer_height +word rlGetFramebufferHeight, get_framebuffer_height +word rlGetTextureIdDefault, get_texture_id_default +word rlGetShaderIdDefault, get_shader_id_default +word rlLoadRenderBatch, load_render_batch +word rlUnloadRenderBatch, unload_render_batch +word rlDrawRenderBatch, draw_render_batch +word rlSetRenderBatchActive, set_render_batch_active +word rlDrawRenderBatchActive, draw_render_batch_active +word rlCheckRenderBatchLimit, check_render_batch_limit +word rlSetTexture, set_texture +word rlLoadVertexArray, load_vertex_array +word rlLoadVertexBuffer, load_vertex_buffer +word rlLoadVertexBufferElement, load_vertex_buffer_element +word rlUpdateVertexBuffer, update_vertex_buffer +word rlUpdateVertexBufferElements, update_vertex_buffer_elements +word rlUnloadVertexArray, unload_vertex_array +word rlUnloadVertexBuffer, unload_vertex_buffer +word rlSetVertexAttribute, set_vertex_attribute +word rlSetVertexAttributeDivisor, set_vertex_attribute_divisor +word rlSetVertexAttributeDefault, set_vertex_attribute_default +word rlDrawVertexArray, draw_vertex_array +word rlDrawVertexArrayElements, draw_vertex_array_elements +word rlDrawVertexArrayInstanced, draw_vertex_array_instanced +word rlDrawVertexArrayElementsInstanced, draw_vertex_array_elements_instanced +word rlLoadTexture, load_texture +word rlLoadTextureDepth, load_texture_depth +word rlLoadTextureCubemap, load_texture_cubemap +word rlUpdateTexture, update_texture +word rlGetGlTextureFormats, get_gl_texture_formats +word rlUnloadTexture, unload_texture +word rlGenTextureMipmaps, gen_texture_mipmaps +word rlLoadFramebuffer, load_framebuffer +word rlFramebufferAttach, framebuffer_attach +word rlFramebufferComplete, framebuffer_complete +word rlUnloadFramebuffer, unload_framebuffer +word rlLoadShaderCode, load_shader_code +word rlCompileShader, compile_shader +word rlLoadShaderProgram, load_shader_program +word rlUnloadShaderProgram, unload_shader_program +word rlGetLocationUniform, get_location_uniform +word rlGetLocationAttrib, get_location_attrib +word rlSetUniform, set_uniform +word rlSetUniformMatrix, set_uniform_matrix +word rlSetUniformSampler, set_uniform_sampler +word rlSetShader, set_shader +word rlLoadComputeShaderProgram, load_compute_shader_program +word rlComputeShaderDispatch, compute_shader_dispatch +word rlLoadShaderBuffer, load_shader_buffer +word rlUnloadShaderBuffer, unload_shader_buffer +word rlUpdateShaderBuffer, update_shader_buffer +word rlBindShaderBuffer, bind_shader_buffer +word rlReadShaderBuffer, read_shader_buffer +word rlCopyShaderBuffer, copy_shader_buffer +word rlGetShaderBufferSize, get_shader_buffer_size +word rlBindImageTexture, bind_image_texture +word rlGetMatrixModelview, get_matrix_modelview +word rlGetMatrixProjection, get_matrix_projection +word rlGetMatrixTransform, get_matrix_transform +word rlGetMatrixProjectionStereo, get_matrix_projection_stereo +word rlGetMatrixViewOffsetStereo, get_matrix_view_offset_stereo +word rlSetMatrixProjection, set_matrix_projection +word rlSetMatrixModelview, set_matrix_modelview +word rlSetMatrixProjectionStereo, set_matrix_projection_stereo +word rlSetMatrixViewOffsetStereo, set_matrix_view_offset_stereo +word rlLoadDrawCube, load_draw_cube +word rlLoadDrawQuad, load_draw_quad +word rlLoadShaderDefault, load_shader_default +word rlUnloadShaderDefault, unload_shader_default +word rlGetPixelDataSize, internal_get_pixel_data_size +word rlMatrixIdentity, internal_matrix_identity +word rlMatrixMultiply, internal_matrix_multiply +word rlCheckRenderBatchLimit, check_render_batch_limit +word rlLoadShaderDefault, load_shader_default +word rlSetMatrixProjection, set_matrix_projection +word rlUnloadFramebuffer, unload_framebuffer +word rlReadScreenPixels, read_screen_pixels +word rlReadTexturePixels, read_texture_pixels +word rlGetShaderLocsDefault, get_shader_locs_default +word rlGetPixelFormatName, get_pixel_format_name diff --git a/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp_gl.refactor b/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp_gl.refactor new file mode 100644 index 0000000..54288a0 --- /dev/null +++ b/project/auxillary/vis_ast/dependencies/raylib/raylib_cpp_gl.refactor @@ -0,0 +1,242 @@ +// rlgl.h + +word RL_NOT_REFACTORED, RL_REFACTORED_CPP + +namespace rl_, +namespace rl, +namespace rlgl, +not word rl +not word rlgl + +namespace RL_LOG_, LOG_ +namespace RL_PIXELFORMAT_, PIXELFORMAT_ +namespace RL_TEXTURE_, TEXTURE_ +namespace RL_SHADER_, SHADER_ +namespace RL_BLEND_, BLEND_ +namespace RL_ATTACHMENT_, ATTACHMENT_ +namespace RL_CULL_, CULL_ + +not include rlgl.h + +word TRACELOG, RL_TRACELOG + +word RLGL, GLOBAL_DATA + +word Vector2, Vector2 +word Vector3, Vector3 +word Vector4, Vector4 +word Quaternion, Quaternion +word Matrix, Matrix +word Color, Color +word Rectangle, Rectangle +word Image, Image +word Texture, Texture +word Texture2D, Texture2d +word TextureCubemap, Texture_Cubemap +word RenderTexture, Render_Texture +word RenderTexture2D, Render_Texture2D +word NPatchInfo, N_Patch_Info +word GlyphInfo, Glyph_Info +word Font, Font +word Camera3D, Camera3D +word Camera, Camera +word Camera2D, Camera2D +word Mesh, Mesh +word Shader, Shader +word MaterialMap, Material_Map +word Material, Material +word Transform, Transform +word BoneInfo, Bone_Info +word Model, Model +word ModelAnimation, Model_Animation +word Ray, Ray +word RayCollision, Ray_Collision +word BoundingBox, Bounding_box +word Wave, Wave +word rAudioBuffer, Audio_Buffer +word rAudioProcessor, Audio_Processor +word AudioStream, Audio_Stream +word Sound, Sound +word Music, Music +word VrDeviceInfo, VR_Device_Info +word VrStereoConfig, VR_Stereo_Config +word FilePathList, File_Path_List +word AutomationEvent, Automation_Event +word AutomationEventList, Automation_Event_List +word Matrix, Matrix + +word rlVertexBuffer, vertex_buffer +word rlDrawCall, draw_call +word rlRenderBatch, render_batch +word rlGlVersion, gl_version +word rlTraceLogLevel, trace_log_level +word rlPixelFormat, pixel_format +word rlTextureFilter, texture_filter +word rlShaderLocationIndex, shader_location_index +word rlShaderUniformDataType, shader_uniform_data_type +word rlShaderAttributeDataType, shader_attribute_data_type +word rlBlendMode, blend_mode +word rlFramebufferAttachType, framebuffer_attach_type +word rlFramebufferAttachTextureType, framebuffer_attach_texture_type +word rlCullMode, cull_mode + +word get_pixel_data_size, gpu_get_pixel_data_size + +word rlMatrixMode, matrix_mode +word rlPushMatrix, push_matrix +word rlPopMatrix, pop_matrix +word rlLoadIdentity, load_identity +word rlTranslatef, translatef +word rlRotatef, rotatef +word rlScalef, scalef +word rlMultMatrixf, mult_matrixf +word rlFrustum, frustum +word rlOrtho, ortho +word rlViewport, viewport +word rlBegin, begin +word rlEnd, end +word rlVertex2i, vertex2i +word rlVertex2f, vertex2f +word rlVertex3f, vertex3f +word rlTexCoord2f, tex_coord2f +word rlNormal3f, normal3f +word rlColor4ub, color4ub +word rlColor3f, color3f +word rlColor4f, color4f +word rlEnableVertexArray, enable_vertex_array +word rlDisableVertexArray, disable_vertex_array +word rlEnableVertexBuffer, enable_vertex_buffer +word rlDisableVertexBuffer, disable_vertex_buffer +word rlEnableVertexBufferElement, enable_vertex_buffer_element +word rlDisableVertexBufferElement, disable_vertex_buffer_element +word rlEnableVertexAttribute, enable_vertex_attribute +word rlDisableVertexAttribute, disable_vertex_attribute +word rlEnableStatePointer, enable_state_pointer +word rlDisableStatePointer, disable_state_pointer +word rlActiveTextureSlot, active_texture_slot +word rlEnableTexture, enable_texture +word rlDisableTexture, disable_texture +word rlEnableTextureCubemap, enable_texture_cubemap +word rlDisableTextureCubemap, disable_texture_cubemap +word rlTextureParameters, texture_parameters +word rlCubemapParameters, cubemap_parameters +word rlEnableShader, enable_shader +word rlDisableShader, disable_shader +word rlEnableFramebuffer, enable_framebuffer +word rlDisableFramebuffer, disable_framebuffer +word rlActiveDrawBuffers, active_draw_buffers +word rlBlitFramebuffer, blit_framebuffer +word rlEnableColorBlend, enable_color_blend +word rlDisableColorBlend, disable_color_blend +word rlEnableDepthTest, enable_depth_test +word rlDisableDepthTest, disable_depth_test +word rlEnableDepthMask, enable_depth_mask +word rlDisableDepthMask, disable_depth_mask +word rlEnableBackfaceCulling, enable_backface_culling +word rlDisableBackfaceCulling, disable_backface_culling +word rlSetCullFace, set_cull_face +word rlEnableScissorTest, enable_scissor_test +word rlDisableScissorTest, disable_scissor_test +word rlScissor, scissor +word rlEnableWireMode, enable_wire_mode +word rlEnablePointMode, enable_point_mode +word rlDisableWireMode, disable_wire_mode +word rlSetLineWidth, set_line_width +word rlGetLineWidth, get_line_width +word rlEnableSmoothLines, enable_smooth_lines +word rlDisableSmoothLines, disable_smooth_lines +word rlEnableStereoRender, enable_stereo_render +word rlDisableStereoRender, disable_stereo_render +word rlIsStereoRenderEnabled, is_stereo_render_enabled +word rlClearColor, clear_color +word rlClearScreenBuffers, clear_screen_buffers +word rlCheckErrors, check_errors +word rlSetBlendMode, set_blend_mode +word rlSetBlendFactors, set_blend_factors +word rlSetBlendFactorsSeparate, set_blend_factors_separate +word rlglInit, init +word rlglClose, close +word rlLoadExtensions, load_extensions +word rlGetVersion, get_version +word rlSetFramebufferWidth, set_framebuffer_width +word rlGetFramebufferWidth, get_framebuffer_width +word rlSetFramebufferHeight, set_framebuffer_height +word rlGetFramebufferHeight, get_framebuffer_height +word rlGetTextureIdDefault, get_texture_id_default +word rlGetShaderIdDefault, get_shader_id_default +word rlLoadRenderBatch, load_render_batch +word rlUnloadRenderBatch, unload_render_batch +word rlDrawRenderBatch, draw_render_batch +word rlSetRenderBatchActive, set_render_batch_active +word rlDrawRenderBatchActive, draw_render_batch_active +word rlCheckRenderBatchLimit, check_render_batch_limit +word rlSetTexture, set_texture +word rlLoadVertexArray, load_vertex_array +word rlLoadVertexBuffer, load_vertex_buffer +word rlLoadVertexBufferElement, load_vertex_buffer_element +word rlUpdateVertexBuffer, update_vertex_buffer +word rlUpdateVertexBufferElements, update_vertex_buffer_elements +word rlUnloadVertexArray, unload_vertex_array +word rlUnloadVertexBuffer, unload_vertex_buffer +word rlSetVertexAttribute, set_vertex_attribute +word rlSetVertexAttributeDivisor, set_vertex_attribute_divisor +word rlSetVertexAttributeDefault, set_vertex_attribute_default +word rlDrawVertexArray, draw_vertex_array +word rlDrawVertexArrayElements, draw_vertex_array_elements +word rlDrawVertexArrayInstanced, draw_vertex_array_instanced +word rlDrawVertexArrayElementsInstanced, draw_vertex_array_elements_instanced +word rlLoadTexture, load_texture +word rlLoadTextureDepth, load_texture_depth +word rlLoadTextureCubemap, load_texture_cubemap +word rlUpdateTexture, update_texture +word rlGetGlTextureFormats, get_gl_texture_formats +word rlUnloadTexture, unload_texture +word rlGenTextureMipmaps, gen_texture_mipmaps +word rlLoadFramebuffer, load_framebuffer +word rlFramebufferAttach, framebuffer_attach +word rlFramebufferComplete, framebuffer_complete +word rlUnloadFramebuffer, unload_framebuffer +word rlLoadShaderCode, load_shader_code +word rlCompileShader, compile_shader +word rlLoadShaderProgram, load_shader_program +word rlUnloadShaderProgram, unload_shader_program +word rlGetLocationUniform, get_location_uniform +word rlGetLocationAttrib, get_location_attrib +word rlSetUniform, set_uniform +word rlSetUniformMatrix, set_uniform_matrix +word rlSetUniformSampler, set_uniform_sampler +word rlSetShader, set_shader +word rlLoadComputeShaderProgram, load_compute_shader_program +word rlComputeShaderDispatch, compute_shader_dispatch +word rlLoadShaderBuffer, load_shader_buffer +word rlUnloadShaderBuffer, unload_shader_buffer +word rlUpdateShaderBuffer, update_shader_buffer +word rlBindShaderBuffer, bind_shader_buffer +word rlReadShaderBuffer, read_shader_buffer +word rlCopyShaderBuffer, copy_shader_buffer +word rlGetShaderBufferSize, get_shader_buffer_size +word rlBindImageTexture, bind_image_texture +word rlGetMatrixModelview, get_matrix_modelview +word rlGetMatrixProjection, get_matrix_projection +word rlGetMatrixTransform, get_matrix_transform +word rlGetMatrixProjectionStereo, get_matrix_projection_stereo +word rlGetMatrixViewOffsetStereo, get_matrix_view_offset_stereo +word rlSetMatrixProjection, set_matrix_projection +word rlSetMatrixModelview, set_matrix_modelview +word rlSetMatrixProjectionStereo, set_matrix_projection_stereo +word rlSetMatrixViewOffsetStereo, set_matrix_view_offset_stereo +word rlLoadDrawCube, load_draw_cube +word rlLoadDrawQuad, load_draw_quad +word rlLoadShaderDefault, load_shader_default +word rlUnloadShaderDefault, unload_shader_default +word rlGetPixelDataSize, internal_get_pixel_data_size +word rlMatrixIdentity, internal_matrix_identity +word rlMatrixMultiply, internal_matrix_multiply +word rlCheckRenderBatchLimit, check_render_batch_limit +word rlLoadShaderDefault, load_shader_default +word rlSetMatrixProjection, set_matrix_projection +word rlUnloadFramebuffer, unload_framebuffer +word rlReadScreenPixels, read_screen_pixels +word rlReadTexturePixels, read_texture_pixels +word rlGetShaderLocsDefault, get_shader_locs_default +word rlGetPixelFormatName, get_pixel_format_name diff --git a/project/auxillary/vis_ast/update_deps.ps1 b/project/auxillary/vis_ast/update_deps.ps1 index 77ffcc0..b8eef86 100644 --- a/project/auxillary/vis_ast/update_deps.ps1 +++ b/project/auxillary/vis_ast/update_deps.ps1 @@ -49,8 +49,10 @@ switch ($_){ . $incremental_checks # Clear out the current content first -# remove-item $path_temp -Recurse -# New-Item -ItemType Directory -Path $path_temp +if ( test-path $path_temp) { + remove-item $path_temp -Recurse +} +New-Item -ItemType Directory -Path $path_temp if ( -not (Test-Path $path_binaries) ) { New-Item -ItemType Directory -Path $path_binaries @@ -76,8 +78,10 @@ function setup-raylib { $path_raylib_glfw_inc = join-path $path_raylib_src 'external/glfw/include' $path_raylib_gputex = join-path $path_raylib_src 'external/rl_gputex.h' - remove-item $path_raylib_master -Recurse - #invoke-webrequest -uri $url_raylib_zip -outfile $path_raylib_zip + if ( test-path $path_raylib_master ) { + remove-item $path_raylib_master -Recurse + } + invoke-webrequest -uri $url_raylib_zip -outfile $path_raylib_zip expand-archive -path $path_raylib_zip -destinationpath $path_temp write-host "Building raylib with $vendor" @@ -87,27 +91,27 @@ function setup-raylib { New-Item $path_build -ItemType Directory } - $raylib_headers = Get-ChildItem -Path $path_raylib_src -Filter '*.h' -File - $raylib_modules = get-childitem -path $path_raylib_src -filter '*.c' -file + $raylib_headers = Get-ChildItem -Path $path_raylib_src -Filter '*.h' -File + $raylib_modules = get-childitem -path $path_raylib_src -filter '*.c' -file # Refactor with refactor.exe if ( $true ) { - $path_refactor = join-path $path_raylib 'raylib_c.refactor' - $path_refactor_rlgl = join-path $path_raylib 'raylib_c_gl.refactor' + $path_refactor = join-path $path_raylib 'raylib_cpp.refactor' + $path_refactor_rlgl = join-path $path_raylib 'raylib_cpp_gl.refactor' - $fmt_includes = @() + $files = @() foreach ( $header in $raylib_headers ) { $file_name = split-path $header -leaf if ( -not $file_name.Equals('rlgl.h' ) ) { - $fmt_includes += "$header" + $files += "$header" } } foreach ( $module in $raylib_modules ) { - $fmt_includes += "$module" + $files += "$module" } - $fmt_includes += "$path_raylib_gputex" + $files += "$path_raylib_gputex" $platform_modules = @() foreach ( $module in (get-childitem -path $path_raylib_platforms -filter '*.c' -file) ) { @@ -120,9 +124,9 @@ function setup-raylib { write-host "Beginning refactor...`n" $refactors = @(@()) $refactorParams = @( - "-debug", - "-num=$($fmt_includes.Count)" - "-src=$($fmt_includes)", + # "-debug", + "-num=$($files.Count)" + "-src=$($files)", "-spec=$($path_refactor)" ) & refactor $refactorParams @@ -133,7 +137,7 @@ function setup-raylib { write-host "Beginning refactor...`n" $refactors = @(@()) $refactorParams = @( - "-debug", + # "-debug", "-num=$($platform_modules.Count)" "-src=$($platform_modules)", "-spec=$($path_refactor)" @@ -148,7 +152,7 @@ function setup-raylib { write-host "Beginning refactor just for rlgl.h...`n" $refactors = @(@()) $refactorParams = @( - "-debug", + # "-debug", "-num=$($gl_modules.Count)" "-src=$($gl_modules)", "-spec=$($path_refactor_rlgl)" @@ -221,7 +225,8 @@ function setup-raylib { $compiler_args = @( ($flag_define + 'PLATFORM_DESKTOP'), - ($flag_define + 'BUILD_LIBTYPE_SHARED') + ($flag_define + 'RL_BUILD_LIBTYPE_SHARED'), + $flag_all_cpp ) $linker_args = @( $flag_link_dll, @@ -244,5 +249,6 @@ function setup-raylib { foreach ($header in $raylib_headers) { Copy-Item -Path $header -Destination (join-path $path_raylib_inc (split-path $header -Leaf)) } + remove-item -path $path_temp -Recurse } setup-raylib diff --git a/scripts/helpers/vendor_toolchain.ps1 b/scripts/helpers/vendor_toolchain.ps1 index 39df19f..75ceeef 100644 --- a/scripts/helpers/vendor_toolchain.ps1 +++ b/scripts/helpers/vendor_toolchain.ps1 @@ -92,8 +92,8 @@ function run-linker if ( $vendor -match "clang" ) { # https://clang.llvm.org/docs/ClangCommandLineReference.html - $flag_all_c = '/TC' - $flag_all_cpp = '/TP' + $flag_all_c = '-x c' + $flag_all_cpp = '-x c++' $flag_compile = '-c' $flag_color_diagnostics = '-fcolor-diagnostics' $flag_no_color_diagnostics = '-fno-color-diagnostics'