+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Automatic Code Generation+ ++Starting from release 1.1.0, the source code and parts of the +documentation are automatically generated from the extension +specifications in a two-step process. In the first step, +specification files from the OpenGL registry are downloaded and +parsed. Skeleton descriptors are created for each extension. These +descriptors contain all necessary information for creating the source +code and documentation in a simple and compact format, including the +name of the extension, url link to the specification, tokens, function +declarations, typedefs and struct definitions. In the second step, +the header files as well as the library and glewinfo source are +generated from the descriptor files. The code generation scripts are +located in the auto subdirectory. + + ++The code generation scripts require GNU make, wget, and perl. On +Windows, the simplest way to get access to these tools is to install +Cygwin, but make sure that the +root directory is mounted in binary mode. The makefile in the +auto directory provides the following build targets: + + +
Adding a New Extension+ ++To add a new extension, create a descriptor file for the extension in +auto/core and rerun the code generation scripts by typing +make clean; make in the auto directory. + + ++The format of the descriptor file is given below. Items in +brackets are optional. + + +
+<Extension Name> +Take a look at one of the files in auto/core for an +example. Note that typedefs and function signatures should not be +terminated with a semicolon. + + +Custom Code Generation++Starting from GLEW 1.3.0, it is possible to control which extensions +to include in the libarary by specifying a list in +auto/custom.txt. This is useful when you do not need all the +extensions and would like to reduce the size of the source files. +Type make clean; make custom in the auto directory +to rerun the scripts with the custom list of extensions. + + ++For example, the following is the list of extensions needed to get GLEW and the +utilities to compile. + + +
+WGL_ARB_extensions_string Multiple Rendering Contexts (GLEW MX)+ +Starting with release 1.2.0, thread-safe support for multiple +rendering contexts, possibly with different capabilities, is +available. Since this is not required by most users, it is not added +to the binary releases to maintain compatibility between different +versions. To include multi-context support, you have to do the +following: +
Note that according to the MSDN +WGL documentation, you have to initialize the entry points for +every rendering context that use pixel formats with different +capabilities For example, the pixel formats provided by the generic +software OpenGL implementation by Microsoft vs. the hardware +accelerated pixel formats have different capabilities. GLEW by +default ignores this requirement, and does not define per-context +entry points (you can however do this using the steps described +above). Assuming a global namespace for the entry points works in +most situations, because typically all hardware accelerated pixel +formats provide the same entry points and capabilities. This means +that unless you use the multi-context version of GLEW, you need to +call glewInit() only once in your program, or more precisely, +once per process. + +Separate Namespace+ ++To avoid name clashes when linking with libraries that include the +same symbols, extension entry points are declared in a separate +namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL +function names to their GLEW equivalents. For instance, +glFancyFunction is simply an alias to +glewFancyFunction. The separate namespace does not effect +token and function pointer definitions. + + +Known Issues+ ++GLEW requires GLX 1.2 for compatibility with GLUT. + + + + |
+
|
+
+
+
+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> 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) +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) +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")) +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")) 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> +Alternatively, use wglewIsSupported or +glxewIsSupported to check for extensions from a string: + + +
+if (wglewIsSupported("WGL_ARB_pbuffer")) 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. + + + |
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Credits+ ++GLEW was developed by Milan +Ikits and Marcelo +Magallon. They also perform occasional maintainance to make sure +that GLEW stays in mint condition. Aaron Lefohn, Joe Kniss, and Chris +Wyman were the first users and also assisted with the design and +debugging process. The acronym GLEW originates from Aaron Lefohn. +Pasi Kärkkäinen identified and fixed several problems with +GLX and SDL. Nate Robins created the wglinfo utility, to +which modifications were made by Michael Wimmer. + + +Copyright+ ++GLEW is originally derived from the EXTGL project by Lev Povalahev. +The source code is licensed under the Modified BSD +License, the Mesa 3-D License (MIT +License), and the Khronos License (MIT +License). The automatic code generation scripts are released under +the GNU GPL. + + + |
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Supported GLX Extensions+ +
|
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + ++The OpenGL Extension Wrangler Library (GLEW) is a cross-platform +open-source C/C++ extension loading library. GLEW provides efficient +run-time mechanisms for determining which OpenGL extensions are +supported on the target platform. OpenGL core and extension +functionality is exposed in a single header file. GLEW has been +tested on a variety of operating systems, including Windows, Linux, +Mac OS X, FreeBSD, Irix, and Solaris. + + +Download Center++GLEW is distributed +as source and precompiled binaries. The latest release is +1.5.7 +[09-07-10]: + ++ ++
+An up-to-date copy is also available from the project +repository: + ++svn co https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew glew + + +Supported Extensions++The latest release contains support for OpenGL 3.3, OpenGL 4.1 and the following extensions: + + + +News+
Links+ + + + |
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Installation+ ++To use the shared library version of GLEW, you need to copy the +headers and libraries into their destination directories. On Windows +this typically boils down to copying: + + +
+ + ++where {VC Root} is the Visual C++ root directory, typically +C:/Program Files/Microsoft Visual Studio/VC98 for Visual +Studio 6.0 or C:/Program Files/Microsoft Visual +Studio .NET 2003/Vc7/PlatformSDK for Visual Studio .NET. + + ++On Unix, typing make install will attempt to install GLEW +into /usr/include/GL and /usr/lib. You can +customize the installation target via the GLEW_DEST +environment variable if you do not have write access to these +directories. + + +Building Your Project with GLEW++There are two ways to build your project with GLEW. + +Including the source files / project file++The simpler but less flexible way is to include glew.h and +glew.c into your project. On Windows, you also need to +define the GLEW_STATIC preprocessor token when building a +static library or executable, and the GLEW_BUILD preprocessor +token when building a dll. You also need to replace +<GL/gl.h> and <GL/glu.h> with +<glew.h> in your code and set the appropriate include +flag (-I) to tell the compiler where to look for it. For +example: + +
+#include <glew.h> +Depending on where you put glew.h you may also need to change +the include directives in glew.c. Note that if you are using +GLEW together with GLUT, you have to include glew.h first. +In addition, glew.h includes glu.h, so you do not +need to include it separately. + ++On Windows, you also have the option of adding the supplied project +file glew_static.dsp to your workspace (solution) and compile +it together with your other projects. In this case you also need to +change the GLEW_BUILD preprocessor constant to +GLEW_STATIC when building a static library or executable, +otherwise you get build errors. + ++Note that GLEW does not use the C +runtime library, so it does not matter which version (single-threaded, +multi-threaded or multi-threaded DLL) it is linked with (without +debugging information). It is, however, always a good idea to compile all +your projects including GLEW with the same C runtime settings. + + +Using GLEW as a shared library+ ++Alternatively, you can use the provided project files / makefile to +build a separate shared library you can link your projects with later. +In this case the best practice is to install glew.h, +glew32.lib, and glew32.dll / libGLEW.so to +where the OpenGL equivalents gl.h, opengl32.lib, and +opengl32.dll / libGL.so are located. Note that you +need administrative privileges to do this. If you do not have +administrator access and your system administrator will not do it for +you, you can install GLEW into your own lib and include subdirectories +and tell the compiler where to find it. Then you can just replace +<GL/gl.h> with <GL/glew.h> in your +program: + + +
+#include <GL/glew.h> +or: + + +
+#include <GL/glew.h> +Remember to link your project with glew32.lib, +glu32.lib, and opengl32.lib on Windows and +libGLEW.so, libGLU.so, and libGL.so on +Unix (-lGLEW -lGLU -lGL). + + ++It is important to keep in mind that glew.h includes neither +windows.h nor gl.h. Also, GLEW will warn you by +issuing a preprocessor error in case you have included gl.h, +glext.h, or glATI.h before glew.h. + + + + |
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Change Log+ ++
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + |
+
|
+
+
+
+The OpenGL Extension Wrangler Library+ + + + +Supported WGL Extensions+ +
|