diff --git a/src/glcontext_html5.cpp b/src/glcontext_html5.cpp
index 474c19604..f7a1cc573 100644
--- a/src/glcontext_html5.cpp
+++ b/src/glcontext_html5.cpp
@@ -16,6 +16,8 @@
// from emscripten gl.c, because we're not going to go
// through egl
extern "C" void* emscripten_GetProcAddress(const char *name_);
+extern "C" void* emscripten_webgl1_get_proc_address(const char *name_);
+extern "C" void* emscripten_webgl2_get_proc_address(const char *name_);
namespace bgfx { namespace gl
{
@@ -130,7 +132,7 @@ namespace bgfx { namespace gl
SwapChainGL* swapChain = BX_NEW(g_allocator, SwapChainGL)(context, canvas);
- import();
+ import(1);
return swapChain;
}
@@ -169,14 +171,16 @@ namespace bgfx { namespace gl
}
}
- void GlContext::import()
+ void GlContext::import(int webGLVersion)
{
BX_TRACE("Import:");
# define GL_EXTENSION(_optional, _proto, _func, _import) \
{ \
if (NULL == _func) \
{ \
- _func = (_proto)emscripten_GetProcAddress(#_import); \
+ _func = (_proto)emscripten_webgl1_get_proc_address(#_import); \
+ if (!_func && webGLVersion >= 2) \
+ _func = (_proto)emscripten_webgl2_get_proc_address(#_import); \
BX_TRACE("\t%p " #_func " (" #_import ")", _func); \
BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create WebGL/OpenGLES context. GetProcAddress(\"%s\")", #_import); \
} \
diff --git a/src/glcontext_html5.h b/src/glcontext_html5.h
index 9475970a5..7907cede9 100644
--- a/src/glcontext_html5.h
+++ b/src/glcontext_html5.h
@@ -30,7 +30,7 @@ namespace bgfx { namespace gl
void swap(SwapChainGL* _swapChain = NULL);
void makeCurrent(SwapChainGL* _swapChain = NULL);
- void import();
+ void import(int webGLVersion);
bool isValid() const
{