Hardware skinning
[dormin.git] / pgl.h
blob2f32bd4680f77a888c4e6d87a432e97b765ec627
1 #define GL_GLEXT_PROTOTYPES
2 #ifdef _WIN32
3 #define WIN32_LEAN_AND_MEAN
4 #include <windows.h>
5 #endif
6 #ifdef __APPLE__
7 #include <OpenGL/gl.h>
8 #else
9 #include <GL/gl.h>
10 #endif
12 #ifndef GL_VERSION_1_5
13 #define GL_ARRAY_BUFFER 0x8892
14 #define GL_DYNAMIC_DRAW 0x88E8
15 #define GL_STATIC_DRAW 0x88E4
16 #define GL_WRITE_ONLY 0x88B9
17 #ifndef APIENTRYP
18 #define APIENTRYP APIENTRY *
19 #endif
20 typedef ptrdiff_t GLintptr;
21 typedef ptrdiff_t GLsizeiptr;
22 typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
23 typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
24 typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
25 typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
26 typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
27 static PFNGLBINDBUFFERPROC glBindBuffer;
28 static PFNGLGENBUFFERSPROC glGenBuffers;
29 static PFNGLBUFFERDATAPROC glBufferData;
30 static PFNGLMAPBUFFERPROC glMapBuffer;
31 static PFNGLUNMAPBUFFERPROC glUnmapBuffer;
32 #endif
34 #ifndef GL_ARB_vertex_program
35 #define GL_VERTEX_PROGRAM_ARB 0x8620
36 #define GL_PROGRAM_STRING_ARB 0x8628
37 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
38 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
39 #define GL_PROGRAM_ERROR_STRING_ARB 0x8874
40 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
41 #define GL_PROGRAM_FORMAT_ARB 0x8876
42 #define GL_PROGRAM_ATTRIBS_ARB 0x88AC
43 #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
44 typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
45 typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
46 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
47 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
48 typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
49 typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
50 static PFNGLBINDPROGRAMARBPROC glBindProgramARB;
51 static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
52 static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
53 static PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
54 static PFNGLENABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
55 static PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
56 #endif
58 #define GETPA(name) for (;;) { \
59 *(PROC *) &gl##name = wglGetProcAddress ("gl" # name); \
60 if (!gl##name) { \
61 fprintf (stderr, "could not get address of gl"#name"\n"); \
62 exit (EXIT_FAILURE); \
63 } \
64 break; \