From 2b207be11ec9c025ab9fe248f02a0c5df78992a4 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 9 Mar 2026 13:22:29 +0100 Subject: [PATCH] ADDED: `rlUnloadShader()` #5631 --- src/rlgl.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/rlgl.h b/src/rlgl.h index bb6411ee2..0e73e415c 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -772,6 +772,7 @@ RLAPI void rlResizeFramebuffer(int width, int height); // Res // Shaders management RLAPI unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings RLAPI unsigned int rlCompileShader(const char *shaderCode, int type); // Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) +RLAPI void rlUnloadShader(unsigned int id); // Unload shader, loaded with rlCompileShader() RLAPI unsigned int rlLoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId); // Load custom shader program RLAPI void rlUnloadShaderProgram(unsigned int id); // Unload shader program RLAPI int rlGetLocationUniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform, requires shader program id @@ -4182,7 +4183,7 @@ void rlUnloadVertexBuffer(unsigned int vboId) // NOTE: If shader string is NULL, using default vertex/fragment shaders unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode) { - unsigned int id = 0; + unsigned int id = 0; // Shader program id if (!isGpuReady) { TRACELOG(RL_LOG_WARNING, "GL: GPU is not ready to load data, trying to load before InitWindow()?"); return id; } #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) @@ -4397,6 +4398,16 @@ void rlUnloadShaderProgram(unsigned int id) #endif } +// Delete shader +void rlUnloadShader(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glDeleteShader(id); + + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Unloaded shader data from VRAM (GPU)", id); +#endif +} + // Get shader location uniform // NOTE: First parameter refers to shader program id int rlGetLocationUniform(unsigned int shaderId, const char *uniformName) @@ -4612,7 +4623,6 @@ void rlUnloadShaderBuffer(unsigned int ssboId) #else TRACELOG(RL_LOG_WARNING, "SSBO: SSBO not enabled. Define GRAPHICS_API_OPENGL_43"); #endif - } // Update SSBO buffer data