6
#ifndef GL_ARB_multitexture
7
PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
8
PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
12
* GL_ARB_shader_objects
14
PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
15
PFNGLGETHANDLEARBPROC glGetHandleARB;
16
PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
17
PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
18
PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
19
PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
20
PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
21
PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
22
PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
23
PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
24
PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
25
PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
26
PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
29
* GL_ARB_vertex_shader
31
PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
32
PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
33
PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
34
PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
35
PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
36
PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
41
PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT;
42
PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT;
45
* GL_EXT_secondary_color
47
PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT;
48
PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT;
50
static void Display (void)
52
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
57
static void Idle (void)
62
void InitFramework (int *argc, char *argv[])
64
glutInit (argc, argv);
65
glutInitWindowPosition (0, 0);
66
glutInitWindowSize (200, 200);
67
glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
68
glutCreateWindow (argv[0]);
70
#ifndef GL_ARB_multitexture
71
GETPROCADDR(glClientActiveTextureARB, PFNGLCLIENTACTIVETEXTUREARBPROC);
72
GETPROCADDR(glMultiTexCoord4fvARB, PFNGLMULTITEXCOORD4FVARBPROC);
75
GETPROCADDR(glDeleteObjectARB, PFNGLDELETEOBJECTARBPROC);
76
GETPROCADDR(glGetHandleARB, PFNGLGETHANDLEARBPROC);
77
GETPROCADDR(glDetachObjectARB, PFNGLDETACHOBJECTARBPROC);
78
GETPROCADDR(glCreateShaderObjectARB, PFNGLCREATESHADEROBJECTARBPROC);
79
GETPROCADDR(glShaderSourceARB, PFNGLSHADERSOURCEARBPROC);
80
GETPROCADDR(glCompileShaderARB, PFNGLCOMPILESHADERARBPROC);
81
GETPROCADDR(glCreateProgramObjectARB, PFNGLCREATEPROGRAMOBJECTARBPROC);
82
GETPROCADDR(glAttachObjectARB, PFNGLATTACHOBJECTARBPROC);
83
GETPROCADDR(glLinkProgramARB, PFNGLLINKPROGRAMARBPROC);
84
GETPROCADDR(glUseProgramObjectARB, PFNGLUSEPROGRAMOBJECTARBPROC);
85
GETPROCADDR(glGetObjectParameterivARB, PFNGLGETOBJECTPARAMETERIVARBPROC);
86
GETPROCADDR(glGetInfoLogARB, PFNGLGETINFOLOGARBPROC);
87
GETPROCADDR(glGetUniformLocationARB, PFNGLGETUNIFORMLOCATIONARBPROC);
89
GETPROCADDR(glVertexAttrib4fvARB, PFNGLVERTEXATTRIB4FVARBPROC);
90
GETPROCADDR(glVertexAttribPointerARB, PFNGLVERTEXATTRIBPOINTERARBPROC);
91
GETPROCADDR(glEnableVertexAttribArrayARB, PFNGLENABLEVERTEXATTRIBARRAYARBPROC);
92
GETPROCADDR(glDisableVertexAttribArrayARB, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC);
93
GETPROCADDR(glBindAttribLocationARB, PFNGLBINDATTRIBLOCATIONARBPROC);
94
GETPROCADDR(glGetAttribLocationARB, PFNGLGETATTRIBLOCATIONARBPROC);
96
GETPROCADDR(glFogCoordfvEXT, PFNGLFOGCOORDFVEXTPROC);
97
GETPROCADDR(glFogCoordPointerEXT, PFNGLFOGCOORDPOINTEREXTPROC);
99
GETPROCADDR(glSecondaryColor3fvEXT, PFNGLSECONDARYCOLOR3FVEXTPROC);
100
GETPROCADDR(glSecondaryColorPointerEXT, PFNGLSECONDARYCOLORPOINTEREXTPROC);
102
printf ("VENDOR: %s\n", glGetString (GL_VENDOR));
103
printf ("RENDERER: %s\n", glGetString (GL_RENDERER));
107
glutDisplayFunc (Display);
112
GLboolean CheckObjectStatus (GLhandleARB handle)
114
GLint type, status, length;
117
glGetObjectParameterivARB (handle, GL_OBJECT_TYPE_ARB, &type);
118
if (type == GL_SHADER_OBJECT_ARB)
119
glGetObjectParameterivARB (handle, GL_OBJECT_COMPILE_STATUS_ARB, &status);
120
else if (type == GL_PROGRAM_OBJECT_ARB)
121
glGetObjectParameterivARB (handle, GL_OBJECT_LINK_STATUS_ARB, &status);
130
printf ("\n%s FAILED. INFO LOG FOLLOWS:\n",
131
type == GL_SHADER_OBJECT_ARB ? "SHADER COMPILE" : "PROGRAM LINK");
133
glGetObjectParameterivARB (handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length);
134
infolog = (GLcharARB *) (malloc (length));
135
if (infolog != NULL) {
136
glGetInfoLogARB (handle, length, NULL, infolog);
137
printf ("%s", infolog);