|
|
@ -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); |
|
|
|
|
|
|
|