diff --git a/src/external/rl_gputex.h b/src/external/rltexgpu.h similarity index 74% rename from src/external/rl_gputex.h rename to src/external/rltexgpu.h index 033045bc8..eb4d2b6b1 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rltexgpu.h @@ -1,6 +1,6 @@ /********************************************************************************************** * -* rl_gputex v1.1 - GPU compressed textures loading and saving +* rltexgpu v1.2 - GPU compressed textures loading and saving * * DESCRIPTION: * @@ -10,41 +10,40 @@ * Note that some file formats (DDS, PVR, KTX) also support uncompressed data storage. * In those cases data is loaded uncompressed and format is returned * -* FIXME: This library still depends on Raylib due to the following reasons: +* FIXME: This library still depends on raylib due to the following reasons: * - rl_save_ktx_to_memory() requires rlGetGlTextureFormats() from rlgl.h -* though this is not a problem, if you don't need KTX support * * TODO: * - Review rl_load_ktx_from_memory() to support KTX v2.2 specs * * CONFIGURATION: * -* #define RL_GPUTEX_SUPPORT_DDS -* #define RL_GPUTEX_SUPPORT_PKM -* #define RL_GPUTEX_SUPPORT_KTX -* #define RL_GPUTEX_SUPPORT_PVR -* #define RL_GPUTEX_SUPPORT_ASTC +* #define RLTEXGPU_SUPPORT_DDS +* #define RLTEXGPU_SUPPORT_PKM +* #define RLTEXGPU_SUPPORT_KTX +* #define RLTEXGPU_SUPPORT_PVR +* #define RLTEXGPU_SUPPORT_ASTC * Define desired file formats to be supported * -* #define RL_GPUTEX_SHOW_LOG_INFO +* #define RLTEXGPU_SHOW_LOG_INFO * Define, if you wish to see warnings generated by the library -* This will include unless you provide your own RL_GPUTEX_LOG -* #define RL_GPUTEX_LOG +* This will include unless you provide your own RLTEXGPU_LOG +* #define RLTEXGPU_LOG * Define, if you wish to provide your own warning function * Make sure that this macro puts newline character '\n' at the end * -* #define RL_GPUTEX_MALLOC -* #define RL_GPUTEX_FREE +* #define RLTEXGPU_MALLOC +* #define RLTEXGPU_FREE * Define those macros in order to provide your own libc-compliant allocator; * not doing so will include * If you're providing any of those, you must provide ALL of them, * otherwise the code will (most likely) crash... * -* #define RL_GPUTEX_NULL +* #define RLTEXGPU_NULL * Define in order to provide your own libc-compliant NULL pointer; * not doing so will include * -* #define RL_GPUTEX_MEMCPY +* #define RLTEXGPU_MEMCPY * Define in order to provide your own libc-compliant 'memcpy' function; * not doing so will include * @@ -53,12 +52,16 @@ * There is no need to do so when statically linking * * VERSIONS HISTORY: +* 1.2 (18-Mar-2026) Renamed library to `rltexgpu` +* Improved usage as standalone linrary +* Decouple logging and memory allocation from raylib +* * 1.1 (15-Jul-2025) Several minor fixes related to specific image formats; some work has been done -* in order to decouple the library from Raylib by introducing few new macros; library still -* requires Raylib in order to function properly +* in order to decouple the library from raylib by introducing few new macros; library still +* requires raylib in order to function properly * * 1.0 (17-Sep-2022) First version has been created by migrating part of compressed-texture-loading -* functionality from Raylib src/rtextures.c into self-contained library +* functionality from raylib src/rtextures.c into self-contained library * * LICENSE: zlib/libpng * @@ -81,8 +84,8 @@ * **********************************************************************************************/ -#ifndef RL_GPUTEX_H -#define RL_GPUTEX_H +#ifndef RLTEXGPU_H +#define RLTEXGPU_H #ifndef RLGPUTEXAPI #define RLGPUTEXAPI // Functions defined as 'extern' by default (implicit specifiers) @@ -93,30 +96,30 @@ // WARNING: Enum values aligned with raylib/rlgl equivalent PixelFormat/rlPixelFormat enum, // to avoid value mapping between the 3 libraries format values typedef enum { - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) - RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) - RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) - RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) - RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp - RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp } rlGpuTexPixelFormat; //---------------------------------------------------------------------------------- @@ -139,7 +142,7 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt } #endif -#endif // RL_GPUTEX_H +#endif // RLTEXGPU_H /*********************************************************************************** * @@ -147,49 +150,49 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt * ************************************************************************************/ -#if defined(RL_GPUTEX_IMPLEMENTATION) +#if defined(RLTEXGPU_IMPLEMENTATION) -#if defined(RL_GPUTEX_SHOW_LOG_INFO) && !defined(RL_GPUTEX_LOG) +#if defined(RLTEXGPU_SHOW_LOG_INFO) && !defined(RLTEXGPU_LOG) #include // Required for: printf() #endif -#if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_NULL) +#if !defined(RLTEXGPU_MALLOC) || !defined(RLTEXGPU_NULL) #include // Required for: NULL, malloc(), calloc(), free() #endif -#if !defined(RL_GPUTEX_MEMCPY) +#if !defined(RLTEXGPU_MEMCPY) #include // Required for: memcpy() #endif -#if defined(RL_GPUTEX_MALLOC) || defined(RL_GPUTEX_FREE) - #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_FREE) - #warning "RL_GPUTEX_MALLOC and RL_GPUTEX_FREE allocation functions are required to be provided" +#if defined(RLTEXGPU_MALLOC) || defined(RLTEXGPU_FREE) + #if !defined(RLTEXGPU_MALLOC) || !defined(RLTEXGPU_FREE) + #warning "RLTEXGPU_MALLOC and RLTEXGPU_FREE allocation functions are required to be provided" #endif #endif -#if !defined(RL_GPUTEX_MALLOC) - #define RL_GPUTEX_MALLOC(sz) malloc(sz) - #define RL_GPUTEX_FREE(ptr) free(ptr) +#if !defined(RLTEXGPU_MALLOC) + #define RLTEXGPU_MALLOC(sz) malloc(sz) + #define RLTEXGPU_FREE(ptr) free(ptr) #endif -#if !defined(RL_GPUTEX_NULL) - #define RL_GPUTEX_NULL NULL +#if !defined(RLTEXGPU_NULL) + #define RLTEXGPU_NULL NULL #endif -#if !defined(RL_GPUTEX_MEMCPY) - #define RL_GPUTEX_MEMCPY(dest, src, num) memcpy(dest, src, num) +#if !defined(RLTEXGPU_MEMCPY) + #define RLTEXGPU_MEMCPY(dest, src, num) memcpy(dest, src, num) #endif // Simple warning logging system to avoid LOG() calls if required // NOTE: Avoiding those calls, also avoids const strings memory usage -// WARN: This macro expects that newline character is added automatically -// in order to match the functionality of Raylib's TRACELOG() -#if defined(RL_GPUTEX_SHOW_LOG_INFO) - #if !defined(RL_GPUTEX_LOG) - #define RL_GPUTEX_LOG(...) (void)(printf("RL_GPUTEX: WARNING: " __VA_ARGS__), printf("\n")) +// WARNING: This macro expects that newline character is added automatically +// in order to match the functionality of raylib's TRACELOG() +#if defined(RLTEXGPU_SHOW_LOG_INFO) + #if !defined(RLTEXGPU_LOG) + #define RLTEXGPU_LOG(...) (void)(printf("RL_GPUTEX: WARNING: " __VA_ARGS__), printf("\n")) #endif #else - #if defined(RL_GPUTEX_LOG) + #if defined(RLTEXGPU_LOG) // Undefine it first in order to supress warnings about macro redefinition - #undef RL_GPUTEX_LOG + #undef RLTEXGPU_LOG #endif - #define RL_GPUTEX_LOG(...) + #define RLTEXGPU_LOG(...) #endif //---------------------------------------------------------------------------------- @@ -204,11 +207,11 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsign //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- -#if defined(RL_GPUTEX_SUPPORT_DDS) +#if defined(RLTEXGPU_SUPPORT_DDS) // Loading DDS from memory image data (compressed or uncompressed) void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = RL_GPUTEX_NULL; // Image data pointer + void *image_data = RLTEXGPU_NULL; // Image data pointer int image_pixel_size = 0; // Image pixel size unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -256,7 +259,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ unsigned int reserved2; } dds_header; - if (file_data_ptr != RL_GPUTEX_NULL) + if (file_data_ptr != RLTEXGPU_NULL) { // Verify the type of file unsigned char *dds_header_id = file_data_ptr; @@ -264,7 +267,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if ((dds_header_id[0] != 'D') || (dds_header_id[1] != 'D') || (dds_header_id[2] != 'S') || (dds_header_id[3] != ' ')) { - RL_GPUTEX_LOG("DDS file data not valid"); + RLTEXGPU_LOG("DDS file data not valid"); } else { @@ -275,8 +278,8 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ *width = header->width; *height = header->height; - if (*width % 4 != 0) RL_GPUTEX_LOG("DDS file width must be multiple of 4. Image will not display correctly"); - if (*height % 4 != 0) RL_GPUTEX_LOG("DDS file height must be multiple of 4. Image will not display correctly"); + if (*width % 4 != 0) RLTEXGPU_LOG("DDS file width must be multiple of 4. Image will not display correctly"); + if (*height % 4 != 0) RLTEXGPU_LOG("DDS file height must be multiple of 4. Image will not display correctly"); image_pixel_size = header->width*header->height; @@ -289,11 +292,11 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size/3; - image_data = RL_GPUTEX_MALLOC(data_size); + image_data = RLTEXGPU_MALLOC(data_size); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); - *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5; + *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5; } else if (header->ddspf.flags == 0x41) // With alpha channel { @@ -301,9 +304,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size/3; - image_data = RL_GPUTEX_MALLOC(data_size); + image_data = RLTEXGPU_MALLOC(data_size); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); unsigned char alpha = 0; @@ -315,15 +318,15 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned short *)image_data)[i] += alpha; } - *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; + *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; } else if (header->ddspf.a_bit_mask == 0xf000) // 4bit alpha { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size/3; - image_data = RL_GPUTEX_MALLOC(data_size); + image_data = RLTEXGPU_MALLOC(data_size); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); unsigned char alpha = 0; @@ -335,7 +338,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned short *)image_data)[i] += alpha; } - *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; + *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; } } } @@ -343,19 +346,19 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*3*sizeof(unsigned char); if (header->mipmap_count > 1) data_size = data_size + data_size/3; - image_data = RL_GPUTEX_MALLOC(data_size); + image_data = RLTEXGPU_MALLOC(data_size); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); - *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8; + *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8; } else if ((header->ddspf.flags == 0x41) && (header->ddspf.rgb_bit_count == 32)) // DDS_RGBA, no compressed { int data_size = image_pixel_size*4*sizeof(unsigned char); if (header->mipmap_count > 1) data_size = data_size + data_size/3; - image_data = RL_GPUTEX_MALLOC(data_size); + image_data = RLTEXGPU_MALLOC(data_size); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); unsigned char blue = 0; @@ -369,7 +372,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned char *)image_data)[i + 2] = blue; } - *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; + *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; } else if (((header->ddspf.flags == 0x04) || (header->ddspf.flags == 0x05)) && (header->ddspf.fourcc > 0)) // Compressed { @@ -379,19 +382,19 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if (header->mipmap_count > 1) data_size = header->pitch_or_linear_size + header->pitch_or_linear_size/3; else data_size = header->pitch_or_linear_size; - image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); + image_data = RLTEXGPU_MALLOC(data_size*sizeof(unsigned char)); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); switch (header->ddspf.fourcc) { case FOURCC_DXT1: { - if (header->ddspf.flags == 0x04) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB; - else *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA; + if (header->ddspf.flags == 0x04) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGB; + else *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGBA; } break; - case FOURCC_DXT3: *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA; break; - case FOURCC_DXT5: *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA; break; + case FOURCC_DXT3: *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA; break; + case FOURCC_DXT5: *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT5_RGBA; break; default: break; } } @@ -402,13 +405,13 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ } #endif -#if defined(RL_GPUTEX_SUPPORT_PKM) +#if defined(RLTEXGPU_SUPPORT_PKM) // Loading PKM image data (ETC1/ETC2 compression) // NOTE: KTX is the standard Khronos Group compression format (ETC1/ETC2, mipmaps) // PKM is a much simpler file format used mainly to contain a single ETC1/ETC2 compressed image (no mipmaps) void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = RL_GPUTEX_NULL; // Image data pointer + void *image_data = RLTEXGPU_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -439,13 +442,13 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ // NOTE: The extended width and height are the widths rounded up to a multiple of 4 // NOTE: ETC is always 4bit per pixel (64 bit for each 4x4 block of pixels) - if (file_data_ptr != RL_GPUTEX_NULL) + if (file_data_ptr != RLTEXGPU_NULL) { pkm_header *header = (pkm_header *)file_data_ptr; if ((header->id[0] != 'P') || (header->id[1] != 'K') || (header->id[2] != 'M') || (header->id[3] != ' ')) { - RL_GPUTEX_LOG("PKM file data not valid"); + RLTEXGPU_LOG("PKM file data not valid"); } else { @@ -465,13 +468,13 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ int data_size = (*width)*(*height)*bpp/8; // Total data size in bytes - image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); + image_data = RLTEXGPU_MALLOC(data_size*sizeof(unsigned char)); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); - if (header->format == 0) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB; - else if (header->format == 1) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB; - else if (header->format == 3) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; + if (header->format == 0) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC1_RGB; + else if (header->format == 1) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_RGB; + else if (header->format == 3) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; } } @@ -479,12 +482,12 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ } #endif -#if defined(RL_GPUTEX_SUPPORT_KTX) +#if defined(RLTEXGPU_SUPPORT_KTX) // Load KTX compressed image data (ETC1/ETC2 compression) // TODO: Review KTX loading, many things changed! void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = RL_GPUTEX_NULL; // Image data pointer + void *image_data = RLTEXGPU_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -522,14 +525,14 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ // NOTE: Before start of every mipmap data block, we have: unsigned int data_size - if (file_data_ptr != RL_GPUTEX_NULL) + if (file_data_ptr != RLTEXGPU_NULL) { ktx_header *header = (ktx_header *)file_data_ptr; if ((header->id[1] != 'K') || (header->id[2] != 'T') || (header->id[3] != 'X') || (header->id[4] != ' ') || (header->id[5] != '1') || (header->id[6] != '1')) { - RL_GPUTEX_LOG("KTX file data not valid"); + RLTEXGPU_LOG("KTX file data not valid"); } else { @@ -544,13 +547,13 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ int data_size = ((int *)file_data_ptr)[0]; file_data_ptr += sizeof(int); - image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); + image_data = RLTEXGPU_MALLOC(data_size*sizeof(unsigned char)); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); - if (header->gl_internal_format == 0x8D64) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB; - else if (header->gl_internal_format == 0x9274) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB; - else if (header->gl_internal_format == 0x9278) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; + if (header->gl_internal_format == 0x8D64) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC1_RGB; + else if (header->gl_internal_format == 0x9274) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_RGB; + else if (header->gl_internal_format == 0x9278) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; // TODO: Support uncompressed data formats? Right now it returns format = 0! } @@ -608,7 +611,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo w /= 2; h /= 2; } - unsigned char *file_data = RL_GPUTEX_MALLOC(data_size); + unsigned char *file_data = RLTEXGPU_MALLOC(data_size); unsigned char *file_data_ptr = file_data; ktx_header header = { 0 }; @@ -620,7 +623,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo const char ktx_identifier[12] = { 0xAB, 'K', 'T', 'X', ' ', '1', '1', 0xBB, '\r', '\n', 0x1A, '\n' }; // Get the image header - RL_GPUTEX_MEMCPY(header.id, ktx_identifier, 12); // KTX 1.1 signature + RLTEXGPU_MEMCPY(header.id, ktx_identifier, 12); // KTX 1.1 signature header.endianness = 0; header.gl_type = 0; // Obtained from format header.gl_type_size = 1; @@ -642,10 +645,10 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // NOTE: We can save into a .ktx all PixelFormats supported by raylib, including compressed formats like DXT, ETC or ASTC - if (header.gl_format == -1) RL_GPUTEX_LOG("RL_GPUTEX: GL format not supported for KTX export (%i)", header.gl_format); + if (header.gl_format == -1) RLTEXGPU_LOG("RL_GPUTEX: GL format not supported for KTX export (%i)", header.gl_format); else { - RL_GPUTEX_MEMCPY(file_data_ptr, &header, sizeof(ktx_header)); + RLTEXGPU_MEMCPY(file_data_ptr, &header, sizeof(ktx_header)); file_data_ptr += sizeof(ktx_header); int temp_width = width; @@ -657,8 +660,8 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo { unsigned int data_size = get_pixel_data_size(temp_width, temp_height, format); - RL_GPUTEX_MEMCPY(file_data_ptr, &data_size, sizeof(unsigned int)); - RL_GPUTEX_MEMCPY(file_data_ptr + 4, (unsigned char *)data + data_offset, data_size); + RLTEXGPU_MEMCPY(file_data_ptr, &data_size, sizeof(unsigned int)); + RLTEXGPU_MEMCPY(file_data_ptr + 4, (unsigned char *)data + data_offset, data_size); temp_width /= 2; temp_height /= 2; @@ -671,34 +674,34 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo int success = false; FILE *file = fopen(file_name, "wb"); - if (file != RL_GPUTEX_NULL) + if (file != RLTEXGPU_NULL) { unsigned int count = (unsigned int)fwrite(file_data, sizeof(unsigned char), data_size, file); - if (count == 0) RL_GPUTEX_LOG("FILEIO: [%s] Failed to write file", file_name); - else if (count != data_size) RL_GPUTEX_LOG("FILEIO: [%s] File partially written", file_name); - else (void)0; // WARN: this branch is handled by Raylib, since rl_gputex only prints warnings + if (count == 0) RLTEXGPU_LOG("FILEIO: [%s] Failed to write file", file_name); + else if (count != data_size) RLTEXGPU_LOG("FILEIO: [%s] File partially written", file_name); + else (void)0; int result = fclose(file); - if (result != 0) RL_GPUTEX_LOG("FILEIO: [%s] Failed to close file", file_name); + if (result != 0) RLTEXGPU_LOG("FILEIO: [%s] Failed to close file", file_name); if (result == 0 && count == data_size) success = true; } - else RL_GPUTEX_LOG("FILEIO: [%s] Failed to open file", file_name); + else RLTEXGPU_LOG("FILEIO: [%s] Failed to open file", file_name); - RL_GPUTEX_FREE(file_data); // Free file data buffer + RLTEXGPU_FREE(file_data); // Free file data buffer // If all data has been written correctly to file, success = 1 return success; } #endif -#if defined(RL_GPUTEX_SUPPORT_PVR) +#if defined(RLTEXGPU_SUPPORT_PVR) // Loading PVR image data (uncompressed or PVRT compression) // NOTE: PVR v2 not supported, use PVR v3 instead void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = RL_GPUTEX_NULL; // Image data pointer + void *image_data = RLTEXGPU_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -756,7 +759,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ } PVRMetadata; #endif - if (file_data_ptr != RL_GPUTEX_NULL) + if (file_data_ptr != RLTEXGPU_NULL) { // Check PVR image version unsigned char pvr_version = file_data_ptr[0]; @@ -768,7 +771,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ if ((header->id[0] != 'P') || (header->id[1] != 'V') || (header->id[2] != 'R') || (header->id[3] != 3)) { - RL_GPUTEX_LOG("PVR file data not valid"); + RLTEXGPU_LOG("PVR file data not valid"); } else { @@ -779,24 +782,24 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ *mips = header->num_mipmaps; // Check data format - if (((header->channels[0] == 'l') && (header->channels[1] == 0)) && (header->channel_depth[0] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; - else if (((header->channels[0] == 'l') && (header->channels[1] == 'a')) && ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8))) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; + if (((header->channels[0] == 'l') && (header->channels[1] == 0)) && (header->channel_depth[0] == 8)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; + else if (((header->channels[0] == 'l') && (header->channels[1] == 'a')) && ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8))) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; else if ((header->channels[0] == 'r') && (header->channels[1] == 'g') && (header->channels[2] == 'b')) { if (header->channels[3] == 'a') { - if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 5) && (header->channel_depth[2] == 5) && (header->channel_depth[3] == 1)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; - else if ((header->channel_depth[0] == 4) && (header->channel_depth[1] == 4) && (header->channel_depth[2] == 4) && (header->channel_depth[3] == 4)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; - else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8) && (header->channel_depth[3] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; + if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 5) && (header->channel_depth[2] == 5) && (header->channel_depth[3] == 1)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; + else if ((header->channel_depth[0] == 4) && (header->channel_depth[1] == 4) && (header->channel_depth[2] == 4) && (header->channel_depth[3] == 4)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; + else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8) && (header->channel_depth[3] == 8)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; } else if (header->channels[3] == 0) { - if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 6) && (header->channel_depth[2] == 5)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5; - else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8; + if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 6) && (header->channel_depth[2] == 5)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5; + else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8)) *format = RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8; } } - else if (header->channels[0] == 2) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB; - else if (header->channels[0] == 3) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA; + else if (header->channels[0] == 2) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGB; + else if (header->channels[0] == 3) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGBA; file_data_ptr += header->metadata_size; // Skip meta data header @@ -804,36 +807,36 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ int bpp = 0; switch (*format) { - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGB: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; default: break; } int data_size = (*width)*(*height)*bpp/8; // Total data size in bytes - image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); + image_data = RLTEXGPU_MALLOC(data_size*sizeof(unsigned char)); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); } } - else if (pvr_version == 52) RL_GPUTEX_LOG("PVRv2 format not supported, update your files to PVRv3"); + else if (pvr_version == 52) RLTEXGPU_LOG("PVRv2 format not supported, update your files to PVRv3"); } return image_data; } #endif -#if defined(RL_GPUTEX_SUPPORT_ASTC) +#if defined(RLTEXGPU_SUPPORT_ASTC) // Load ASTC compressed image data (ASTC compression) void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = RL_GPUTEX_NULL; // Image data pointer + void *image_data = RLTEXGPU_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -856,13 +859,13 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file unsigned char length[3]; // void *Z-size (1 for 2D images) } astc_header; - if (file_data_ptr != RL_GPUTEX_NULL) + if (file_data_ptr != RLTEXGPU_NULL) { astc_header *header = (astc_header *)file_data_ptr; if ((header->id[3] != 0x5c) || (header->id[2] != 0xa1) || (header->id[1] != 0xab) || (header->id[0] != 0x13)) { - RL_GPUTEX_LOG("ASTC file data not valid"); + RLTEXGPU_LOG("ASTC file data not valid"); } else { @@ -881,14 +884,14 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file { int data_size = (*width)*(*height)*bpp/8; // Data size in bytes - image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); + image_data = RLTEXGPU_MALLOC(data_size*sizeof(unsigned char)); - RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); + RLTEXGPU_MEMCPY(image_data, file_data_ptr, data_size); - if (bpp == 8) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA; - else if (bpp == 2) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA; + if (bpp == 8) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA; + else if (bpp == 2) *format = RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA; } - else RL_GPUTEX_LOG("ASTC block size configuration not supported"); + else RLTEXGPU_LOG("ASTC block size configuration not supported"); } } @@ -907,27 +910,27 @@ static int get_pixel_data_size(int width, int height, int format) switch (format) { - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGB: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGBA: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC1_RGB: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_RGB: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGB: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT5_RGBA: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; default: break; } @@ -937,8 +940,8 @@ static int get_pixel_data_size(int width, int height, int format) // if texture is smaller, minimum dataSize is 8 or 16 if ((width < 4) && (height < 4)) { - if ((format >= RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA)) data_size = 8; - else if ((format >= RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) data_size = 16; + if ((format >= RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA)) data_size = 8; + else if ((format >= RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) data_size = 16; } return data_size; @@ -959,69 +962,69 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, 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_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_LUMINANCE_ALPHA; *gl_format = GL_LUMINANCE_ALPHA; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_LUMINANCE_ALPHA; *gl_format = GL_LUMINANCE_ALPHA; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; #if !defined(GRAPHICS_API_OPENGL_11) #if defined(GRAPHICS_API_OPENGL_ES3) - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F_EXT; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F_EXT; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_HALF_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F_EXT; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F_EXT; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F_EXT; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F_EXT; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F_EXT; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F_EXT; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; #else - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float #if defined(GRAPHICS_API_OPENGL_21) - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_ARB; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_ARB; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_ARB; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_ARB; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_ARB; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_ARB; break; #else // defined(GRAPHICS_API_OPENGL_ES2) - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float #endif #endif #endif #elif defined(GRAPHICS_API_OPENGL_33) - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_R8; *gl_format = GL_RED; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_RG8; *gl_format = GL_RG; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB565; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB8; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGB5_A1; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA4; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA8; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F; *gl_format = GL_RED; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F; *gl_format = GL_RED; *gl_type = GL_HALF_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; - case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_R8; *gl_format = GL_RED; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_RG8; *gl_format = GL_RG; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB565; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB8; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGB5_A1; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA4; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA8; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F; *gl_format = GL_RED; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F; *gl_format = GL_RED; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; + case RLTEXGPU_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; #endif #if !defined(GRAPHICS_API_OPENGL_11) - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB: *gl_internal_format = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB: *gl_internal_format = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB: *gl_internal_format = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: *gl_internal_format = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 - case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGB: *gl_internal_format = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT1_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT3_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_DXT5_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC1_RGB: *gl_internal_format = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_RGB: *gl_internal_format = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGB: *gl_internal_format = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RLTEXGPU_PIXELFORMAT_COMPRESSED_PVRT_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case RLTEXGPU_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 #endif - default: RL_GPUTEX_LOG("GPUTEX: Current format not supported (%i)", format); break; + default: RLTEXGPU_LOG("GPUTEX: Current format not supported (%i)", format); break; } */ } -#endif // RL_GPUTEX_IMPLEMENTATION +#endif // RLTEXGPU_IMPLEMENTATION /* // OpenGL texture data formats