-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglmdgl.c
More file actions
66 lines (50 loc) · 1.66 KB
/
glmdgl.c
File metadata and controls
66 lines (50 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <dlfcn.h> //dlopen, dlsym
#include <stdio.h>
#include <GL/gl.h>
#include <GL/glx.h>
#include "glmdgl.h"
#define GLMD_GL_REG_FUNC(FUNC) #FUNC,
const char* GL_FUNC_LIST[] = {
GLMD_GL_REG_FUNC(glBindBuffer)
GLMD_GL_REG_FUNC(glGenBuffers)
GLMD_GL_REG_FUNC(glBufferData)
GLMD_GL_REG_FUNC(glDrawArrays)
GLMD_GL_REG_FUNC(glEnableVertexAttribArray)
GLMD_GL_REG_FUNC(glVertexAttribPointer)
GLMD_GL_REG_FUNC(glCreateShader)
GLMD_GL_REG_FUNC(glLinkProgram)
GLMD_GL_REG_FUNC(glUseProgram)
GLMD_GL_REG_FUNC(glAttachShader)
};
#define NUM_GL_FUNCS (sizeof(GL_FUNC_LIST) / sizeof(char*))
void
glmdInitGL(GL* gl)
{
if(gl->initialized)
{
return;
}
//fprintf(stderr,"Registering %lu OpenGL Functions", NUM_GL_FUNCS);
void* libgl = dlopen("libGL.so",RTLD_LAZY);
#define REGISTER_GL_FUNC( FUNC ) (gl->FUNC = dlsym(libgl, #FUNC ))
REGISTER_GL_FUNC(glBindBuffer);
REGISTER_GL_FUNC(glGenBuffers);
REGISTER_GL_FUNC(glBufferData);
REGISTER_GL_FUNC(glDrawArrays);
REGISTER_GL_FUNC(glEnableVertexAttribArray);
REGISTER_GL_FUNC(glVertexAttribPointer);
REGISTER_GL_FUNC(glVertexAttribPointer);
REGISTER_GL_FUNC(glCreateShader);
REGISTER_GL_FUNC(glLinkProgram);
REGISTER_GL_FUNC(glUseProgram);
REGISTER_GL_FUNC(glAttachShader);
REGISTER_GL_FUNC(glShaderSource);
REGISTER_GL_FUNC(glCreateProgram);
REGISTER_GL_FUNC(glDeleteShader);
REGISTER_GL_FUNC(glCompileShader);
REGISTER_GL_FUNC(glGetShaderiv);
REGISTER_GL_FUNC(glGetProgramiv);
REGISTER_GL_FUNC(glGetStringi);
GLint numExtensions = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions);
}