From 2356cb87850e518f095b144762afa22205d9864d Mon Sep 17 00:00:00 2001 From: R2turnTrue Date: Sun, 8 Mar 2026 02:27:44 +0900 Subject: [PATCH] [rlgl] add `RL_PIXELFORMAT_UNCOMPRESSED_DEPTH` to enum `rlPixelFormat` --- src/rlgl.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/rlgl.h b/src/rlgl.h index bb6411ee2..6d1f792ac 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -461,6 +461,7 @@ typedef enum { 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_UNCOMPRESSED_DEPTH, // Depth component (24 or 16 bit, depending on OpenGL version) 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 @@ -3630,6 +3631,36 @@ void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned #endif #endif #endif + case RL_PIXELFORMAT_UNCOMPRESSED_DEPTH: + if (RLGL.ExtSupported.texDepth) + { + *glFormat = GL_DEPTH_COMPONENT; + + if (RLGL.ExtSupported.texDepthWebGL) + { + *glInternalFormat = GL_DEPTH_COMPONENT; + *glType = GL_UNSIGNED_SHORT; + } + else + { + if (RLGL.ExtSupported.maxDepthBits == 32) + { + *glInternalFormat = GL_DEPTH_COMPONENT32_OES; + *glType = GL_UNSIGNED_INT; + } + else if (RLGL.ExtSupported.maxDepthBits == 24) + { + *glInternalFormat = GL_DEPTH_COMPONENT24_OES; + *glType = GL_UNSIGNED_INT; + } + else + { + *glInternalFormat = GL_DEPTH_COMPONENT16_OES; + *glType = GL_UNSIGNED_SHORT; + } + } + } + break; #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; @@ -3644,6 +3675,27 @@ void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_R16F; *glFormat = GL_RED; *glType = GL_HALF_FLOAT; break; case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_DEPTH: + if (RLGL.ExtSupported.texDepth) + { + *glFormat = GL_DEPTH_COMPONENT; + if (RLGL.ExtSupported.maxDepthBits == 32) + { + *glInternalFormat = GL_DEPTH_COMPONENT32F; + *glType = GL_FLOAT; + } + else if (RLGL.ExtSupported.maxDepthBits == 24) + { + *glInternalFormat = GL_DEPTH_COMPONENT24; + *glType = GL_UNSIGNED_INT; + } + else + { + *glInternalFormat = GL_DEPTH_COMPONENT16; + *glType = GL_UNSIGNED_SHORT; + } + } + break; #endif #if !defined(GRAPHICS_API_OPENGL_11) case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break;