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
);