1 #define GL_GLEXT_PROTOTYPES
3 #define WIN32_LEAN_AND_MEAN
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
18 #define APIENTRYP APIENTRY *
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
;
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
;
60 #define GETPA(name) for (;;) { \
61 *(PROC *) &gl##name = wglGetProcAddress ("gl" # name); \
63 fprintf (stderr, "could not get address of gl"#name"\n"); \
64 exit (EXIT_FAILURE); \