diff --git a/engine/client/cl_render.c b/engine/client/cl_render.c index ba913453..88a25f69 100644 --- a/engine/client/cl_render.c +++ b/engine/client/cl_render.c @@ -252,7 +252,7 @@ static render_api_t gRenderAPI = NULL, // GL_TexGen, NULL, // GL_TextureTarget, NULL, // GL_SetTexCoordArrayMode, - GL_GetProcAddress, + NULL, // GL_GetProcAddress, NULL, // GL_UpdateTexSize, NULL, NULL, @@ -309,6 +309,7 @@ static void R_FillRenderAPIFromRef( render_api_t *to, const ref_interface_t *fro to->GL_DrawParticles = from->GL_DrawParticles; to->LightVec = from->LightVec; to->StudioGetTexture = from->StudioGetTexture; + to->GL_GetProcAddress = from->R_GetProcAddress; } /* diff --git a/engine/ref_api.h b/engine/ref_api.h index baa55d0b..3539a2a1 100644 --- a/engine/ref_api.h +++ b/engine/ref_api.h @@ -583,6 +583,8 @@ typedef struct ref_interface_s void (*R_NewMap)( void ); // clear the render entities before each frame void (*R_ClearScene)( void ); + // GL_GetProcAddress for client renderer + void* (*R_GetProcAddress)( const char *name ); // TriAPI Interface // NOTE: implementation isn't required to be compatible diff --git a/ref_gl/gl_context.c b/ref_gl/gl_context.c index e356f7fd..7f5b5714 100644 --- a/ref_gl/gl_context.c +++ b/ref_gl/gl_context.c @@ -332,6 +332,16 @@ qboolean R_SetDisplayTransform( ref_screen_rotation_t rotate, int offset_x, int return ret; } +static void* GAME_EXPORT R_GetProcAddress( const char *name ) +{ +#ifdef XASH_GL4ES + extern void *gl4es_GetProcAddress( const char *name ); + return gl4es_GetProcAddress( name ); +#else // TODO: other wrappers + return gEngFuncs.GL_GetProcAddress( name ); +#endif +} + static const char *R_GetConfigName( void ) { return "opengl"; @@ -453,6 +463,7 @@ ref_interface_t gReffuncs = Mod_GetCurrentVis, R_NewMap, R_ClearScene, + R_GetProcAddress, TriRenderMode, TriBegin, @@ -503,6 +514,8 @@ void EXPORT GetRefHumanReadableName( char *out, size_t size ) Q_strncpy( out, "GLES1(NanoGL)", size ); #elif defined XASH_WES Q_strncpy( out, "GLES2(gl-wes-v2)", size ); +#elif defined XASH_GL4ES + Q_strncpy( out, "GLES2(gl4es)", size ); #else Q_strncpy( out, "OpenGL", size ); #endif