DEADSOFTWARE

Add clang format
[nanogl.git] / nanogl.cpp
index bd699da41c968ebe4af9455963bb0afac9e2b35a..53b6384848c5c47f115266f46baaf3fcb299e9f8 100644 (file)
@@ -87,23 +87,19 @@ void APIENTRY gl_unimplemented(GLenum none) {
 #endif
 }
 
+#ifdef XASH_SDL
+#include "SDL.h"
+#endif
+
 void *nanoGL_GetProcAddress(const char *name)
 {
-#if defined(__MULTITEXTURE_SUPPORT__)
-       if (!strcmp(procname, "glMultiTexCoord2fARB"))
-       {
-               return (void*)&glMultiTexCoord2fARB;
-       }
-       else if (!strcmp(procname, "glActiveTextureARB"))
-       {
-               return (void*)&glActiveTexture;
-       }
-       else if (!strcmp(procname, "glClientActiveTextureARB"))
-       {
-               return (void*)&glClientActiveTexture;
-       }
+       void *addr = NULL;
+#ifdef XASH_SDL
+       addr = SDL_GL_GetProcAddress( name ); 
+       if( !addr )
 #endif
-       return dlsym(glesLib, name);
+       addr = dlsym(glesLib, name);
+       return addr;
 }
 
 static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void * default_func )
@@ -151,7 +147,11 @@ static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void
                                
                                if ( f == NULL ) {
                                        LOGE ( "<%s> not found in libEGL.so", *api);
-                                       f = default_func; //(void*)gl_unimplemented;
+                    if( glEsImpl->eglGetProcAddress && ( (void*)glEsImpl->eglGetProcAddress != (void*)gl_unimplemented ) )
+                        f = (void*)glEsImpl->eglGetProcAddress( *api );
+                    if(f == NULL)
+                        f = (void*)default_func; //(void*)gl_unimplemented;
+
                                }
                                else {
                                        LOGD ("<%s> @ 0x%p\n", *api, f);
@@ -160,7 +160,10 @@ static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void
                        else
                        {
                                LOGE ( "libEGL.so not loaded!");
-                               f = default_func;
+                            if( glEsImpl->eglGetProcAddress && ( (void*)glEsImpl->eglGetProcAddress != (void*)gl_unimplemented ) )
+                                f = (void*)glEsImpl->eglGetProcAddress( *api );
+                if( !f )
+                               f = (void*)default_func;
                        }
                }
                else {
@@ -286,6 +289,19 @@ int nanoGL_Init()
            return 0;
     }
 
+#ifdef __ANDROID__
+       // somewhy it does not initialize correctly
+       *((void**)&glEsImpl->glGenFramebuffers) = (void*)glEsImpl->eglGetProcAddress( "glGenFramebuffersOES" );
+       *((void**)&glEsImpl->glGenRenderbuffers) = (void*)glEsImpl->eglGetProcAddress( "glGenRenderbuffersOES" );
+       *((void**)&glEsImpl->glRenderbufferStorage) = (void*)glEsImpl->eglGetProcAddress( "glRenderbufferStorageOES" );
+       *((void**)&glEsImpl->glBindFramebuffer) = (void*)glEsImpl->eglGetProcAddress( "glBindFramebufferOES" );
+       *((void**)&glEsImpl->glBindRenderbuffer) = (void*)glEsImpl->eglGetProcAddress( "glBindRenderbufferOES" );
+       *((void**)&glEsImpl->glFramebufferTexture2D) = (void*)glEsImpl->eglGetProcAddress( "glFramebufferTexture2DOES" );
+       *((void**)&glEsImpl->glDeleteRenderbuffers) = (void*)glEsImpl->eglGetProcAddress( "glDeleteRenderbuffersOES" );
+       *((void**)&glEsImpl->glDeleteFramebuffers) = (void*)glEsImpl->eglGetProcAddress( "glDeleteFramebuffersOES" );
+       *((void**)&glEsImpl->glFramebufferRenderbuffer) = (void*)glEsImpl->eglGetProcAddress( "glFramebufferRenderbufferOES" );
+#endif
+
        // Init nanoGL
        InitGLStructs();
        return 1;
@@ -303,4 +319,3 @@ void nanoGL_Destroy()
        // release lib
        dlclose(glesLib);
 }
-