X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=nanogl.cpp;h=53b6384848c5c47f115266f46baaf3fcb299e9f8;hb=abdb29a685652588a08667d7830879d407a18d5c;hp=bd699da41c968ebe4af9455963bb0afac9e2b35a;hpb=57b822a8a58cbc7ff7edd99a1d375b559a198c9e;p=nanogl.git diff --git a/nanogl.cpp b/nanogl.cpp index bd699da..53b6384 100644 --- a/nanogl.cpp +++ b/nanogl.cpp @@ -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); } -