@ -1047,7 +1047,7 @@ void ToggleFullscreen(void)  
		
	
		
			
			        glfwGetWindowPos ( CORE . Window . handle ,  & CORE . Window . position . x ,  & CORE . Window . position . y ) ;   
		
	
		
			
			
  
		
	
		
			
			        int  monitorCount  =  0 ;   
		
	
		
			
					 GLFWmonitor * *  monitors  =  glfwGetMonitors ( & monitorCount ) ;  
		
	
		
			
			         GLFWmonitor * *  monitors  =  glfwGetMonitors ( & monitorCount ) ;  
		
	
		
			
			
  
		
	
		
			
			        int  monitorIndex  =  GetCurrentMonitor ( ) ;   
		
	
		
			
			        / /  use  GetCurrentMonitor  so  we  correctly  get  the  display  the  window  is  on   
		
	
	
		
			
				
				
					
						 
				
				
					
						 
				
				
				 
			
			@ -1077,7 +1077,7 @@ void ToggleFullscreen(void)  
		
	
		
			
			        glfwSetWindowMonitor ( CORE . Window . handle ,  NULL ,  CORE . Window . position . x ,  CORE . Window . position . y ,  CORE . Window . screen . width ,  CORE . Window . screen . height ,  GLFW_DONT_CARE ) ;   
		
	
		
			
			    }   
		
	
		
			
			
  
		
	
		
			
				 / /  Try  to  enable  GPU  V - Sync ,  so  frames  are  limited  to  screen  refresh  rate  ( 60 Hz  - >  60  FPS )  
		
	
		
			
			     / /  Try  to  enable  GPU  V - Sync ,  so  frames  are  limited  to  screen  refresh  rate  ( 60 Hz  - >  60  FPS )  
		
	
		
			
			    / /  NOTE :  V - Sync  can  be  enabled  by  graphic  driver  configuration   
		
	
		
			
			    if  ( CORE . Window . flags  &  FLAG_VSYNC_HINT )  glfwSwapInterval ( 1 ) ;   
		
	
		
			
			
  
		
	
	
		
			
				
				
					
						 
				
				
					
						 
				
				
				 
			
			@ -2034,7 +2034,37 @@ Shader LoadShader(const char *vsFileName, const char *fsFileName)  
		
	
		
			
			    if  ( fShaderStr  ! =  NULL )  RL_FREE ( fShaderStr ) ;   
		
	
		
			
			      
		
	
		
			
			    / /  After  shader  loading ,  we  TRY  to  set  default  location  names   
		
	
		
			
			    if  ( shader . id  >  0 )  SetShaderDefaultLocations ( & shader ) ;   
		
	
		
			
			    if  ( shader . id  >  0 )   
		
	
		
			
			    {   
		
	
		
			
			        / /  Default  shader  attrib  locations  have  been  fixed  before  linking :   
		
	
		
			
			        / /           vertex  position  location     =  0   
		
	
		
			
			        / /           vertex  texcoord  location     =  1   
		
	
		
			
			        / /           vertex  normal  location       =  2   
		
	
		
			
			        / /           vertex  color  location        =  3   
		
	
		
			
			        / /           vertex  tangent  location      =  4   
		
	
		
			
			        / /           vertex  texcoord2  location    =  5   
		
	
		
			
			          
		
	
		
			
			        / /  NOTE :  If  any  location  is  not  found ,  loc  point  becomes  - 1   
		
	
		
			
			
  
		
	
		
			
			        / /  Get  handles  to  GLSL  input  attibute  locations   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_POSITION ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_POSITION ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_TEXCOORD01 ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_TEXCOORD02 ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_NORMAL ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_NORMAL ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_TANGENT ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_TANGENT ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_VERTEX_COLOR ]  =  rlGetLocationAttrib ( shader . id ,  DEFAULT_SHADER_ATTRIB_NAME_COLOR ) ;   
		
	
		
			
			
  
		
	
		
			
			        / /  Get  handles  to  GLSL  uniform  locations  ( vertex  shader )   
		
	
		
			
			        shader . locs [ SHADER_LOC_MATRIX_MVP ]   =  rlGetLocationUniform ( shader . id ,  " mvp " ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_MATRIX_PROJECTION ]   =  rlGetLocationUniform ( shader . id ,  " projection " ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_MATRIX_VIEW ]   =  rlGetLocationUniform ( shader . id ,  " view " ) ;   
		
	
		
			
			
  
		
	
		
			
			        / /  Get  handles  to  GLSL  uniform  locations  ( fragment  shader )   
		
	
		
			
			        shader . locs [ SHADER_LOC_COLOR_DIFFUSE ]  =  rlGetLocationUniform ( shader . id ,  " colDiffuse " ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_MAP_DIFFUSE ]  =  rlGetLocationUniform ( shader . id ,  " texture0 " ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_MAP_SPECULAR ]  =  rlGetLocationUniform ( shader . id ,  " texture1 " ) ;   
		
	
		
			
			        shader . locs [ SHADER_LOC_MAP_NORMAL ]  =  rlGetLocationUniform ( shader . id ,  " texture2 " ) ;   
		
	
		
			
			    }   
		
	
		
			
			
  
		
	
		
			
			    return  shader ;   
		
	
		
			
			}  
		
	
	
		
			
				
				
				
				
					
						 
				
				 
			
			@ -2046,15 +2076,13 @@ void UnloadShader(Shader shader)  
		
	
		
			
			    {   
		
	
		
			
			        rlUnloadShaderProgram ( shader . id ) ;   
		
	
		
			
			        RL_FREE ( shader . locs ) ;   
		
	
		
			
			
  
		
	
		
			
			        TRACELOG ( LOG_INFO ,  " SHADER: [ID %i] Unloaded shader program data from VRAM (GPU) " ,  shader . id ) ;   
		
	
		
			
			    }   
		
	
		
			
			}  
		
	
		
			
			
  
		
	
		
			
			/ /  Begin  custom  shader  mode  
		
	
		
			
			void  BeginShaderMode ( Shader  shader )  
		
	
		
			
			{  
		
	
		
			
			    rlSetShaderCurrent  ( shader ) ;   
		
	
		
			
			    rlSetShaderActive  ( shader ) ;   
		
	
		
			
			}  
		
	
		
			
			
  
		
	
		
			
			/ /  End  custom  shader  mode  ( returns  to  default  shader )  
		
	
	
		
			
				
				
				
				
					
						 
				
				 
			
			@ -2066,23 +2094,13 @@ void EndShaderMode(void)  
		
	
		
			
			/ /  Get  shader  uniform  location  
		
	
		
			
			int  GetShaderLocation ( Shader  shader ,  const  char  * uniformName )  
		
	
		
			
			{  
		
	
		
			
			    int  location  =  rlGetLocationUniform ( shader . id ,  uniformName ) ;   
		
	
		
			
			
  
		
	
		
			
			    if  ( location  = =  - 1 )  TRACELOG ( LOG_WARNING ,  " SHADER: [ID %i] Failed to find shader uniform: %s " ,  shader . id ,  uniformName ) ;   
		
	
		
			
			    else  TRACELOG ( LOG_INFO ,  " SHADER: [ID %i] Shader uniform (%s)  set  at  location :  % i " , shader.id, uniformName, location) ;   
		
	
		
			
			      
		
	
		
			
			    return  location ;   
		
	
		
			
			    return  rlGetLocationUniform ( shader . id ,  uniformName ) ;   
		
	
		
			
			}  
		
	
		
			
			
  
		
	
		
			
			/ /  Get  shader  attribute  location  
		
	
		
			
			int  GetShaderLocationAttrib ( Shader  shader ,  const  char  * attribName )  
		
	
		
			
			{  
		
	
		
			
			    int  location  =  rlGetLocationAttrib ( shader . id ,  attribName ) ;   
		
	
		
			
			
  
		
	
		
			
			    if  ( location  = =  - 1 )  TRACELOG ( LOG_WARNING ,  " SHADER: [ID %i] Failed to find shader attribute: %s " ,  shader . id ,  attribName ) ;   
		
	
		
			
			    else  TRACELOG ( LOG_INFO ,  " SHADER: [ID %i] Shader attribute (%s)  set  at  location :  % i " , shader.id, attribName, location) ;   
		
	
		
			
			
  
		
	
		
			
			    return  location ;   
		
	
		
			
			    return  rlGetLocationAttrib ( shader . id ,  attribName ) ;   
		
	
		
			
			}  
		
	
		
			
			
  
		
	
		
			
			/ /  Set  shader  uniform  value  
		
	
	
		
			
				
				
					
						 
				
				
					
						 
				
				
				 
			
			@ -4373,9 +4391,9 @@ static void SetupViewport(int width, int height)  
		
	
		
			
			    CORE . Window . render . width  =  width ;   
		
	
		
			
			    CORE . Window . render . height  =  height ;   
		
	
		
			
			
  
		
	
		
			
				 / /  Set  viewport  width  and  height  
		
	
		
			
				 / /  NOTE :  We  consider  render  size  ( scaled )  and  offset  in  case  black  bars  are  required  and  
		
	
		
			
				 / /  render  area  does  not  match  full  display  area  ( this  situation  is  only  applicable  on  fullscreen  mode )  
		
	
		
			
			     / /  Set  viewport  width  and  height  
		
	
		
			
			     / /  NOTE :  We  consider  render  size  ( scaled )  and  offset  in  case  black  bars  are  required  and  
		
	
		
			
			     / /  render  area  does  not  match  full  display  area  ( this  situation  is  only  applicable  on  fullscreen  mode )  
		
	
		
			
			# if defined(__APPLE__)  
		
	
		
			
			    float  xScale  =  1.0f ,  yScale  =  1.0f ;   
		
	
		
			
			    glfwGetWindowContentScale ( CORE . Window . handle ,  & xScale ,  & yScale ) ;