+
+The OpenGL Extension Wrangler Library
+
+
+
+
+Initializing GLEW
+
+First you need to create a valid OpenGL rendering context and call
+glewInit() to initialize the extension entry points. If
+glewInit() returns GLEW_OK, the initialization
+succeeded and you can use the available extensions as well as core
+OpenGL functionality. For example:
+
+
+
+#include <GL/glew.h>
+#include <GL/glut.h>
+...
+glutInit(&argc, argv);
+glutCreateWindow("GLEW Test");
+GLenum err = glewInit();
+if (GLEW_OK != err)
+{
+ /* Problem: glewInit failed, something is seriously wrong. */
+ fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
+ ...
+}
+fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
+
+
+Checking for Extensions
+
+
+Starting from GLEW 1.1.0, you can find out if a particular extension
+is available on your platform by querying globally defined variables
+of the form GLEW_{extension_name}:
+
+
+
+if (GLEW_ARB_vertex_program)
+{
+ /* It is safe to use the ARB_vertex_program extension here. */
+ glGenProgramsARB(...);
+}
+
+
+
+In GLEW 1.0.x, a global structure was used for this task. To ensure
+binary compatibility between releases, the struct was replaced with a
+set of variables.
+
+
+
+You can also check for core OpenGL functionality. For example, to
+see if OpenGL 1.3 is supported, do the following:
+
+
+
+if (GLEW_VERSION_1_3)
+{
+ /* Yay! OpenGL 1.3 is supported! */
+}
+
+
+
+In general, you can check if GLEW_{extension_name} or
+GLEW_VERSION_{version} is true or false.
+
+
+
+It is also possible to perform extension checks from string
+input. Starting from the 1.3.0 release, use glewIsSupported
+to check if the required core or extension functionality is
+available:
+
+
+
+if (glewIsSupported("GL_VERSION_1_4 GL_ARB_point_sprite"))
+{
+ /* Great, we have OpenGL 1.4 + point sprites. */
+}
+
+
+
+For extensions only, glewGetExtension provides a slower alternative
+(GLEW 1.0.x-1.2.x). Note that in the 1.3.0 release
+glewGetExtension was replaced with
+glewIsSupported.
+
+
+
+if (glewGetExtension("GL_ARB_fragment_program"))
+{
+ /* Looks like ARB_fragment_program is supported. */
+}
+
+
+Experimental Drivers
+
+
+GLEW obtains information on the supported extensions from the graphics
+driver. Experimental or pre-release drivers, however, might not
+report every available extension through the standard mechanism, in
+which case GLEW will report it unsupported. To circumvent this
+situation, the glewExperimental global switch can be turned
+on by setting it to GL_TRUE before calling
+glewInit(), which ensures that all extensions with valid
+entry points will be exposed.
+
+
+Platform Specific Extensions
+
+
+Platform specific extensions are separated into two header files:
+wglew.h and glxew.h, which define the available
+WGL and GLX extensions. To determine if a certain
+extension is supported, query WGLEW_{extension name} or
+GLXEW_{extension_name}. For example:
+
+
+
+#include <GL/wglew.h>
+
+if (WGLEW_ARB_pbuffer)
+{
+ /* OK, we can use pbuffers. */
+}
+else
+{
+ /* Sorry, pbuffers will not work on this platform. */
+}
+
+
+
+Alternatively, use wglewIsSupported or
+glxewIsSupported to check for extensions from a string:
+
+
+
+if (wglewIsSupported("WGL_ARB_pbuffer"))
+{
+ /* OK, we can use pbuffers. */
+}
+
+
+Utilities
+
+
+GLEW provides two command-line utilities: one for creating a list of
+available extensions and visuals; and another for verifying extension
+entry points.
+
+
+visualinfo: extensions and visuals
+
+
+visualinfo is an extended version of glxinfo. The
+Windows version creates a file called visualinfo.txt, which
+contains a list of available OpenGL, WGL, and GLU extensions as well
+as a table of visuals aka. pixel formats. Pbuffer and MRT capable
+visuals are also included. For additional usage information, type
+visualinfo -h.
+
+
+glewinfo: extension verification utility
+
+
+glewinfo allows you to verify the entry points for the
+extensions supported on your platform. The Windows version
+reports the results to a text file called glewinfo.txt. The
+Unix version prints the results to stdout.
+
+
+Windows usage:
+ glewinfo [-pf <id>]
+
+where <id> is the pixel format id for which the
+capabilities are displayed.
+
+Unix usage:
+glewinfo [-display <dpy>] [-visual <id>]
+
+where <dpy> is the X11 display and <id> is
+the visual id for which the capabilities are displayed.
+
+
+ |