X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=nanogl.cpp;h=64c5f4da9eb5f8b90faec6a93af1f35590197867;hb=refs%2Fheads%2Fshared_nanogl;hp=5add36a367bda8220013657d37844bc3bfb0f861;hpb=37683dff4a5215ba524bc7eccc22206388051374;p=nanogl.git diff --git a/nanogl.cpp b/nanogl.cpp index 5add36a..64c5f4d 100644 --- a/nanogl.cpp +++ b/nanogl.cpp @@ -64,15 +64,31 @@ static void* glesLib = NULL; GlESInterface* glEsImpl = NULL; +int initialized = 0; + extern void InitGLStructs(); static void gl_unimplemented() { LOGE ("Called unimplemented OpenGL ES API\n"); } -void *nanoGL_GetProcAddress(const char *name) +void *nanoGL_GetProcAddress(const char *procname) { - return dlsym(glesLib, 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; + } +#endif + return dlsym(glesLib, procname); } static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void * default_func ) @@ -139,6 +155,8 @@ static int loadDriver(const char * name) { */ int nanoGL_Init() { + if( initialized ) return 1; + const char * lib1 = "libGLESv1_CM.so"; // Has both gl* & egl* funcs SDK < 1.5 const char * lib2 = "libGLESv2.so"; // Only gl* funcs SDK >= 1.5 const char * lib3 = "libEGL.so"; // Only egl* funcs SDK >= 1.5 @@ -187,6 +205,7 @@ int nanoGL_Init() // Init nanoGL InitGLStructs(); + initialized = 1; return 1; }