advanced.html (9742B)
1<!-- begin header.html --> 2<!-- 3The OpenGL Extension Wrangler Library 4Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> 5Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> 6Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> 7Copyright (C) 2002, Lev Povalahev 8All rights reserved. 9 10Redistribution and use in source and binary forms, with or without 11modification, are permitted provided that the following conditions are met: 12 13* Redistributions of source code must retain the above copyright notice, 14 this list of conditions and the following disclaimer. 15* Redistributions in binary form must reproduce the above copyright notice, 16 this list of conditions and the following disclaimer in the documentation 17 and/or other materials provided with the distribution. 18* The name of the author may be used to endorse or promote products 19 derived from this software without specific prior written permission. 20 21THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31THE POSSIBILITY OF SUCH DAMAGE. 32--> 33<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd"> 34<html> 35<head> 36<title>GLEW: The OpenGL Extension Wrangler Library</title> 37<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 38<link href="glew.css" type="text/css" rel="stylesheet"> 39</head> 40<body bgcolor="#fff0d0"> 41<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%"> 42<tr> 43<td bgcolor="#ffffff" align="left" valign="top" width="200"> 44<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left"> 45<tr> 46<td valign="top"> 47 48<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left"> 49<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.1.0/">2.1.0</a></i></td></tr> 50<tr><td align="center"><br></td></tr> 51<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr> 52<tr><td align="center"><br></td></tr> 53<tr><td align="center"> 54<table border="0" cellpadding="0" cellspacing="0" align="center"> 55<tr><td align="center"><a href="index.html">Download</a></td></tr> 56<tr><td align="center"><a href="basic.html">Usage</a></td></tr> 57<tr><td align="center"><a href="build.html">Building</a></td></tr> 58<tr><td align="center"><a href="install.html">Installation</a></td></tr> 59<tr><td align="center">Source Generation</td></tr> 60<tr><td align="center"><a href="log.html">Change Log</a></td></tr> 61<tr><td align="center"><br></tr> 62<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr> 63<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr> 64<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr> 65<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr> 66<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr> 67<tr><td align="center"><br></tr> 68<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr> 69</table> 70<tr><td align="center"><br></tr> 71</table> 72</td> 73</tr> 74<tr> 75 76<td valign="bottom"> 77<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left"> 78<tr><td align="center"><i>Last Update: 07-31-17</i></td></tr> 79<tr><td align="center"> 80 <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/> 81 <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/> 82 <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/> 83 <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a> 84</td> 85</tr> 86</table> 87</td> 88</tr> 89</table> 90</td> 91 92<td bgcolor="#ffffff" align="left" valign="top"> 93 94<h1>The OpenGL Extension Wrangler Library</h1> 95 96<!-- end header.html --> 97 98 99<h2>Automatic Code Generation</h2> 100 101<p> 102Starting from release 1.1.0, the source code and parts of the 103documentation are automatically generated from the extension 104specifications in a two-step process. In the first step, 105specification files from the OpenGL registry are downloaded and 106parsed. Skeleton descriptors are created for each extension. These 107descriptors contain all necessary information for creating the source 108code and documentation in a simple and compact format, including the 109name of the extension, url link to the specification, tokens, function 110declarations, typedefs and struct definitions. In the second step, 111the header files as well as the library and glewinfo source are 112generated from the descriptor files. The code generation scripts are 113located in the <tt>auto</tt> subdirectory. 114</p> 115 116<p> 117The code generation scripts require GNU make, wget, and perl. On 118Windows, the simplest way to get access to these tools is to install 119<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the 120root directory is mounted in binary mode. The makefile in the 121<tt>auto</tt> directory provides the following build targets: 122</p> 123 124<table border=0 cellpadding=0 cellspacing=5> 125<tr><td align="left" valign="top"><tt>make</tt></td> 126<td align=left>Create the source files from the descriptors.<br/> If the 127descriptors do not exist, create them from the spec files.<br/> If the spec 128files do not exist, download them from the OpenGL repository.</td></tr> 129<tr><td align="left" valign="top"><tt>make clean</tt></td> 130<td align=left>Delete the source files.</td></tr> 131<tr><td align="left" valign="top"><tt>make clobber</tt></td> 132<td align=left>Delete the source files and the descriptors.</td></tr> 133<tr><td align="left" valign="top"><tt>make destroy</tt></td> 134<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr> 135<tr><td align="left" valign="top"><tt>make custom</tt></td> 136<td align=left>Create the source files for the extensions 137listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code 138Generation" below for more details.</td></tr> 139</table> 140 141<h3>Adding a New Extension</h3> 142 143<p> 144To add a new extension, create a descriptor file for the extension in 145<tt>auto/core</tt> and rerun the code generation scripts by typing 146<tt>make clean; make</tt> in the <tt>auto</tt> directory. 147</p> 148 149<p> 150The format of the descriptor file is given below. Items in 151brackets are optional. 152</p> 153 154<p class="pre"> 155<Extension Name><br> 156[<URL of Specification File>]<br> 157 [<Token Name> <Token Value>]<br> 158 [<Token Name> <Token Value>]<br> 159 ...<br> 160 [<Typedef>]<br> 161 [<Typedef>]<br> 162 ...<br> 163 [<Function Signature>]<br> 164 [<Function Signature>]<br> 165 ...<br> 166<!-- [<Function Definition>]<br> 167 [<Function Definition>]<br> 168 ...<br> --> 169</p> 170 171<!-- 172<p> 173Note that <tt>Function Definitions</tt> are copied to the header files 174without changes and have to be terminated with a semicolon. In 175contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and 176<tt>Typedefs</tt> should not be terminated with a semicolon. 177</p> 178--> 179 180<p> 181Take a look at one of the files in <tt>auto/core</tt> for an 182example. Note that typedefs and function signatures should not be 183terminated with a semicolon. 184</p> 185 186<h3>Custom Code Generation</h3> 187<p> 188Starting from GLEW 1.3.0, it is possible to control which extensions 189to include in the libarary by specifying a list in 190<tt>auto/custom.txt</tt>. This is useful when you do not need all the 191extensions and would like to reduce the size of the source files. 192Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory 193to rerun the scripts with the custom list of extensions. 194</p> 195 196<p> 197For example, the following is the list of extensions needed to get GLEW and the 198utilities to compile. 199</p> 200 201<p class="pre"> 202WGL_ARB_extensions_string<br> 203WGL_ARB_multisample<br> 204WGL_ARB_pixel_format<br> 205WGL_ARB_pbuffer<br> 206WGL_EXT_extensions_string<br> 207WGL_ATI_pixel_format_float<br> 208WGL_NV_float_buffer<br> 209</p> 210 211<h2>Separate Namespace</h2> 212 213<p> 214To avoid name clashes when linking with libraries that include the 215same symbols, extension entry points are declared in a separate 216namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL 217function names to their GLEW equivalents. For instance, 218<tt>glFancyFunction</tt> is simply an alias to 219<tt>glewFancyFunction</tt>. The separate namespace does not effect 220token and function pointer definitions. 221</p> 222 223<h2>Known Issues</h2> 224 225<p> 226GLEW requires GLX 1.2 for compatibility with GLUT. 227</p> 228 229<!-- begin footer.html --> 230</td></tr></table></body> 231<!-- end footer.html --> 232