-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgl_functions.h
More file actions
70 lines (64 loc) · 4.22 KB
/
gl_functions.h
File metadata and controls
70 lines (64 loc) · 4.22 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
66
67
68
69
#ifndef gl_functions_h
#define gl_functions_h
#include <GL/gl.h>
#include <GL/glx.h>
#include <GL/glext.h>
#define TOUBYTE(x) (const GLubyte*)(x)
static PFNGLUSEPROGRAMPROC glUseProgram;
static PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
static PFNGLBINDBUFFERPROC glBindBuffer;
static PFNGLCREATESHADERPROC glCreateShader;
static PFNGLSHADERSOURCEPROC glShaderSource;
static PFNGLCOMPILESHADERPROC glCompileShader;
static PFNGLGETSHADERIVPROC glGetShaderiv;
static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
static PFNGLATTACHSHADERPROC glAttachShader;
static PFNGLDELETESHADERPROC glDeleteShader;
static PFNGLLINKPROGRAMPROC glLinkProgram;
static PFNGLGETPROGRAMIVPROC glGetProgramiv;
static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
static PFNGLVALIDATEPROGRAMPROC glValidateProgram;
static PFNGLCREATEPROGRAMPROC glCreateProgram;
static PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
static PFNGLDELETEBUFFERSPROC glDeleteBuffers;
static PFNGLDELETEPROGRAMPROC glDeleteProgram;
static PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
static PFNGLGENBUFFERSPROC glGenBuffers;
static PFNGLBUFFERDATAPROC glBufferData;
static PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
static PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
static PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
static PFNGLUNIFORM3FVPROC glUniform3fv;
static PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
static void load_gl_functions()
{
glUseProgram = ( PFNGLUSEPROGRAMPROC )( glXGetProcAddress( TOUBYTE( "glUseProgram" ) ) );
glBindVertexArray = ( PFNGLBINDVERTEXARRAYPROC )( glXGetProcAddress( TOUBYTE( "glBindVertexArray" ) ) );
glBindBuffer = ( PFNGLBINDBUFFERPROC )( glXGetProcAddress( TOUBYTE( "glBindBuffer" ) ) );
glCreateShader = ( PFNGLCREATESHADERPROC )( glXGetProcAddress( TOUBYTE( "glCreateShader" ) ) );
glShaderSource = ( PFNGLSHADERSOURCEPROC )( glXGetProcAddress( TOUBYTE( "glShaderSource" ) ) );
glCompileShader = ( PFNGLCOMPILESHADERPROC )( glXGetProcAddress( TOUBYTE( "glCompileShader" ) ) );
glGetShaderiv = ( PFNGLGETSHADERIVPROC )( glXGetProcAddress( TOUBYTE( "glGetShaderiv" ) ) );
glGetShaderInfoLog = ( PFNGLGETSHADERINFOLOGPROC )( glXGetProcAddress( TOUBYTE( "glGetShaderInfoLog" ) ) );
glAttachShader = ( PFNGLATTACHSHADERPROC )( glXGetProcAddress( TOUBYTE( "glAttachShader" ) ) );
glDeleteShader = ( PFNGLDELETESHADERPROC )( glXGetProcAddress( TOUBYTE( "glDeleteShader" ) ) );
glLinkProgram = ( PFNGLLINKPROGRAMPROC )( glXGetProcAddress( TOUBYTE( "glLinkProgram" ) ) );
glGetProgramiv = ( PFNGLGETPROGRAMIVPROC )( glXGetProcAddress( TOUBYTE( "glGetProgramiv" ) ) );
glGetProgramInfoLog = ( PFNGLGETPROGRAMINFOLOGPROC )( glXGetProcAddress( TOUBYTE( "glGetProgramInfoLog" ) ) );
glValidateProgram = ( PFNGLVALIDATEPROGRAMPROC )( glXGetProcAddress( TOUBYTE( "glValidateProgram" ) ) );
glCreateProgram = ( PFNGLCREATEPROGRAMPROC )( glXGetProcAddress( TOUBYTE( "glCreateProgram" ) ) );
glDeleteVertexArrays = ( PFNGLDELETEVERTEXARRAYSPROC )( glXGetProcAddress( TOUBYTE( "glDeleteVertexArrays" ) ) );
glDeleteBuffers = ( PFNGLDELETEBUFFERSPROC )( glXGetProcAddress( TOUBYTE( "glDeleteBuffers" ) ) );
glDeleteProgram = ( PFNGLDELETEPROGRAMPROC )( glXGetProcAddress( TOUBYTE( "glDeleteProgram" ) ) );
glGenVertexArrays = ( PFNGLGENVERTEXARRAYSPROC )( glXGetProcAddress( TOUBYTE( "glGenVertexArrays" ) ) );
glGenBuffers = ( PFNGLGENBUFFERSPROC )( glXGetProcAddress( TOUBYTE( "glGenBuffers" ) ) );
glBufferData = ( PFNGLBUFFERDATAPROC )( glXGetProcAddress( TOUBYTE( "glBufferData" ) ) );
glEnableVertexAttribArray = ( PFNGLENABLEVERTEXATTRIBARRAYPROC )( glXGetProcAddress( TOUBYTE( "glEnableVertexAttribArray" ) ) );
glVertexAttribPointer = ( PFNGLVERTEXATTRIBPOINTERPROC )( glXGetProcAddress( TOUBYTE( "glVertexAttribPointer" ) ) );
glVertexAttribDivisor = ( PFNGLVERTEXATTRIBDIVISORPROC )( glXGetProcAddress( TOUBYTE( "glVertexAttribDivisor" ) ) );
glUniformMatrix4fv = ( PFNGLUNIFORMMATRIX4FVPROC )( glXGetProcAddress( TOUBYTE( "glUniformMatrix4fv" ) ) );
glUniform3fv = ( PFNGLUNIFORM3FVPROC )( glXGetProcAddress( TOUBYTE( "glUniform3fv" ) ) );
glDrawElementsInstanced = ( PFNGLDRAWELEMENTSINSTANCEDPROC )( glXGetProcAddress( TOUBYTE( "glDrawElementsInstanced" ) ) );
}
#endif