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 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
;
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
;
58 #define GETPA(name) for (;;) { \
59 *(PROC *) &gl##name = wglGetProcAddress ("gl" # name); \
61 fprintf (stderr, "could not get address of gl"#name"\n"); \
62 exit (EXIT_FAILURE); \