| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -18,7 +18,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define GRAPHICS_API_OPENGL_ES2 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Use selected OpenGL graphics backend, should be supported by platform | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Those preprocessor defines are only used on rlgl module, if OpenGL version is | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       required by any other module, use rlGetVersion() tocheck it | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       required by any other module, use rlGetVersion() to check it | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RLGL_IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Generates the implementation of the library into the included file. | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1454,7 +1454,7 @@ float rlGetLineWidth(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Enable line aliasing | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void rlEnableSmoothLines(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_11) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glEnable(GL_LINE_SMOOTH); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -1462,7 +1462,7 @@ void rlEnableSmoothLines(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Disable line aliasing | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void rlDisableSmoothLines(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_11) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glDisable(GL_LINE_SMOOTH); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1515,7 +1515,7 @@ void rlClearScreenBuffers(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Check and log OpenGL error codes | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void rlCheckErrors() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int check = 1; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    while (check) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1631,7 +1631,6 @@ void rlglInit(int width, int height) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Get extensions strings | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for (int i = 0; i < numExt; i++) extList[i] = (char *)glGetStringi(GL_EXTENSIONS, i); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Allocate 512 strings pointers (2 KB) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2391,10 +2390,6 @@ unsigned int rlLoadTexture(void *data, int width, int height, int format, int mi | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glGenTextures(1, &id);              // Generate texture id | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    //glActiveTexture(GL_TEXTURE0);     // If not defined, using GL_TEXTURE0 by default (shader texture) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glBindTexture(GL_TEXTURE_2D, id); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int mipWidth = width; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -3673,14 +3668,9 @@ static void rlLoadShaderDefault(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for (int i = 0; i < MAX_SHADER_LOCATIONS; i++) RLGL.State.defaultShader.locs[i] = -1; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Vertex shader directly defined, no external file required | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const char *defaultVShaderStr = | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const char *vShaderDefault = | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 120                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 100                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec3 vertexPosition;     \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec2 vertexTexCoord;     \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec4 vertexColor;        \n" | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -3693,6 +3683,14 @@ static void rlLoadShaderDefault(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "in vec4 vertexColor;               \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "out vec2 fragTexCoord;             \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "out vec4 fragColor;                \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 100                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec3 vertexPosition;     \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec2 vertexTexCoord;     \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "attribute vec4 vertexColor;        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec2 fragTexCoord;         \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec4 fragColor;            \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform mat4 mvp;                  \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "void main()                        \n" | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -3703,39 +3701,48 @@ static void rlLoadShaderDefault(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "}                                  \n"; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Fragment shader directly defined, no external file required | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const char *defaultFShaderStr = | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const char *fShaderDefault = | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 120                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 100                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "precision mediump float;           \n"     // precision required for OpenGL ES2 (WebGL) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec2 fragTexCoord;         \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec4 fragColor;            \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform sampler2D texture0;        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform vec4 colDiffuse;           \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "void main()                        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "{                                  \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    vec4 texelColor = texture2D(texture0, fragTexCoord); \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    gl_FragColor = texelColor*colDiffuse*fragColor;      \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "}                                  \n";      | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#elif defined(GRAPHICS_API_OPENGL_33) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 330       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "in vec2 fragTexCoord;              \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "in vec4 fragColor;                 \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "out vec4 finalColor;               \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform sampler2D texture0;        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform vec4 colDiffuse;           \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "void main()                        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "{                                  \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_21) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    vec4 texelColor = texture2D(texture0, fragTexCoord); \n" // NOTE: texture2D() is deprecated on OpenGL 3.3 and ES 3.0 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    gl_FragColor = texelColor*colDiffuse*fragColor;      \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#elif defined(GRAPHICS_API_OPENGL_33) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    vec4 texelColor = texture(texture0, fragTexCoord);   \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    finalColor = texelColor*colDiffuse*fragColor;        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "}                                  \n"; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GRAPHICS_API_OPENGL_ES2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "#version 100                       \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "precision mediump float;           \n"     // Precision required for OpenGL ES2 (WebGL) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec2 fragTexCoord;         \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "varying vec4 fragColor;            \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform sampler2D texture0;        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "uniform vec4 colDiffuse;           \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "void main()                        \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "{                                  \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    vec4 texelColor = texture2D(texture0, fragTexCoord); \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "    gl_FragColor = texelColor*colDiffuse*fragColor;      \n" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    "}                                  \n"; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // NOTE: Compiled vertex/fragment shaders are kept for re-use | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RLGL.State.defaultVShaderId = rlCompileShader(defaultVShaderStr, GL_VERTEX_SHADER);     // Compile default vertex shader | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RLGL.State.defaultFShaderId = rlCompileShader(defaultFShaderStr, GL_FRAGMENT_SHADER);   // Compile default fragment shader | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RLGL.State.defaultVShaderId = rlCompileShader(vShaderDefault, GL_VERTEX_SHADER);     // Compile default vertex shader | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RLGL.State.defaultFShaderId = rlCompileShader(fShaderDefault, GL_FRAGMENT_SHADER);   // Compile default fragment shader | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RLGL.State.defaultShader.id = rlLoadShaderProgram(RLGL.State.defaultVShaderId, RLGL.State.defaultFShaderId); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |