| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -250,7 +250,6 @@ typedef unsigned char byte; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        unsigned int id;        // OpenGL framebuffer (fbo) id | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Texture2D texture;      // Color buffer attachment texture | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Texture2D depth;        // Depth buffer attachment texture | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        bool depthTexture;      // Track if depth attachment is a texture or renderbuffer | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } RenderTexture2D; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // RenderTexture type, same as RenderTexture2D | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1453,9 +1452,18 @@ void rlDeleteTextures(unsigned int id) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Unload render texture from GPU memory | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: All attached textures/cubemaps/renderbuffers are also deleted | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void rlDeleteRenderTextures(RenderTexture2D target) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(SUPPORT_RENDER_TEXTURES_HINT) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int depthType = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glBindFramebuffer(GL_FRAMEBUFFER, target.id);   // Bind framebuffer to query depth texture type | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &depthType); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glBindFramebuffer(GL_FRAMEBUFFER, 0);           // Unbind framebuffer to delete textures | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // NOTE: If a texture object is deleted while its image is attached to the *currently bound* framebuffer,  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // the texture image is automatically detached from the currently bound framebuffer. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (target.texture.id > 0)  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);  // Detach texture from FBO | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -1463,12 +1471,12 @@ void rlDeleteRenderTextures(RenderTexture2D target) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (target.depth.id > 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (target.depthTexture)  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (depthType == GL_TEXTURE)  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glDeleteTextures(1, &target.depth.id); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else if (depthType == GL_RENDERBUFFER)  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glDeleteRenderbuffers(1, &target.depth.id); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2276,7 +2284,7 @@ RenderTexture2D rlLoadRenderTexture(int width, int height, int format, int depth | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RenderTexture2D target = { 0 }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(SUPPORT_RENDER_TEXTURES_HINT) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (useDepthTexture && RLGL.ExtSupported.texDepth) target.depthTexture = true; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (useDepthTexture && o">!RLGL.ExtSupported.texDepth) useDepthTexture = false; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Create the framebuffer object | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glGenFramebuffers(1, &target.id); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2334,8 +2342,11 @@ void rlRenderTextureAttach(RenderTexture2D target, unsigned int id, int attachTy | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (attachType == 0) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, id, 0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    else if (attachType == 1) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (target.depthTexture) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, id, 0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, id); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        int depthType = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &depthType); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (depthType == GL_TEXTURE) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, id, 0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else if (depthType == GL_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, id); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glBindFramebuffer(GL_FRAMEBUFFER, 0); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |