Credit tmk
[dormin.git] / pgl.h
blob9da29e221b294a0223d7bd8504f407b943f53957
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 void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
26 typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
27 typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
28 static PFNGLBINDBUFFERPROC glBindBuffer;
29 static PFNGLGENBUFFERSPROC glGenBuffers;
30 static PFNGLBUFFERDATAPROC glBufferData;
31 static PFNGLMAPBUFFERPROC glMapBuffer;
32 static PFNGLUNMAPBUFFERPROC glUnmapBuffer;
33 static PFNGLBUFFERSUBDATAPROC glBufferSubData;
34 #endif
36 #ifndef GL_ARB_vertex_program
37 #define GL_VERTEX_PROGRAM_ARB 0x8620
38 #define GL_PROGRAM_STRING_ARB 0x8628
39 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
40 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
41 #define GL_PROGRAM_ERROR_STRING_ARB 0x8874
42 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
43 #define GL_PROGRAM_FORMAT_ARB 0x8876
44 #define GL_PROGRAM_ATTRIBS_ARB 0x88AC
45 #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
46 typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
47 typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
48 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
49 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
50 typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
51 typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
52 static PFNGLBINDPROGRAMARBPROC glBindProgramARB;
53 static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
54 static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
55 static PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
56 static PFNGLENABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
57 static PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
58 #endif
60 #define GETPA(name) for (;;) { \
61 *(PROC *) &gl##name = wglGetProcAddress ("gl" # name); \
62 if (!gl##name) { \
63 fprintf (stderr, "could not get address of gl"#name"\n"); \
64 exit (EXIT_FAILURE); \
65 } \
66 break; \