As you can see, all OpenGL calls in the earlier mentioned code are done via the LGL3
prefix. This is a structure called sLGLAPI
declared in LGLAPI.h
containing pointers to actual OpenGL API functions:
struct sLGLAPI { sLGLAPI() { memset( this, 0, sizeof( *this ) ); }; PFNGLACTIVETEXTUREPROC glActiveTexture; PFNGLATTACHSHADERPROC glAttachShader; PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation; PFNGLBINDBUFFERPROC glBindBuffer; PFNGLBINDBUFFERBASEPROC glBindBufferBase; PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation; ... }
The fields of the sLGLAPI
structure are set in the LGL::GetAPI()
function. There are two distinct implementations of this function, one is for Windows in LGL_Windows.h
, and the other is in LGL_Android.h
for everything else. The difference is in the dynamic linking on Windows, as shown in the following code:
void LGL::GetAPI( sLGLAPI* API ) { API->glBlendFunc...