123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #include "framework.h"
-
- /*
- * GL_ARB_multitexture
- */
- #ifndef GL_ARB_multitexture
- PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
- PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
- #endif
-
- /*
- * GL_ARB_shader_objects
- */
- PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
- PFNGLGETHANDLEARBPROC glGetHandleARB;
- PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
- PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
- PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
- PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
- PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
- PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
- PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
- PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
- PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
- PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
- PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
-
- /*
- * GL_ARB_vertex_shader
- */
- PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
- PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
- PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
- PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
- PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
- PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
-
- /*
- * GL_EXT_fog_coord
- */
- PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT;
- PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT;
-
- /*
- * GL_EXT_secondary_color
- */
- PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT;
- PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT;
-
- static void Display (void)
- {
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- RenderScene ();
- glutSwapBuffers ();
- }
-
- static void Idle (void)
- {
- glutPostRedisplay ();
- }
-
- void InitFramework (int *argc, char *argv[])
- {
- glutInit (argc, argv);
- glutInitWindowPosition (0, 0);
- glutInitWindowSize (200, 200);
- glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow (argv[0]);
-
- #ifndef GL_ARB_multitexture
- GETPROCADDR(glClientActiveTextureARB, PFNGLCLIENTACTIVETEXTUREARBPROC);
- GETPROCADDR(glMultiTexCoord4fvARB, PFNGLMULTITEXCOORD4FVARBPROC);
- #endif
-
- GETPROCADDR(glDeleteObjectARB, PFNGLDELETEOBJECTARBPROC);
- GETPROCADDR(glGetHandleARB, PFNGLGETHANDLEARBPROC);
- GETPROCADDR(glDetachObjectARB, PFNGLDETACHOBJECTARBPROC);
- GETPROCADDR(glCreateShaderObjectARB, PFNGLCREATESHADEROBJECTARBPROC);
- GETPROCADDR(glShaderSourceARB, PFNGLSHADERSOURCEARBPROC);
- GETPROCADDR(glCompileShaderARB, PFNGLCOMPILESHADERARBPROC);
- GETPROCADDR(glCreateProgramObjectARB, PFNGLCREATEPROGRAMOBJECTARBPROC);
- GETPROCADDR(glAttachObjectARB, PFNGLATTACHOBJECTARBPROC);
- GETPROCADDR(glLinkProgramARB, PFNGLLINKPROGRAMARBPROC);
- GETPROCADDR(glUseProgramObjectARB, PFNGLUSEPROGRAMOBJECTARBPROC);
- GETPROCADDR(glGetObjectParameterivARB, PFNGLGETOBJECTPARAMETERIVARBPROC);
- GETPROCADDR(glGetInfoLogARB, PFNGLGETINFOLOGARBPROC);
- GETPROCADDR(glGetUniformLocationARB, PFNGLGETUNIFORMLOCATIONARBPROC);
-
- GETPROCADDR(glVertexAttrib4fvARB, PFNGLVERTEXATTRIB4FVARBPROC);
- GETPROCADDR(glVertexAttribPointerARB, PFNGLVERTEXATTRIBPOINTERARBPROC);
- GETPROCADDR(glEnableVertexAttribArrayARB, PFNGLENABLEVERTEXATTRIBARRAYARBPROC);
- GETPROCADDR(glDisableVertexAttribArrayARB, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC);
- GETPROCADDR(glBindAttribLocationARB, PFNGLBINDATTRIBLOCATIONARBPROC);
- GETPROCADDR(glGetAttribLocationARB, PFNGLGETATTRIBLOCATIONARBPROC);
-
- GETPROCADDR(glFogCoordfvEXT, PFNGLFOGCOORDFVEXTPROC);
- GETPROCADDR(glFogCoordPointerEXT, PFNGLFOGCOORDPOINTEREXTPROC);
-
- GETPROCADDR(glSecondaryColor3fvEXT, PFNGLSECONDARYCOLOR3FVEXTPROC);
- GETPROCADDR(glSecondaryColorPointerEXT, PFNGLSECONDARYCOLORPOINTEREXTPROC);
-
- printf ("VENDOR: %s\n", glGetString (GL_VENDOR));
- printf ("RENDERER: %s\n", glGetString (GL_RENDERER));
-
- InitScene ();
-
- glutDisplayFunc (Display);
- glutIdleFunc (Idle);
- glutMainLoop ();
- }
-
- GLboolean CheckObjectStatus (GLhandleARB handle)
- {
- GLint type, status, length;
- GLcharARB *infolog;
-
- glGetObjectParameterivARB (handle, GL_OBJECT_TYPE_ARB, &type);
- if (type == GL_SHADER_OBJECT_ARB)
- glGetObjectParameterivARB (handle, GL_OBJECT_COMPILE_STATUS_ARB, &status);
- else if (type == GL_PROGRAM_OBJECT_ARB)
- glGetObjectParameterivARB (handle, GL_OBJECT_LINK_STATUS_ARB, &status);
- else {
- assert (0);
- return GL_FALSE;
- }
-
- if (status)
- return GL_TRUE;
-
- printf ("\n%s FAILED. INFO LOG FOLLOWS:\n",
- type == GL_SHADER_OBJECT_ARB ? "SHADER COMPILE" : "PROGRAM LINK");
-
- glGetObjectParameterivARB (handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length);
- infolog = (GLcharARB *) (malloc (length));
- if (infolog != NULL) {
- glGetInfoLogARB (handle, length, NULL, infolog);
- printf ("%s", infolog);
- free (infolog);
- }
-
- printf ("\n");
-
- return GL_FALSE;
- }
|