mirror of
				https://github.com/Perlmint/glew-cmake.git
				synced 2025-11-03 22:04:16 +00:00 
			
		
		
		
	git-svn-id: https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew@229 783a27ee-832a-0410-bc00-9f386506c6dd
		
			
				
	
	
		
			676 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			676 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!--
 | 
						|
 Copyright (C) 2004, 2003, 2002, Milan Ikits <milan ikits[at]ieee org>
 | 
						|
 Copyright (C) 2004, 2003, 2002, Marcelo E. Magallon <mmagallo[at]debian org>
 | 
						|
 This documentation may not be modified or redistributed in any
 | 
						|
 form, except by the copyright holder.
 | 
						|
-->
 | 
						|
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/TR/html/4/loose.dtd">
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
<title>
 | 
						|
GLEW: The OpenGL Extension Wrangler Library
 | 
						|
</title>
 | 
						|
<meta http-equiv="content-type" content="text/html; charset=US-ASCII"> 
 | 
						|
<link href="glew.css" type=text/css rel=stylesheet>
 | 
						|
</head>
 | 
						|
<body bgcolor="#fff0d0">
 | 
						|
<center>
 | 
						|
<table border=0 width="60%" cellpadding="5" cellspacing="5">
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff" align=center><br><p><img src="./glew.png" alt="glew" width="97" height="75">
 | 
						|
<p>
 | 
						|
<h1>The OpenGL Extension Wrangler Library</h1>
 | 
						|
<p>
 | 
						|
<table border=0 cellpadding=0 cellspacing=0 align=center>
 | 
						|
<tr><td align=center><a href="#Introduction"><small>Introduction</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Download"><small>Obtaining GLEW</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Supported"><small>Supported Extensions</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Build"><small>How to Build Your Project with GLEW</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Install"><small>How to Install GLEW</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Use"><small>How to Use GLEW</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Utilities"><small>Utilities</small></a></td></tr>
 | 
						|
<tr><td align=center>
 | 
						|
<a href="#Auto"><small>Automatic Code Generation</small></a>
 | 
						|
</td></tr>
 | 
						|
<tr><td align=center>
 | 
						|
<a href="#Namespace"><small>Separate Namespace</small></a>
 | 
						|
</td></tr>
 | 
						|
<tr><td align=center>
 | 
						|
<a href="#Context"><small>Multiple Rendering Contexts (GLEW MX)</small></a>
 | 
						|
</td></tr>
 | 
						|
<tr><td align=center><a href="#Issues"><small>Known Issues</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Credits"><small>Credits, Copyright</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="#Log"><small>Change Log</small></a></td></tr>
 | 
						|
<tr><td align=center><a href="http://sourceforge.net/tracker/?group_id=67586">
 | 
						|
<tr><td align=center><br></td></tr>
 | 
						|
</table>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
<center><a name="Introduction"><h2>Introduction</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
The goal of the OpenGL Extension Wrangler Library (GLEW) is to assist
 | 
						|
C/C++ OpenGL developers with two tedious tasks: initializing and using
 | 
						|
extensions and writing portable applications. GLEW provides an
 | 
						|
efficient run-time mechanism to determine whether a certain extension
 | 
						|
is supported by the driver or not. OpenGL core and extension
 | 
						|
functionality is exposed via a single header file. GLEW currently
 | 
						|
supports a variety of platforms and operating systems, including
 | 
						|
Windows, Linux, Darwin, Irix, and Solaris.
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
<center><a name="Download"><h2>Obtaining GLEW</h2></a></center>
 | 
						|
<p>
 | 
						|
Source and precompiled binaries are available at the <a
 | 
						|
href="http://glew.sourceforge.net/">project website</a>.
 | 
						|
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td  bgcolor="#ffffff">
 | 
						|
<center><a name="Supported"><h2>Supported Extensions</h2></a></center>
 | 
						|
<p>
 | 
						|
GLEW currently supports the following extensions:
 | 
						|
<ul>
 | 
						|
<li><a href="glew.html">OpenGL extensions</a>
 | 
						|
<li><a href="wglew.html">WGL extensions</a>
 | 
						|
<li><a href="glxew.html">GLX extensions</a>
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
Useful links about OpenGL extensions:
 | 
						|
<ul>
 | 
						|
<li><a
 | 
						|
href="http://www.opengl.org/developers/code/features/OGLextensions/OGLextensions.html">
 | 
						|
All About OpenGL Extensions</a>
 | 
						|
<li><a href="http://oss.sgi.com/projects/ogl-sample/registry/">OpenGL Extension Registry</a>
 | 
						|
<li><a
 | 
						|
href="http://www.ati.com/developer/sdk/radeonSDK/html/info/Prog3D.html">ATI
 | 
						|
OpenGL Extension Specifications</a>
 | 
						|
<li><a
 | 
						|
href="http://developer.nvidia.com/view.asp?IO=nvidia_opengl_specs">NVIDIA
 | 
						|
OpenGL Extension Specifications</a>
 | 
						|
<li><a
 | 
						|
href="http://developer.apple.com/opengl/extensions.html">
 | 
						|
APPLE OpenGL Extensions Guide</a>
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Build"><h2>How to Build Your Project with GLEW</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
There are two ways to build your project with GLEW.
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Including the source files / project file</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
The simpler but less flexible way is to include <tt>glew.h</tt> and
 | 
						|
<tt>glew.c</tt> into your project and define the <tt>GLEW_STATIC</tt>
 | 
						|
preprocessor constant for the static library or executable you are
 | 
						|
building together with GLEW (Windows only).  You also need to replace
 | 
						|
<tt><GL/gl.h></tt> and <tt><GL/glu.h></tt> with
 | 
						|
<tt><glew.h></tt> in your code and set the appropriate include
 | 
						|
flag (<tt>-I</tt>) to tell the compiler where to look for it.  For
 | 
						|
example:
 | 
						|
 | 
						|
<blockquote><pre>#include <glew.h>
 | 
						|
#include <GL/glut.h>
 | 
						|
<gl, glu, and glut functionality is available here>
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
Depending on where you put <tt>glew.h</tt> you may also need to change
 | 
						|
the include directives in <tt>glew.c</tt>. Note that if you are using
 | 
						|
GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
 | 
						|
In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you don't
 | 
						|
need to include it separately.
 | 
						|
 | 
						|
<p>
 | 
						|
On Windows you also have the option of adding the supplied project
 | 
						|
file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
 | 
						|
it together with your other projects.  In this case you need to change
 | 
						|
the <tt>GLEW_BUILD</tt> preprocessor constant to <tt>GLEW_STATIC</tt>,
 | 
						|
otherwise you get build errors. <b>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.</b>
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Using GLEW as a shared library</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
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 <tt>glew.h</tt>,
 | 
						|
<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
 | 
						|
where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
 | 
						|
<tt>opengl32.dll</tt> / <tt>libGL.so</tt> 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
 | 
						|
<tt><GL/gl.h></tt> with <tt><GL/glew.h></tt> in your
 | 
						|
program:
 | 
						|
 | 
						|
<blockquote><pre>#include <GL/glew.h>
 | 
						|
#include <GL/glut.h>
 | 
						|
<gl, glu, and glut functionality is available here>
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
or:
 | 
						|
 | 
						|
<blockquote><pre>#include <GL/glew.h>
 | 
						|
<gl and glu functionality is available here>
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
<p>
 | 
						|
Don't forget to link your project with <tt>glew32.lib</tt>,
 | 
						|
<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
 | 
						|
<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
 | 
						|
Linux and IRIX (<tt>-lGLEW -lGLU -lGL</tt>).
 | 
						|
 | 
						|
<p>
 | 
						|
It is important to keep in mind that <tt>glew.h</tt> includes neither
 | 
						|
<tt>windows.h</tt> nor <tt>gl.h</tt>.  Also, GLEW will warn you by
 | 
						|
issuing a preprocessor error in case you have included <tt>gl.h</tt>,
 | 
						|
<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Install"><h2>How to Install GLEW</h2></a></center>
 | 
						|
 | 
						|
<p>
 | 
						|
To install the shared library version of GLEW you need to copy the
 | 
						|
headers and libraries into their destination directories. On Windows
 | 
						|
this boils down to copying (no, we will not write a Windows installer
 | 
						|
for you).
 | 
						|
<p>
 | 
						|
 | 
						|
<center>
 | 
						|
<table border=0 cellpadding=0 cellspacing=0>
 | 
						|
<tr><td><tt>lib/glew32.dll</tt></td><td>    to    </td>
 | 
						|
<td><tt>%SystemRoot%/system32</tt></td></tr>
 | 
						|
<tr><td><tt>lib/glew32.lib</tt></td><td>    to    </td>
 | 
						|
<td><tt>{VC Root}/Lib</tt></td></tr>
 | 
						|
<tr><td><tt>include/GL/glew.h</tt></td><td>    to    </td>
 | 
						|
<td><tt>{VC Root}/Include/GL</tt></td></tr>
 | 
						|
<tr><td><tt>include/GL/wglew.h</tt></td><td>    to    </td>
 | 
						|
<td><tt>{VC Root}/Include/GL</tt></td></tr>
 | 
						|
</table>
 | 
						|
</center>
 | 
						|
<p>
 | 
						|
 | 
						|
where <tt>{VC Root}</tt> is your Visual C++ directory, typically
 | 
						|
<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
 | 
						|
Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
 | 
						|
Studio/Vc7/PlatformSDK</tt> for Visual Studio .NET.
 | 
						|
 | 
						|
<p>
 | 
						|
On Linux and IRIX, typing <tt>"make install"</tt> will attempt to install GLEW
 | 
						|
into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>.  You can 
 | 
						|
customize the installation target via the <tt>GLEW_DEST</tt>
 | 
						|
environment variable if you do not have write access
 | 
						|
to these directories.
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Use"><h2>How to Use GLEW</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Initializing GLEW</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
First you need to create a valid OpenGL rendering context and call
 | 
						|
<tt>glewInit()</tt> to initialize the extension entry points.  If
 | 
						|
<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
 | 
						|
succeeded and you can use the available extensions as well as core
 | 
						|
OpenGL functionality. For example:
 | 
						|
 | 
						|
<blockquote><pre>#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));
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Querying the available OpenGL extensions</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
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 <tt>GLEW_{extension_name}</tt>:
 | 
						|
 | 
						|
<blockquote><pre>if (GLEW_ARB_vertex_program)
 | 
						|
{
 | 
						|
  /* it is safe to use the ARB_vertex_program extension here */
 | 
						|
  glGenProgramsARB(...);
 | 
						|
}
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
<b>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.</b>
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
You can also check for core OpenGL functionality.  For example, to
 | 
						|
see if OpenGL 1.3 is supported:
 | 
						|
 | 
						|
<blockquote><pre>if (GLEW_VERSION_1_3)
 | 
						|
{
 | 
						|
  /* Yay! OpenGL 1.3 is supported! */
 | 
						|
}
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
In general, you can check if <tt>GLEW_{extension_name}</tt> or
 | 
						|
<tt>GLEW_VERSION_{version}</tt> is set or not.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
For extensions <tt>glewGetExtension</tt> provides a slower alternative:
 | 
						|
 | 
						|
<blockquote><pre>if (GL_TRUE == glewGetExtension("GL_ARB_fragment_program"))
 | 
						|
{
 | 
						|
  /* Looks like ARB_fragment_program is supported. */
 | 
						|
}
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Experimental drivers</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
GLEW works by querying the supported extensions from the graphics
 | 
						|
driver.  Experimental 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
 | 
						|
<tt>glewExperimental</tt> global switch can be turned on by setting it
 | 
						|
to <tt>GL_TRUE</tt> before calling <tt>glewInit()</tt>.  This makes
 | 
						|
sure that all extensions with valid entry points will be exposed.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>Platform specific extensions</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
Platform specific extensions are separated into two header files:
 | 
						|
<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
 | 
						|
<tt>WGL</tt> and <tt>GLX</tt> extensions.  To determine if a certain
 | 
						|
extension is supported, query <tt>WGLEW_{extension name}</tt> or
 | 
						|
<tt>GLXEW_{extension_name}</tt>.  For example:
 | 
						|
 | 
						|
<blockquote><pre>#include <GL/wglew.h>
 | 
						|
 | 
						|
if (WGLEW_ARB_pbuffer)
 | 
						|
{
 | 
						|
  /* OK, we can use pbuffers */
 | 
						|
}
 | 
						|
else
 | 
						|
{
 | 
						|
  /* Sorry, pbuffers will not work on this platform */
 | 
						|
}
 | 
						|
</pre></blockquote>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Utilities"><h2>Utilities</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
GLEW provides two command line tools: one for creating a list of
 | 
						|
available extensions and visuals; and another for verifying extension
 | 
						|
entry points.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>wglinfo: extensions and visuals on Windows</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
<tt>wglinfo</tt> is the Windows version of <tt>glxinfo</tt>. By
 | 
						|
default it creates a file called <tt>wglinfo.txt</tt> that contains a
 | 
						|
list of available OpenGL, WGL, and GLU extensions as well as a table
 | 
						|
of visuals aka. pixel formats. Pbuffer and multiple output capable
 | 
						|
visuals are also included. The format of the table is described <a
 | 
						|
href="wglinfo.txt">here</a>. For additional usage information, type
 | 
						|
<tt>wglinfo -h</tt>.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
<h3>glewinfo: extension verification utility</h3>
 | 
						|
<p>
 | 
						|
 | 
						|
<tt>glewinfo</tt> allows you to verify the entry points for the
 | 
						|
extensions supported on your platform. It uses GLEW to find out which
 | 
						|
extensions and entry points are available. On Windows it reports the
 | 
						|
results to a text file called <tt>glewinfo.txt</tt>, on Unix it prints
 | 
						|
them to <tt>stdout</tt>.  <p>
 | 
						|
 | 
						|
Windows Usage: <blockquote><pre>glewinfo [-pf <id>]</pre></blockquote>
 | 
						|
 | 
						|
where <tt><id></tt> is the pixelformat id for which the
 | 
						|
capabilities are displayed.
 | 
						|
 | 
						|
<p>
 | 
						|
Unix Usage:
 | 
						|
<blockquote><pre>glewinfo [-display <dpy>] [-visual <id>]</pre></blockquote>
 | 
						|
 | 
						|
where <tt><dpy></tt> is the X11 display and <tt><id></tt> is
 | 
						|
the visual id for which the capabilities are displayed.
 | 
						|
<p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Auto"><h2>Automatic Code Generation</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
Starting with release 1.1.0, the source code and parts of the
 | 
						|
documentation are automatically generated from the extension
 | 
						|
specifications via a two-step process.  In the first step,
 | 
						|
specification files from the OpenGL registry are parsed and 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, 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 <tt>auto</tt>
 | 
						|
subdirectory.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Namespace"><h2>Separate Namespace</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
To avoid name clashes when linking with libraries that include the
 | 
						|
same symbol, 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,
 | 
						|
<tt>glFancyFunction</tt> is simply an alias to
 | 
						|
<tt>glewFancyFunction</tt>.  Note that the separate namespace doesn't
 | 
						|
effect token and function pointer definitions.
 | 
						|
<p>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Context"><h2>Multiple Rendering
 | 
						|
Contexts (GLEW MX)</h2></a></center> 
 | 
						|
<p>
 | 
						|
 | 
						|
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:
 | 
						|
 | 
						|
<ol>
 | 
						|
<li>Compile and use GLEW with the <tt>GLEW_MX</tt> preprocessor token defined.</li>
 | 
						|
<li>Replace the global <tt>glewInit()</tt> call with <tt>glewContextInit(GLEWContext* ctx)</tt>. Note, that <tt>ctx</tt> has to reside in global or thread-local memory.</li>
 | 
						|
<li>Define the <tt>glewGetContext()</tt> macro or function that retrieves the GLEW context for the thread from which the OpenGL/WGL/GLX call is issued. This dispatch mechanism is primitive, but generic.</li>
 | 
						|
</ol>
 | 
						|
 | 
						|
<p> Note that according to <a
 | 
						|
href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/ntopnglr_6yer.asp">WGL
 | 
						|
documentation</a>, you have to initialize the entry points for every
 | 
						|
rendering context you create using 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).  <b>GLEW by default ignores this
 | 
						|
requirement, and does not define per-context entry points (you can
 | 
						|
however do this using the steps described above).</b> 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 (and why would anyone want to use
 | 
						|
the software renderer when hardware acceleration is available?). This
 | 
						|
means that unless you use the multi-context version of GLEW, you need
 | 
						|
to call <tt>glewInit()</tt> only once in your program, or more
 | 
						|
precisely, once per process.
 | 
						|
 | 
						|
<p>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
 | 
						|
<center><a name="Issues"><h2>Known Issues</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
GLEW requires GLX 1.2 to assure compatibility with GLUT.  Also,
 | 
						|
the SGI GLX video extensions are currently not supported.
 | 
						|
<p>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
<center><a name="Credits"><h2>Credits, Copyright</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
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.  The RPM
 | 
						|
packages are maintained by Karol Pietrzak. Nate Robins created the
 | 
						|
<tt>wglinfo</tt> utility, to which modifications were added by Michael
 | 
						|
Wimmer.
 | 
						|
<p>
 | 
						|
 | 
						|
<p>
 | 
						|
GLEW is originally derived from the EXTGL project by Lev Povalahev.  The
 | 
						|
source code is licensed under the modified BSD license, the <a
 | 
						|
href="sgi.txt">SGI Free Software License B</a>, and the <a
 | 
						|
href="glx.txt">GLX Public License</a>. The automatic code
 | 
						|
generation scripts are released under the <a href="gpl.txt">GPL</a>.
 | 
						|
 | 
						|
<blockquote><pre></pre></blockquote>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr><td bgcolor="#fff0d0" align="center"></td></tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#ffffff">
 | 
						|
<center><a name="Log"><h2>Change Log</h2></a></center>
 | 
						|
<p>
 | 
						|
 | 
						|
<ul class="none">
 | 
						|
<li><b>1.2.0</b> [02-19-04]
 | 
						|
<ul>
 | 
						|
<li> Added full OpenGL 1.5 support
 | 
						|
<li> Added support for multiple rendering contexts with different capabilities
 | 
						|
<li> Added command line flags to <tt>glewinfo</tt> for selecting displays and visuals
 | 
						|
<li> Added GLX_SGIS_multisample, GLX_SUN_video_resize, and GL_SUN_read_video_pixels
 | 
						|
<li> Added MinGW/MSYS support
 | 
						|
<li> Bug fixes in GL_ARB_shader_objects and the OS X build
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.1.4</b> [12-15-03]
 | 
						|
<ul>
 | 
						|
<li> Added GL_APPLE_float_pixels, GL_APPLE_texture_range, 
 | 
						|
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
 | 
						|
GLX_ATI_pixel_format_float, and GLX_ATI_render_texture
 | 
						|
<li> Bug fixes in GL_ATI_map_object_buffer and GL_ATI_fragment_shader
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.1.3</b> [10-28-03]
 | 
						|
<ul>
 | 
						|
<li> Added Solaris and Darwin support
 | 
						|
<li> Added GL_ARB_fragment_shader, GL_ARB_shader_objects, and
 | 
						|
GL_ARB_vertex_shader
 | 
						|
<li> Fixed bug in GL_WIN_swap_hint
 | 
						|
<li> Removed <tt>glewinfo</tt>'s dependency on <tt>GLUT</tt>
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.1.2</b> [09-15-03]
 | 
						|
<ul>
 | 
						|
<li> Removed dependency on WGL_{ARB,EXT}_extensions_string
 | 
						|
<li> Added glewGetString for querying GLEW version string
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.1.1</b> [08-11-03]
 | 
						|
<ul>
 | 
						|
<li> Added GLX_NV_float_buffer
 | 
						|
<li> Fixed bug in GL_ARB_vertex_buffer_object
 | 
						|
<li> Minor updates in documentation
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.1.0</b> [07-08-03]
 | 
						|
<ul>
 | 
						|
<li> Added automatic code generation
 | 
						|
<li> Added almost every extension in the registry
 | 
						|
<li> Added separate namespace
 | 
						|
<li> Added IRIX support
 | 
						|
<li> Updated documentation
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.7</b> [06-29-03]
 | 
						|
<ul>
 | 
						|
<li> Added GL_EXT_depth_bounds_test
 | 
						|
<li> Fixed typos
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.6</b> [05-05-03]
 | 
						|
<ul>
 | 
						|
<li> Added ARB_vertex_buffer_object and NV_half_float
 | 
						|
<li> Updated <tt>wglinfo</tt>
 | 
						|
<li> Temporary Linux bug fixes (problems with SDL and MESA)
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.5</b> [02-17-03]
 | 
						|
<ul>
 | 
						|
<li> Bug fixes
 | 
						|
<li> Added <tt>wglinfo</tt>
 | 
						|
<li> Updated documentation
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.4</b> [02-02-03]
 | 
						|
<ul>
 | 
						|
<li> Added NV_texture_expand_normal
 | 
						|
<li> Added mingw support
 | 
						|
<li> Updated documentation
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.3</b> [01-09-03]
 | 
						|
<ul>
 | 
						|
<li> Cleaned up ATI extensions
 | 
						|
<li> Changed function prototypes to match glext.h
 | 
						|
<li> Added EXT_texture3D
 | 
						|
<li> Fixed typos in ATI_vertex_attrib_array_object and ATI_draw_buffers
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.2</b> [12-21-02]
 | 
						|
<ul>
 | 
						|
<li> Added list of supported extensions to documentation
 | 
						|
<li> Added NV_half_float and NV_texgen_emboss
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.1</b> [12-17-02]
 | 
						|
<ul>
 | 
						|
<li> Bug fixes
 | 
						|
<li> Added glewGetExtension
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
<li><b>1.0.0</b> [12-12-02]
 | 
						|
<ul>
 | 
						|
<li> Initial release
 | 
						|
</ul>
 | 
						|
 | 
						|
</ul>
 | 
						|
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td bgcolor="#FFF0D0">
 | 
						|
<table border="0" cellspacing="0" cellpadding="0" width="100%">
 | 
						|
<tr>
 | 
						|
<td align="right">
 | 
						|
<i>Last update: 02-19-04</i></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</center>
 | 
						|
 | 
						|
</body>
 |