aboutsummaryrefslogtreecommitdiff
path: root/src/rlgl.c
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2015-04-13 20:15:28 +0200
committerraysan5 <raysan5@gmail.com>2015-04-13 20:15:28 +0200
commit7d2318c1677fd6e81b8cc63b040289148ca8adfc (patch)
treea8782a2ecfa48440e8bad02ed3be112dbacac441 /src/rlgl.c
parenta632a04a300a60232f6b9a941e73af08d74c6e6a (diff)
downloadraylib-7d2318c1677fd6e81b8cc63b040289148ca8adfc.tar.gz
raylib-7d2318c1677fd6e81b8cc63b040289148ca8adfc.zip
WIP on shaders and textures
Moved functions: LoadShader(), UnloadShader() Add support for PVR textures compressed/uncompressed WIP: Detect available extensions for compressed textures
Diffstat (limited to 'src/rlgl.c')
-rw-r--r--src/rlgl.c52
1 files changed, 39 insertions, 13 deletions
diff --git a/src/rlgl.c b/src/rlgl.c
index c4deda8f..cedad6a7 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -793,7 +793,7 @@ void rlglInit(void)
const GLubyte *extensionName = glGetStringi(GL_EXTENSIONS, i);
if (strcmp(extensionName, (const GLubyte *)"GL_ARB_vertex_array_object") == 0)
{
- // The extension is supported by our hardware and driver, try to get related functions popinters
+ // The extension is supported by our hardware and driver, try to get related functions pointers
glGenVertexArrays = (PFNGLGENVERTEXARRAYSOESPROC)wglGetProcAddress("glGenVertexArrays");
glBindVertexArray = (PFNGLBINDVERTEXARRAYOESPROC)wglGetProcAddress("glBindVertexArray");
glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSOESPROC)wglGetProcAddress("glDeleteVertexArrays");
@@ -851,14 +851,40 @@ void rlglInit(void)
// Show supported extensions
// NOTE: We don't need that much data on screen... right now...
-/*
+
#if defined(GRAPHICS_API_OPENGL_33)
GLint numExt;
glGetIntegerv(GL_NUM_EXTENSIONS, &numExt);
for (int i = 0; i < numExt; i++)
{
- TraceLog(INFO, "Supported extension: %s", glGetStringi(GL_EXTENSIONS, i));
+ //TraceLog(INFO, "Supported extension: %s", glGetStringi(GL_EXTENSIONS, i));
+ /*
+ if (strcmp(glGetStringi(GL_EXTENSIONS, i),"GL_EXT_texture_compression_s3tc") == 0)
+ {
+ // DDS texture compression support
+
+ // TODO: Check required tokens
+ }
+ else if (strcmp(glGetStringi(GL_EXTENSIONS, i),"GL_OES_compressed_ETC1_RGB8_texture") == 0)
+ {
+ // ETC1 texture compression support
+ }
+ else if (strcmp(glGetStringi(GL_EXTENSIONS, i),"GL_ARB_ES3_compatibility") == 0)
+ {
+ //OES_compressed_ETC2_RGB8_texture,
+ //OES_compressed_ETC2_RGBA8_texture,
+ // ETC2/EAC texture compression support
+ }
+ else if (strcmp(glGetStringi(GL_EXTENSIONS, i),"GL_IMG_texture_compression_pvrtc") == 0)
+ {
+ // PVR texture compression support
+ }
+ else if (strcmp(glGetStringi(GL_EXTENSIONS, i),"GL_KHR_texture_compression_astc_hdr") == 0)
+ {
+ // ASTC texture compression support
+ }
+ */
}
#elif defined(GRAPHICS_API_OPENGL_ES2)
char *extensions = (char *)glGetString(GL_EXTENSIONS); // One big string
@@ -866,7 +892,7 @@ void rlglInit(void)
// NOTE: String could be splitted using strtok() function (string.h)
TraceLog(INFO, "Supported extension: %s", extensions);
#endif
-*/
+
/*
GLint numComp = 0;
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numComp);
@@ -894,7 +920,7 @@ void rlglInit(void)
// Init default Shader (GLSL 110) -> Common for GL 3.3+ and ES2
defaultShader = LoadDefaultShader();
simpleShader = LoadSimpleShader();
- //customShader = LoadShader("custom.vs", "custom.fs"); // Works ok
+ //customShader = rlglLoadShader("custom.vs", "custom.fs"); // Works ok
InitializeBuffers(); // Init vertex arrays
InitializeBuffersGPU(); // Init VBO and VAO
@@ -1795,7 +1821,7 @@ Model rlglLoadModel(VertexData mesh)
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
// Load a shader (vertex shader + fragment shader) from text data
-unsigned int rlglLoadShader(char *vShaderStr, char *fShaderStr)
+unsigned int rlglLoadShaderFromText(char *vShaderStr, char *fShaderStr)
{
unsigned int program;
GLuint vertexShader;
@@ -1915,17 +1941,17 @@ unsigned char *rlglReadScreenPixels(int width, int height)
return imgData; // NOTE: image data should be freed
}
-// Load a shader (vertex shader + fragment shader) from text data
-Shader LoadShader(char *vsFileName, char *fsFileName)
+// Load a shader (vertex shader + fragment shader) from files
+Shader rlglLoadShader(char *vsFileName, char *fsFileName)
{
Shader shader;
-
+
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
// Shaders loading from external text file
char *vShaderStr = TextFileRead(vsFileName);
char *fShaderStr = TextFileRead(fsFileName);
- shader.id = rlglLoadShader(vShaderStr, fShaderStr);
+ shader.id = rlglLoadShaderFromText(vShaderStr, fShaderStr);
if (shader.id != 0) TraceLog(INFO, "[SHDR ID %i] Custom shader loaded successfully", shader.id);
else TraceLog(WARNING, "[SHDR ID %i] Custom shader could not be loaded", shader.id);
@@ -1955,7 +1981,7 @@ Shader LoadShader(char *vsFileName, char *fsFileName)
}
// Link shader to model
-void SetModelShader(Model *model, Shader shader)
+void rlglSetModelShader(Model *model, Shader shader)
{
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
model->shader = shader;
@@ -2079,7 +2105,7 @@ static Shader LoadDefaultShader(void)
" gl_FragColor = texture2D(texture0, fragTexCoord) * fragColor; \n"
"} \n";
- shader.id = rlglLoadShader(vShaderStr, fShaderStr);
+ shader.id = rlglLoadShaderFromText(vShaderStr, fShaderStr);
if (shader.id != 0) TraceLog(INFO, "[SHDR ID %i] Default shader loaded successfully", shader.id);
else TraceLog(WARNING, "[SHDR ID %i] Default shader could not be loaded", shader.id);
@@ -2145,7 +2171,7 @@ static Shader LoadSimpleShader(void)
" gl_FragColor = texture2D(texture0, fragTexCoord) * tintColor; \n"
"} \n";
- shader.id = rlglLoadShader(vShaderStr, fShaderStr);
+ shader.id = rlglLoadShaderFromText(vShaderStr, fShaderStr);
if (shader.id != 0) TraceLog(INFO, "[SHDR ID %i] Simple shader loaded successfully", shader.id);
else TraceLog(WARNING, "[SHDR ID %i] Simple shader could not be loaded", shader.id);