blob: 9da2288d8333f3335c719b929f2ef0c1f073931a [file]
#include <windows.h>
#include <stdio.h>
#include "chew.h"
#define TABLEONLY
#undef CHEWTYPEDEF
#undef CHEWTYPEDEF2
#define CHEWTYPEDEF( ret, name, ... ) name##_t name;
#define CHEWTYPEDEF2( ret, name, usename, ... ) usename##_t usename;
#include "chew.h"
#define TABLEONLY
#undef CHEWTYPEDEF
#undef CHEWTYPEDEF2
#define CHEWTYPEDEF( ret, name, ... ) #name,
#define CHEWTYPEDEF2( ret, name, usename, ... ) #name,
const char * symnames[] = {
#include "chew.h"
};
#define TABLEONLY
#undef CHEWTYPEDEF
#undef CHEWTYPEDEF2
#define CHEWTYPEDEF( ret, name, ... ) (void**)&name,
#define CHEWTYPEDEF2( ret, name, usename, ... ) (void**)&usename,
void ** syms[] = {
#include "chew.h"
};
//From https://www.khronos.org/opengl/wiki/Load_OpenGL_Functions
void * chewGetProcAddress(const char *name)
{
void *p = (void *)wglGetProcAddress(name);
if(p == 0 ||
(p == (void*)0x1) || (p == (void*)0x2) || (p == (void*)0x3) ||
(p == (void*)-1) )
{
static HMODULE module;
if( !module ) module = LoadLibraryA("opengl32.dll");
p = (void *)GetProcAddress(module, name);
}
return p;
}
void chewInit() {
int i;
for( i = 0; i < sizeof(symnames) / sizeof(symnames[0]); i++ )
{
void * v = *syms[i] = (void*)chewGetProcAddress( symnames[i] );
if( !v ) fprintf( stderr, "Warning: Can't find \"gl%s\"\n", symnames[i] );
}
}