diff --git a/nanogl.cpp b/nanogl.cpp
index bd699da41c968ebe4af9455963bb0afac9e2b35a..53b6384848c5c47f115266f46baaf3fcb299e9f8 100644 (file)
--- a/nanogl.cpp
+++ b/nanogl.cpp
#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 {
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;
// release lib
dlclose(glesLib);
}
-