st/xorg: Include cursorstr.h
[mesa.git] / progs / slang / framework.c
1 #include "framework.h"
2
3 /*
4 * GL_ARB_multitexture
5 */
6 #ifndef GL_ARB_multitexture
7 PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
8 PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
9 #endif
10
11 /*
12 * GL_ARB_shader_objects
13 */
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;
27
28 /*
29 * GL_ARB_vertex_shader
30 */
31 PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
32 PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
33 PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
34 PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
35 PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
36 PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
37
38 /*
39 * GL_EXT_fog_coord
40 */
41 PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT;
42 PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT;
43
44 /*
45 * GL_EXT_secondary_color
46 */
47 PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT;
48 PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT;
49
50 static void Display (void)
51 {
52 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
53 RenderScene ();
54 glutSwapBuffers ();
55 }
56
57 static void Idle (void)
58 {
59 glutPostRedisplay ();
60 }
61
62 void InitFramework (int *argc, char *argv[])
63 {
64 glutInit (argc, argv);
65 glutInitWindowPosition (0, 0);
66 glutInitWindowSize (200, 200);
67 glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
68 glutCreateWindow (argv[0]);
69
70 #ifndef GL_ARB_multitexture
71 GETPROCADDR(glClientActiveTextureARB, PFNGLCLIENTACTIVETEXTUREARBPROC);
72 GETPROCADDR(glMultiTexCoord4fvARB, PFNGLMULTITEXCOORD4FVARBPROC);
73 #endif
74
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);
88
89 GETPROCADDR(glVertexAttrib4fvARB, PFNGLVERTEXATTRIB4FVARBPROC);
90 GETPROCADDR(glVertexAttribPointerARB, PFNGLVERTEXATTRIBPOINTERARBPROC);
91 GETPROCADDR(glEnableVertexAttribArrayARB, PFNGLENABLEVERTEXATTRIBARRAYARBPROC);
92 GETPROCADDR(glDisableVertexAttribArrayARB, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC);
93 GETPROCADDR(glBindAttribLocationARB, PFNGLBINDATTRIBLOCATIONARBPROC);
94 GETPROCADDR(glGetAttribLocationARB, PFNGLGETATTRIBLOCATIONARBPROC);
95
96 GETPROCADDR(glFogCoordfvEXT, PFNGLFOGCOORDFVEXTPROC);
97 GETPROCADDR(glFogCoordPointerEXT, PFNGLFOGCOORDPOINTEREXTPROC);
98
99 GETPROCADDR(glSecondaryColor3fvEXT, PFNGLSECONDARYCOLOR3FVEXTPROC);
100 GETPROCADDR(glSecondaryColorPointerEXT, PFNGLSECONDARYCOLORPOINTEREXTPROC);
101
102 printf ("VENDOR: %s\n", glGetString (GL_VENDOR));
103 printf ("RENDERER: %s\n", glGetString (GL_RENDERER));
104
105 InitScene ();
106
107 glutDisplayFunc (Display);
108 glutIdleFunc (Idle);
109 glutMainLoop ();
110 }
111
112 GLboolean CheckObjectStatus (GLhandleARB handle)
113 {
114 GLint type, status, length;
115 GLcharARB *infolog;
116
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);
122 else {
123 assert (0);
124 return GL_FALSE;
125 }
126
127 if (status)
128 return GL_TRUE;
129
130 printf ("\n%s FAILED. INFO LOG FOLLOWS:\n",
131 type == GL_SHADER_OBJECT_ARB ? "SHADER COMPILE" : "PROGRAM LINK");
132
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);
138 free (infolog);
139 }
140
141 printf ("\n");
142
143 return GL_FALSE;
144 }
145