Replaced outdated Lite readme with quick rework of 2.7 version.

This commit is contained in:
Camilla Berglund 2010-09-08 14:54:21 +02:00
parent 9e4137c0a9
commit 3f0221ccc0

View File

@ -1,122 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>GLFW Readme File</title> <title>GLFW Readme File</title>
<style type="text/css">
table { margin-left: 2em; border-style: solid; border-width: thin; }
tr.header { font-weight: bold; }
td { padding: 0.2em; border-style: solid; border-width: thin; }
pre { margin-left: 2em; }
</style>
</head> </head>
<body> <body>
<h1>GLFW 2.7 <i>Lite</i></h1> <h1>GLFW 3.0 source distribution</h1>
<ol> <ol>
<li><a href="#sec1">Introduction</a></li> <li><a href="#intro">Introduction</a></li>
<li><a href="#sec2">Compiling GLFW and the example programs</a></li> <li><a href="#compiling">Compiling GLFW and the example programs</a></li>
<li><a href="#sec3">Installing GLFW</a></li> <li><a href="#installing">Installing GLFW</a></li>
<li><a href="#sec4">Using GLFW</a></li> <li><a href="#using">Using GLFW</a></li>
<li><a href="#sec9">Frequently Asked Questions</a></li> <li><a href="#changelog">Version history</a></li>
<li><a href="#sec5">Version history</a></li> <li><a href="#structure">Directory structure of the GLFW distribution</a></li>
<li><a href="#sec6">Directory structure of the GLFW distribution</a></li> <li><a href="#contact">Contacting the project</a></li>
<li><a href="#sec7">Contacting the project</a></li> <li><a href="#credits">Acknowledgements</a></li>
<li><a href="#sec8">Acknowledgements</a></li>
</ol> </ol>
<a name="sec1"> <a name="intro">
<h2>1. Introduction</h2> <h2>1. Introduction</h2>
<p>Welcome to version 2.7 <i>Lite</i> of the GLFW OpenGL framework. GLFW is <p>Welcome to version 3.0 of the GLFW library. GLFW is a free, open source,
a free, open source, portable framework for OpenGL application development. In portable library for OpenGL application development. It provides a powerful
short, it is a library that constitutes a powerful API for handling operating API for handling operating system specific tasks, such as opening an OpenGL
system specific tasks, such as opening an OpenGL window, reading keyboard and window, reading keyboard, mouse, joystick and time input, and more.</p>
mouse input, and more.</p>
<p><em>Please note</em> that this is the <i>Lite</i> version of GLFW, which <p>This is an <em>experimental</em> series intended to allow the new API to
means that some areas of functionality present in 2.x mainline versions of GLFW settle.</p>
have been removed.</p>
<a name="sec2"> <p><strong>Note</strong> that the threading and image loading APIs from the 2.x
series have been removed.</p>
<a name="compiling">
<h2>2. Compiling GLFW and the example programs</h2> <h2>2. Compiling GLFW and the example programs</h2>
<p>To compile GLFW and the accompanying example programs, you will need the <a <p>To compile GLFW and the accompanying example programs, you will need the
href="http://www.cmake.org/">CMake</a> build system.</p> <a href="http://www.cmake.org/">CMake</a> build system.</p>
<a name="sec3"> <a name="installing">
<h2>3. Installing GLFW</h2> <h2>3. Installing GLFW</h2>
<p>A rudimentary installation target is provided for all supported platforms <p>A rudimentary installation target is provided for all supported platforms
via the CMake build system.</p> via the CMake build system.</p>
<p>For Unix-like platforms, the command is:</p> <a name="using">
<p class="pre"><pre>$ make install</pre></p>
<p>Note that you may need to run this command as root or via
<code>sudo(1)</code> in order to install GLFW into the various system
directories.</p>
<p>For Visual C++ and other integrated development environments, an installation
target should appear in the by CMake generated project files.</p>
<a name="sec4">
<h2>4. Using GLFW</h2> <h2>4. Using GLFW</h2>
<p>There are two aspects to using GLFW: <p>There are two aspects to using GLFW:</p>
<p>
<ol> <ol>
<li>How the GLFW API works</li> <li>How does the GLFW API work</li>
<li>How to compile programs that use GLFW</li> <li>How to compile programs that use GLFW</li>
</ol> </ol>
<p>The first point is covered in the <a href="docs/UsersGuide.pdf">GLFW <p>The first point is covered in the
Users Guide</a> and the <a href="docs/Reference.pdf">GLFW Reference <a href="docs/GLFWUsersGuide30.pdf">GLFW Users Guide</a> and the
Manual</a>, and we suggest that you read at least the Users Guide, since <a href="docs/GLFWReference30.pdf">GLFW Reference Manual</a>, and we suggest
it's a good introduction to the GLFW API.</p> that you read at least the Users Guide, since it's a good introduction to the
GLFW API.</p>
<p>Designing and compiling programs that use GLFW is not very difficult. <p>Designing and compiling programs that use GLFW is not very difficult.
A few rules for successfully designing GLFW-based programs are presented A few rules for successfully designing GLFW-based programs are presented
in the following sections.</p> in the following sections.</p>
<h3>4.1 Include <code>GL/glfw.h</code></h3> <h3>4.1 Include the GLFW header file</h3>
<p>In your program, you should include <code>GL/glfw.h</code> like this:</p> <p>In the files of your program where you use OpenGL or GLFW, you should
include the <code>GL/glfw.h</code> header file, i.e.:</p>
<p><pre>#include &lt;GL/glfw.h&gt;</pre></p> <blockquote><code>#include &lt;GL/glfw.h&gt;</code></blockquote>
<p>This include file defines all the necessary constants, types and prototypes <p>This defines all the constants, types and function prototypes of the GLFW
that are used to interact with the GLFW API. It also includes API. It also includes the <code>gl.h</code> and </code>GL/glu.h</code> header
<code>GL/gl.h</code> and <code>GL/glu.h</code>, and - <em>it defines all the files, and - this is very important - <em>it defines all the necessary
necessary constants and types that are necessary for OpenGL to work on constants and types that are necessary for the OpenGL headers to work on
different platforms</em>.</p> different platforms</em>.</p>
<p>For instance, under Windows you are normally required to include <p>For example, under Microsoft Windows you are normally required to include
<code>windows.h</code> before you include <code>GL/gl.h</code>. If you write <code>windows.h</code> before you include <code>GL/gl.h</code>. This would
such a program, it would not compile under e.g. Linux since however make your code dependent on the Windows platform, or at least require
<code>windows.h</code> does not exist under Linux. <code>GL/glfw.h</code> your program to check which platform it is being compiled on.
takes care of these things for you. Note however that it does not actually
include <code>windows.h</code>, it merely mimics the parts of it that are The GLFW header file takes care of this for you, not by including
needed for <code>GL/gl.h</code> and <code>GL/glu.h</code> (this way we do not <code>windows.h</code>, but rather by itself duplicating the necessary parts of
get the thousands of constants, types and prototypes that could otherwise it. This way, the namespace won't be cluttered by the entire Windows API.</p>
possibly interfere with our own declarations).</p>
<p>In other words: <p>In other words:
<ul> <ul>
<li>Do <em>not</em> include <code>GL/gl.h</code> or <code>GL/glu.h</code> <li>Do <em>not</em> include <code>GL/gl.h</code> or <code>GL/glu.h</code>
(GLFW does it for you)</li> yourself, as GLFW does this for you</li>
<li>Do <em>not</em> include <code>windows.h</code> unless you need <li>Do <em>not</em> include <code>windows.h</code> unless you actually need
to write Win32-specific code</li> direct access to the Windows API</li>
<li>If you <em>do</em> need to include <code>windows.h</code>, do it <li>If you <em>do</em> need to include <code>windows.h</code>, do it
<em>before</em> including <code>GL/glfw.h</code>.</li> <em>before</em> including <code>GL/glfw.h</code> and the GLFW header will
detect this.</p>
</ul> </ul>
<h3>4.2 Link with the correct libraries</h3> <p>Also note that if you are using an OpenGL extension loading library such as
<a href="http://glew.sourceforge.net/">GLEW</a>, you should include the GLEW
header <em>before</em> the GLFW one. The GLEW header defines macros that
disable any <code>gl.h</code> that the GLFW header includes and GLEW will work
as expected.</p>
<h3>4.2 Link with the right libraries</h3>
<h4>4.2.1 Windows static library</h4> <h4>4.2.1 Windows static library</h4>
@ -130,10 +121,10 @@ linked with by default by your compiler. In the table below you can see the
minimum required link options for each supported Windows compiler (you may want minimum required link options for each supported Windows compiler (you may want
to add other libraries as well, such as <code>glu32</code>):</p> to add other libraries as well, such as <code>glu32</code>):</p>
<table> <table border=1>
<tr class="header"> <tr>
<td>Compiler</td> <td><b>Compiler</b></td>
<td>Link options</td> <td><b>Link options</b></td>
</tr> </tr>
<tr> <tr>
<td>Borland C++ Builder</td> <td>Borland C++ Builder</td>
@ -159,22 +150,18 @@ to add other libraries as well, such as <code>glu32</code>):</p>
<td>OpenWatcom</td> <td>OpenWatcom</td>
<td><code>glfw.lib opengl32.lib user32.lib</code></td> <td><code>glfw.lib opengl32.lib user32.lib</code></td>
</tr> </tr>
<tr>
<td>Pelles C</td>
<td><code>glfw.lib opengl32.lib user32.lib kernel32.lib</code></td>
</tr>
</table> </table>
<h4>4.2.2 Windows DLL</h4> <h4>4.2.2 Windows DLL</h4>
<p>To compile a program that uses the DLL version of GLFW, you need to define <p>To compile a program that uses the DLL version of GLFW, you need to
the <code>GLFW_DLL</code> constant. This can either be done with a compiler switch, define the <code>GLFW_DLL</code> constant. This can either be done with a
typically by adding <code>-DGLFW_DLL</code> to the list of compiler options. You can compiler switch, typically by adding <code>-DGLFW_DLL</code> to the list of
also do it by adding the following line to all your source files that include compiler options. You can also do it by adding the following line to all your
<code>glfw.h</code>, <em>before</em> including it:</p> source files <b>before</b> including the GLFW header file:</p>
<p><pre>#define GLFW_DLL</pre></p> <blockquote><code>#define GLFW_DLL</code></blockquote>
<p>When linking a program under Windows that uses the DLL version of GLFW, <p>When linking a program under Windows that uses the DLL version of GLFW,
the only library you need to link with for GLFW to work is <code>glfwdll</code>. the only library you need to link with for GLFW to work is <code>glfwdll</code>.
@ -182,10 +169,10 @@ In the table below you can see the minimum required link options for each
supported Windows compiler (you may want to add other libraries as well, supported Windows compiler (you may want to add other libraries as well,
such as <code>opengl32</code> and <code>glu32</code>):</p> such as <code>opengl32</code> and <code>glu32</code>):</p>
<table> <table border=1>
<tr class="header"> <tr>
<td>Compiler</td> <td><b>Compiler</b></td>
<td>Link options</td> <td><b>Link options</b></td>
</tr> </tr>
<tr> <tr>
<td>Borland C++ Builder</td> <td>Borland C++ Builder</td>
@ -211,120 +198,164 @@ such as <code>opengl32</code> and <code>glu32</code>):</p>
<td>OpenWatcom</td> <td>OpenWatcom</td>
<td><code>glfwdll.lib</code></td> <td><code>glfwdll.lib</code></td>
</tr> </tr>
<tr>
<td>Pelles C</td>
<td><code>glfwdll.lib</code></td>
</tr>
</table> </table>
<h4>4.2.3 Unix static library</h4> <h4>4.2.3 Unix static library</h4>
<p>GLFW now supports <p>GLFW supports
<a href="http://pkgconfig.freedesktop.org/wiki/">pkgconfig</a>, <a href="http://pkgconfig.freedesktop.org/wiki/">pkg-config</a>,
and a libglfw.pc file is generated and installed when you install the library. and a <code>libglfw.pc</code> file is generated and installed when you install
For systems that do not provide pkgconfig, you should look in this file for the the library. For systems that do not provide pkg-config, you should look in
proper compile and link flags for your system, as determined by compile.sh at this file for the proper compile and link flags for your system, as determined
compile time.</p> by compile.sh at compile time.</p>
<p>A typical compile and link command line may look like this (using GCC):</p> <p>A typical compile and link command-line may look like this:</p>
<p><pre>gcc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</pre></p> <blockquote><code>cc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</code></blockquote>
<p>If you use GLU functions in your program you should also add
<code>-lGLU</code> to your link flags.</p>
<p>If you use GLU functions in your program then you should also add the
<code>-lGLU</code> flag.
<h4>4.2.5 Mac OS X static library</h4> <h4>4.2.5 Mac OS X static library</h4>
<p>When compiling and linking a program under Mac OS X that uses GLFW, you <p>When compiling and linking a program under Mac OS X that uses GLFW, you
must also link with the following frameworks: <code>Carbon.framework</code>, must also link with Cocoa and OpenGL frameworks.
<code>AGL.framework</code> and <code>OpenGL.framework</code>.
<p>If you are using Xcode, you simply add the GLFW library <p>If you are using Xcode, you simply add the GLFW library <code>libglfw.a</code> and
<code>libglfw.a</code> and these frameworks to your project. If, however, you these frameworks to your project. If, however, you are building your program
are building your program from the command line, there are two methods for from the command-line, there are two methods for correctly linking your GLFW
correctly linking your GLFW program.</p> program.</p>
<p>GLFW now supports <a <p>GLFW supports
href="http://pkgconfig.freedesktop.org/wiki/">pkgconfig</a>, and a pkgconfig <a href="http://pkgconfig.freedesktop.org/wiki/">pkg-config</a>, and a
file named libglfw.pc is generated and installed when you install the library. libglfw.pc file is generated and installed when you install the library. You
You can find pkgconfig in most packaging systems, such as <a can find pkg-config in most packaging systems, such as
href="http://www.finkproject.org/">Fink</a> and <a <a href="http://www.finkproject.org/">Fink</a> and
href="http://darwinports.opendarwin.org/">DarwinPorts</a>, so if you have one <a href="http://www.macports.org/">MacPorts</a>, so if you have one of them
of them installed, simply install pkgconfig. Once you have pkgconfig available, installed, simply install pkg-config. Once you have pkg-config available, the
the command line for compiling and linking your program is:</p> command-line for compiling and linking your program is:</p>
<p><pre>gcc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</pre></p> <blockquote><code>cc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</code></blockquote>
<p>If you do not wish to use pkgconfig, you will need to add the required <p>If you do not wish to use pkg-config, you will need to add the required
frameworks and libraries to your command line using the <code>-l</code> and frameworks and libraries to your command-line using the <code>-l</code> and
<code>-framework</code> switches, i.e.:</p> <code>-framework</code> switches, i.e.:</p>
<p><pre>gcc -o myprog myprog.c -lglfw -framework Carbon -framework AGL -framework OpenGL</pre></p> <blockquote><code>cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL</code></blockquote>
<p>Note that you do not add the .framework extension to a framework when adding <p>Note that you do not add the .framework extension to a framework when adding
it from the command line.</p> it from the command-line.</p>
<p>These frameworks contain all GL and GLU functions, so there is no need to <p>These frameworks contain all OpenGL and GLU functions, so there is no need to
add additional libraries or frameworks when using GLU functionality. Also note add additional libraries or frameworks when using GLU functionality. Also note
that even though your machine may have Unix-style GL libraries, they are for that even though your machine may have Unix-style OpenGL libraries, they are for
use with the X Window System, and will <em>not</em> work with the Mac OS X use with the X Window System, and will <em>not</em> work with the Mac OS X native
native version of GLFW.</p> version of GLFW.</p>
<a name="#sec9" /> <a name="changelog">
<h2>9. Frequently Asked Questions</h2>
<a name="sec5" />
<h2>5. Version history</h2> <h2>5. Version history</h2>
<h3>2.7 <i>Lite</i></h3> <h3>v3.0</h3>
<ul> <ul>
<li>Removed all threading support</li> <li>Replaced ad hoc build system with CMake</li>
<li>Removed all image and texture loading support</li> <li>Removed threading API</li>
<li>Removed all build files not related to CMake</li> <li>Removed image loading API</li>
<li>Removed D, Delphi and Lua bindings</li>
<li>Imported CMake work from pre-3.0 branch</li>
</ul> </ul>
<h3>2.7</h3> <h3>v2.7</h3>
<ul> <ul>
<li>Added <code>GLFW_OPENGL_VERSION_MAJOR</code>, <li>Added <code>GLFW_OPENGL_VERSION_MAJOR</code> and <code>GLFW_OPENGL_VERSION_MINOR</code>
<code>GLFW_OPENGL_VERSION_MINOR</code> and hints for versioned context creation</li>
<code>GLFW_OPENGL_FORWARD_COMPAT</code> hints for versioned context <li>Added <code>GLFW_OPENGL_FORWARD_COMPAT</code> hint for forward compatible context creation</li>
creation support</li> <li>Added <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint for debug context creation</li>
<li>Added <code>GLFW_NO_GLU</code> macro for disabling the inclusion of the <li>Added <code>GLFW_OPENL_PROFILE</code> hint for context creation using profiles</li>
GLU header</li> <li>Added <code>GLFW_NO_GLU</code> macro for disabling the inclusion of the GLU header by the GLFW header</li>
<li>Added the proper DEF file to the Visual C++ DLL project file</li> <li>Added platform-independent pixel format selection (not used on Mac OS X)</li>
<li>Added a rudimentary joystick API testing example</li> <li>Added support and symbols for several additional keys, including Windows/Command keys, Pause, Caps Lock and Menu</li>
<li>Added conservative value clamping to <code>glfwOpenWindowHint</code></li>
<li>Added a number of test programs mostly useful to developers of GLFW</li>
<li>Added error messages and graceful failure to example programs</li>
<li>Added Cocoa port for Mac OS X 10.5 Leopard and later</li>
<li>Added vsync to all relevant example programs</li>
<li>Added a rudimentary OpenGL 3.2+ core profile example program</li>
<li>Updated Pascal (formerly Delphi) bindings to support more compilers</li>
<li>Clarified and expanded the User's Guide and Reference Manual</li>
<li>Fixed a number of compiler warnings in the example programs</li>
<li>OpenGL version is now only parsed once, at window creation time</li>
<li>Changed <code>glfwSwapBuffers</code> to call <code>glfwPollEvents</code> <em>after</em> buffer swap</li>
<li>Changed all comments in public header file to plain C style</li> <li>Changed all comments in public header file to plain C style</li>
<li>Removed all deprecated platforms</li> <li>Removed the <code>keytest</code> example program, as it was superseded by the <code>events</code> test</li>
<li>[X11] Added <code>x11-distro-install</code> install target, intended for packagers</li> <li>Removed deprecated AmigaOS and DOS ports</li>
<li>[X11] Removed support for GLX version 1.3 and below</li> <li>Removed all FPS counters from example programs</li>
<li>Removed all unmaintained language bindings</li>
<li>Removed support for Pelles C</li>
<li>Removed broken Microsoft Visual C++ 6.0 build path</li>
<li>[X11] Added <code>x11-dist-install</code> install target, intended for packagers of GLFW</li>
<li>[X11] Added <code>x11-dist-clean</code> build target, intended for developers of GLFW</li>
<li>[X11] Added support for <code>GLX_SGIX_fbconfig</code></li>
<li>[X11] Added support for user-specified compilation flags via <code>CFLAGS</code></li>
<li>[X11] Added documentation of configuration macros</li>
<li>[X11] Implemented support for <code>GLFW_SYSTEM_KEYS</code></li>
<li>[X11] Improved configuration and makefile creation logic</li>
<li>[X11] Removed support for GLX version 1.2 and below</li>
<li>[X11] Removed unnecessary calls to XSync</li>
<li>[X11] Removed use of legacy window style atoms</li>
<li>[X11] Bugfix: Repeated keys would sometimes leak through despite key repeat being disabled</li>
<li>[X11] Bugfix: Fullscreen window resizing would cause color buffer clearing without taking framebuffer objects into account</li>
<li>[X11] Bugfix: AltGr was not reported as right Alt</li>
<li>[X11] Bugfix: Window colormap was not freed</li>
<li>[X11] Bugfix: Close callback was called for <code>glfwCloseWindow</code></li>
<li>[X11] Bugfix: Misspelt struct member in XF86VidMode code path</li> <li>[X11] Bugfix: Misspelt struct member in XF86VidMode code path</li>
<li>[MacOSX] Bugfix: Key repeat events were ignored on 10.5 Leopard</li> <li>[X11] Bugfix: Window decorations would not appear using certain versions of Compiz on Intel hardware</li>
<li>[X11] Bugfix: Numeric keypad key symbols would change depending on Num Lock state</li>
<li>[X11] Bugfix: Hidden cursor position snapped back when halfway from window center to edge</li>
<li>[X11] Bugfix: Not properly verifying that the window was mapped before making certain calls caused a <code>BadMatch</code> error</li>
<li>[X11] Bugfix: The response to <code>_NET_WM_PING</code> events was malformed</li>
<li>[X11] Bugfix: Hidden cursor mode interfered with other applications when GLFW window was unfocused</li>
<li>[X11] Bugfix: The invisible cursor objects used for hidden cursor mode were not freed</li>
<li>[X11] Bugfix: EWMH-compliant window managers were incorrectly detected</li>
<li>[X11] Bugfix: The EWMH code path for fullscreen windows did not present the window using <code>_NET_ACTIVE_WINDOW</code></li>
<li>[X11] Bugfix: The EWMH code path for fullscreen windows did not send a <code>_NET_WM_STATE</code> client message</li>
<li>[Carbon] Added Universal Binary build targets for all examples</li>
<li>[Carbon] Renamed MacOSX port to Carbon</li>
<li>[Carbon] Removed support for 10.2 Jaguar</li>
<li>[Carbon] Deprecated Carbon port</li>
<li>[Carbon] Bugfix: Using the Dock or menu Quit command did not call the close callback</li>
<li>[Carbon] Bugfix: Key repeat events were not caught on 10.5 Leopard</li>
<li>[Carbon] Bugfix: Certain keys were not reported</li>
<li>[Carbon] Bugfix: Missing <code>-m32</code> flag caused build failure on 10.6 Snow Leopard</li>
<li>[Carbon] Bugfix: Missing <code>-mmacosx-version-min</code> flag caused build failure on 10.5 Leopard</li>
<li>[Carbon] Bugfix: <code>glfwOpenWindow</code> did not call <code>glClear</code></li>
<li>[Win32] Added Visual C++ project files for all examples and test programs</li>
<li>[Win32] Removed iterative context re-creation attempts for FSAA sample count</li>
<li>[Win32] Bugfix: The Visual C++ GLFW DLL project file did not use the correct DEF file</li>
<li>[Win32] Bugfix: WGL extensions were not detected and/or used correctly</li>
<li>[Win32] Bugfix: Improper use of wParam for <code>WM_SYSCOMMAND</code></li> <li>[Win32] Bugfix: Improper use of wParam for <code>WM_SYSCOMMAND</code></li>
<li>[Win32] Bugfix: Derivatives of stream.c not cleaned up by compile.bat</li> <li>[Win32] Bugfix: Derivatives of stream.c were not cleaned up by compile.bat</li>
<li>[Win32] Bugfix: Pointer for <code>GetExtensionsStringARB</code> was not initialized</li> <li>[Win32] Bugfix: Pointer for <code>GetExtensionsStringARB</code> was not initialized</li>
<li>[Win32] Bugfix: Updated API version in makefiles</li> <li>[Win32] Bugfix: Makefiles contained the wrong GLFW API version</li>
<li>[Win32] Bugfix: Numeric keypad key symbols would change depending on Num Lock state</li>
<li>[Win32] Bugfix: <code>DllMain</code> performed a number of forbidden actions (by calling <code>glfwTerminate</code>)</li>
</ul> </ul>
<h3>2.6</h3> <h3>v2.6</h3>
<ul> <ul>
<li>Added <code>GLFW_FSAA_SAMPLES</code> multi-sampling hint</li> <li>Added <code>GLFW_FSAA_SAMPLES</code> multisampling hint</li>
<li>Added <code>GLFW_WINDOW_NO_RESIZE</code> hint for non-resizable windows</li> <li>Added <code>GLFW_WINDOW_NO_RESIZE</code> hint for non-resizable windows</li>
<li>Added install targets for all Unix-like build targets</li> <li>Added install targets for all Unix-like build targets</li>
<li>Added <code>glfwReadMemoryImage</code> function for creating a <li>Added <code>glfwReadMemoryImage</code> function for creating a <code>GLFWImage</code> object from an image file in a memory buffer</li>
<code>GLFWImage</code> object from an image file in a memory buffer</li> <li>Added <code>glfwLoadMemoryTexture2D</code> function for decoding an image file in a memory buffer into a texture</li>
<li>Added <code>glfwLoadMemoryTexture2D</code> function for decoding an image <li>Added <code>glfwLoadTextureImage2D</code> function for loading a <code>GLFWImage</code> object into a texture</li>
file in a memory buffer into a texture</li>
<li>Added <code>glfwLoadTextureImage2D</code> function for loading a
<code>GLFWImage</code> object into a texture</li>
<li>Added cross-compilation support for MinGW under a Unix-like host</li> <li>Added cross-compilation support for MinGW under a Unix-like host</li>
<li>D bindings updated and all examples ported to modern D</li> <li>D bindings updated and all examples ported to modern D</li>
<li>Delphi bindings updated to reflect API additions</li> <li>Delphi bindings updated to reflect API additions</li>
<li>Bugfix: The interaction between key repeat and window focus code caused duplicate presses</li> <li>Bugfix: The interaction between key repeat and window focus code caused duplicate presses</li>
<li>Bugfix: The mouse position was not properly updated when re-enabling the mouse cursor</li> <li>Bugfix: The mouse position was not properly updated when re-enabling the mouse cursor</li>
<li>[Win32] Added pkgconfig file generation for Cygwin</li> <li>[Win32] Added pkg-config file generation for Cygwin</li>
<li>[Win32] Added version number to window class name</li> <li>[Win32] Added version number to window class name</li>
<li>[Win32] Added optional loading of user provided window icon resource</li> <li>[Win32] Added optional loading of user provided window icon resource</li>
<li>[Win32] Bugfix: Very small sleep periods were forced to higher value</li> <li>[Win32] Bugfix: Very small sleep periods were forced to higher value</li>
@ -335,32 +366,29 @@ native version of GLFW.</p>
<li>[X11] Added building of shared library</li> <li>[X11] Added building of shared library</li>
<li>[X11] Added <a href="http://tronche.com/gui/x/icccm/">ICCCM</a> WM fullscreen hints</li> <li>[X11] Added <a href="http://tronche.com/gui/x/icccm/">ICCCM</a> WM fullscreen hints</li>
<li>[X11] Added support for the <code>_NET_WM_PING</code> protocol</li> <li>[X11] Added support for the <code>_NET_WM_PING</code> protocol</li>
<li>[X11] Added pkgconfig file generation</li> <li>[X11] Added pkg-config file generation</li>
<li>[X11] Added setting of WM size hints</li> <li>[X11] Added setting of WM size hints</li>
<li>[X11] Bugfix: Removed assembly RDTSC timing code</li> <li>[X11] Bugfix: Removed assembly RDTSC timing code</li>
<li>[X11] Bugfix: Window re-opening now works properly (including fullscreen windows)</li> <li>[X11] Bugfix: Window re-opening now works properly (including fullscreen windows)</li>
<li>[X11] Bugfix: Potential crash bug in video mode matching code</li> <li>[X11] Bugfix: Potential crash bug in video mode matching code</li>
<li>[X11] Bugfix: Static buffers imposed an invisible limit on reported video mode count</li> <li>[X11] Bugfix: Static buffers imposed an invisible limit on reported video mode count</li>
<li>[X11] Bugfix: Interaction with certain window managers when setting input <li>[X11] Bugfix: Interaction with certain window managers when setting input focus would cause termination with a BadMatch error</li>
focus would cause termination with a BadMatch error</li>
<li>[X11] Bugfix: Keypad keys did not trigger the character callback</li> <li>[X11] Bugfix: Keypad keys did not trigger the character callback</li>
<li>[MacOSX] Added pkgconfig file generation</li> <li>[MacOSX] Added pkg-config file generation</li>
<li>[MacOSX] Added building of shared library</li> <li>[MacOSX] Added building of shared library</li>
<li>[MacOSX] Added building of Universal Binary libraries</li> <li>[MacOSX] Added building of Universal Binary libraries</li>
<li>[MacOSX] Replaced fullscreen code path with CGL version</li> <li>[MacOSX] Replaced fullscreen code path with CGL version</li>
<li>[MacOSX] Bugfix: Binaries without bundles or resource forks now interact <li>[MacOSX] Bugfix: Binaries without bundles or resource forks now interact properly with the WM</li>
properly with the WM</li>
<li>[MacOSX] Bugfix: Replaced Carbon event time source with <code>gettimeofday</code></li> <li>[MacOSX] Bugfix: Replaced Carbon event time source with <code>gettimeofday</code></li>
<li>[MacOSX] Bugfix: Added code to minimize the dreaded OpenGL application startup jump</li> <li>[MacOSX] Bugfix: Added code to minimize the dreaded OpenGL application startup jump</li>
<li>[MacOSX] Bugfix: Fixed broken implementation of <li>[MacOSX] Bugfix: Fixed broken implementation of <code>glfwSetMousePos</code> for windowed mode</li>
<code>glfwSetMousePos</code> for windowed mode</li>
<li>[MacOSX] Bugfix: Fixed broken implementation of hidden cursor</li> <li>[MacOSX] Bugfix: Fixed broken implementation of hidden cursor</li>
<li>[MacOSX] Bugfix: Capturing all displays and not just the main one</li> <li>[MacOSX] Bugfix: Capturing all displays and not just the main one</li>
<li>[AmigaOS] Obsoleted platform due to lack of maintainer and community interest</li> <li>[AmigaOS] Obsoleted platform due to lack of maintainer and community interest</li>
<li>[DOS] Obsoleted platform due to lack of maintainer and community interest</li> <li>[DOS] Obsoleted platform due to lack of maintainer and community interest</li>
</ul> </ul>
<h3>2.5</h3> <h3>v2.5</h3>
<ul> <ul>
<li>Added the function glfwWaitEvents</li> <li>Added the function glfwWaitEvents</li>
<li>Added window close callback, which enables a program to prevent a user <li>Added window close callback, which enables a program to prevent a user
@ -395,7 +423,7 @@ native version of GLFW.</p>
timing on Centrino systems)</li> timing on Centrino systems)</li>
</ul> </ul>
<h3>2.4.2</h3> <h3>v2.4.2</h3>
<ul> <ul>
<li>Preliminary native Mac OS X support (via the Carbon interface)</li> <li>Preliminary native Mac OS X support (via the Carbon interface)</li>
<li>Preliminary DOS support (DJGPP + Mesa)</li> <li>Preliminary DOS support (DJGPP + Mesa)</li>
@ -403,7 +431,7 @@ native version of GLFW.</p>
GLFW license), so now GLFW is OSI Certified</li> GLFW license), so now GLFW is OSI Certified</li>
<li>Rewrote the GLFW documentation in LaTeX, meaning several improvements <li>Rewrote the GLFW documentation in LaTeX, meaning several improvements
(both visual and practical)</li> (both visual and practical)</li>
<li>Added the <b>support</b> folder to the distribution, which includes <li>Added the <code>support</code> folder to the distribution, which includes
support for various languages</li> support for various languages</li>
<li>[Win32] Added OpenWatcom compiler support (thanks Sebastian <li>[Win32] Added OpenWatcom compiler support (thanks Sebastian
Schuberth!)</li> Schuberth!)</li>
@ -421,7 +449,7 @@ native version of GLFW.</p>
<li>[X11] Hopefully more robust configuration script (compile.sh)</li> <li>[X11] Hopefully more robust configuration script (compile.sh)</li>
<li>[X11] Bugfix: When mouse cursor is hidden, mouse sensitivity is no <li>[X11] Bugfix: When mouse cursor is hidden, mouse sensitivity is no
longer degraded</li> longer degraded</li>
<li>[X11] Bugfix: Source files EOL was PC style (CR/LF) in 2.4.1 (blame <li>[X11] Bugfix: Source files EOL was PC style (CR/LF) in v2.4.1 (blame
my WinCVS configuration)</li> my WinCVS configuration)</li>
<li>[X11] Bugfix: When a GLFW window is closed, input focus is properly <li>[X11] Bugfix: When a GLFW window is closed, input focus is properly
released</li> released</li>
@ -436,7 +464,7 @@ native version of GLFW.</p>
all parameters (except for GLFW_ACCELERATED)</li> all parameters (except for GLFW_ACCELERATED)</li>
</ul> </ul>
<h3>2.4.1</h3> <h3>v2.4.1</h3>
<ul> <ul>
<li>Added AmigaOS support (preliminary)</li> <li>Added AmigaOS support (preliminary)</li>
<li>GLFW for the X Window System now works under Mac OS X</li> <li>GLFW for the X Window System now works under Mac OS X</li>
@ -446,7 +474,7 @@ native version of GLFW.</p>
<li>[X11] Bugfix: GLFW should now compile with Kylix</li> <li>[X11] Bugfix: GLFW should now compile with Kylix</li>
</ul> </ul>
<h3>2.4</h3> <h3>v2.4</h3>
<ul> <ul>
<li>Major source code rearrangement - much code is now shared between <li>Major source code rearrangement - much code is now shared between
different platforms, and it should be easier to port GLFW to new different platforms, and it should be easier to port GLFW to new
@ -454,10 +482,10 @@ native version of GLFW.</p>
<li>Added a Unicode keyboard text input interface (CharCallback)</li> <li>Added a Unicode keyboard text input interface (CharCallback)</li>
<li>Keyboard key input is now slightly more internationalized: GLFW now <li>Keyboard key input is now slightly more internationalized: GLFW now
uses 8-bit ISO-8859-1 encoding for keys representing printable uses 8-bit ISO-8859-1 encoding for keys representing printable
characters (e.g. &quot;&Ouml;&quot;, &quot;&#167;&quot;, etc.), as characters (e.g. &quot;&Ouml;&quot;, &quot;&#167;&quot;, etc), as
opposed to the previous 7-bit US-ASCII encoding</li> opposed to the previous 7-bit US-ASCII encoding</li>
<li>Added more key constants (F13-F25, keypad '=')</li> <li>Added more key constants (F13-F25, keypad '=')</li>
<li>Added an enable/disable switch for automatic event polling from <li>Added an enable/disable swicth for automatic event polling from
glfwSwapBuffers</li> glfwSwapBuffers</li>
<li>[X11] Added support for sysctl for querying the number of processors <li>[X11] Added support for sysctl for querying the number of processors
in the system (if POSIX sysconf is not supported)</li> in the system (if POSIX sysconf is not supported)</li>
@ -471,7 +499,7 @@ native version of GLFW.</p>
compilers (e.g. .NET) - Thanks Tim Little!</li> compilers (e.g. .NET) - Thanks Tim Little!</li>
</ul> </ul>
<h3>2.3.2</h3> <h3>v2.3.2</h3>
<ul> <ul>
<li>Removed the silly limitation of 100 threads (the thread information <li>Removed the silly limitation of 100 threads (the thread information
is now kept in a linked list)</li> is now kept in a linked list)</li>
@ -483,7 +511,7 @@ native version of GLFW.</p>
and 'make x11-gcc' should now really force GCC)</li> and 'make x11-gcc' should now really force GCC)</li>
</ul> </ul>
<h3>2.3.1</h3> <h3>v2.3.1</h3>
<ul> <ul>
<li>[X11] A minimalist configuration script was added that solves the <li>[X11] A minimalist configuration script was added that solves the
issue with glXGetProcAddressARB, and unifies all Unix/X11 Makefiles issue with glXGetProcAddressARB, and unifies all Unix/X11 Makefiles
@ -491,7 +519,7 @@ native version of GLFW.</p>
examples)</li> examples)</li>
</ul> </ul>
<h3>2.3</h3> <h3>v2.3</h3>
<ul> <ul>
<li>Added OpenGL stereo rendering support</li> <li>Added OpenGL stereo rendering support</li>
<li>Added a function for parsing the OpenGL version string <li>Added a function for parsing the OpenGL version string
@ -499,7 +527,7 @@ native version of GLFW.</p>
<li>[x86] Bugfix: Hopefully the CPU core clock dependent timer RDTSC will <li>[x86] Bugfix: Hopefully the CPU core clock dependent timer RDTSC will
never be used on CPUs with variable core frequencies anymore</li> never be used on CPUs with variable core frequencies anymore</li>
<li>[X11] Bugfix: GLFW could create stereo rendering capable windows, <li>[X11] Bugfix: GLFW could create stereo rendering capable windows,
even if it was not requested (GLFW 2.2.x did not support selection even if it was not requested (GLFW v2.2.x did not support selection
of stereo rendering)</li> of stereo rendering)</li>
<li>[X11] Bugfix: glfwGetProcAddress returned NULL on most systems (even <li>[X11] Bugfix: glfwGetProcAddress returned NULL on most systems (even
on those that supported glXGetProcAddressARB). Now GLFW assumes that on those that supported glXGetProcAddressARB). Now GLFW assumes that
@ -508,7 +536,7 @@ native version of GLFW.</p>
know if you have any related problems).</li> know if you have any related problems).</li>
</ul> </ul>
<h3>2.2.3</h3> <h3>v2.2.3</h3>
<ul> <ul>
<li>Bugfix: Checking for GL_SGIS_generate_mipmap is more robust</li> <li>Bugfix: Checking for GL_SGIS_generate_mipmap is more robust</li>
<li>Bugfix: glfwLoadTexture2D will now fail if no window is opened</li> <li>Bugfix: glfwLoadTexture2D will now fail if no window is opened</li>
@ -521,7 +549,7 @@ native version of GLFW.</p>
pong3d should work on 16-bit displays).</li> pong3d should work on 16-bit displays).</li>
</ul> </ul>
<h3>2.2.2</h3> <h3>v2.2.2</h3>
<ul> <ul>
<li>[Win32] Bugfix: Windows did not always get focus (this was a tough <li>[Win32] Bugfix: Windows did not always get focus (this was a tough
one!)</li> one!)</li>
@ -530,12 +558,12 @@ native version of GLFW.</p>
<li>[X11] Bugfix: Linux joystick Y axis positions were reversed</li> <li>[X11] Bugfix: Linux joystick Y axis positions were reversed</li>
</ul> </ul>
<h3>2.2.1</h3> <h3>v2.2.1</h3>
<ul> <ul>
<li>[X11] Added joystick support for Linux</li> <li>[X11] Added joystick support for Linux</li>
</ul> </ul>
<h3>2.2</h3> <h3>v2.2</h3>
<ul> <ul>
<li>Added joystick support (only supported under Windows so far)</li> <li>Added joystick support (only supported under Windows so far)</li>
<li>Added joystick controls to pong3d.c (only 3 more lines of code)</li> <li>Added joystick controls to pong3d.c (only 3 more lines of code)</li>
@ -563,7 +591,7 @@ native version of GLFW.</p>
segmentation faults if no X server is available</li> segmentation faults if no X server is available</li>
</ul> </ul>
<h3>2.1</h3> <h3>v2.1</h3>
<ul> <ul>
<li>Added image and texture loading capabilities (support for the TGA <li>Added image and texture loading capabilities (support for the TGA
file format at the moment)</li> file format at the moment)</li>
@ -606,7 +634,7 @@ native version of GLFW.</p>
<li>[XFree86] Bugfix: Undesired video mode changes are now prevented</li> <li>[XFree86] Bugfix: Undesired video mode changes are now prevented</li>
</ul> </ul>
<h3>2.0.3</h3> <h3>v2.0.3</h3>
<ul> <ul>
<li>Added precise CPU cycle based timing support (RDTSC) for x86 <li>Added precise CPU cycle based timing support (RDTSC) for x86
CPUs (under both Windows and Unix)</li> CPUs (under both Windows and Unix)</li>
@ -615,7 +643,7 @@ native version of GLFW.</p>
supported flag for CC, so it was removed from the CFLAGS list)</li> supported flag for CC, so it was removed from the CFLAGS list)</li>
</ul> </ul>
<h3>2.0.2</h3> <h3>v2.0.2</h3>
<ul> <ul>
<li>Added a makefile option for building for X11 with 'cc' rather than <li>Added a makefile option for building for X11 with 'cc' rather than
'gcc' (useful for IRIX users for instance).</li> 'gcc' (useful for IRIX users for instance).</li>
@ -628,7 +656,7 @@ native version of GLFW.</p>
versions of GLFW would not compile under IRIX).</li> versions of GLFW would not compile under IRIX).</li>
</ul> </ul>
<h3>2.0.1</h3> <h3>v2.0.1</h3>
<ul> <ul>
<li>glfwTerminate() will now be called automatically upon normal program <li>glfwTerminate() will now be called automatically upon normal program
termination (using atexit())</li> termination (using atexit())</li>
@ -636,12 +664,12 @@ native version of GLFW.</p>
focus.</li> focus.</li>
<li>[Win32] Bugfix: Top level Makefile did not work under Windows <li>[Win32] Bugfix: Top level Makefile did not work under Windows
9x.</li> 9x.</li>
<li>[Win32] Bugfix: NULL declaration in glfw.h was not MSVC 7.x <li>[Win32] Bugfix: NULL declaratoin in glfw.h was not MSVC 7.x
compatible.</li> compatible.</li>
<li>[X11] Bugfix: GLFW would not build with C++ (e.g. g++).</li> <li>[X11] Bugfix: GLFW would not build with C++ (e.g. g++).</li>
</ul> </ul>
<h3>2.0</h3> <h3>v2.0</h3>
<ul> <ul>
<li>GLFW is no longer a single source file, but an entire link library.</li> <li>GLFW is no longer a single source file, but an entire link library.</li>
<li>Added multi threading support.</li> <li>Added multi threading support.</li>
@ -651,170 +679,189 @@ native version of GLFW.</p>
<li>Some bugfixes.</li> <li>Some bugfixes.</li>
</ul> </ul>
<h3>1.0.2</h3> <h3>v1.0.2</h3>
<ul> <ul>
<li>Improved fullscreen functionality.</li> <li>Improved fullscreen functionality.</li>
<li>Added fullscreen support for X11.</li> <li>Added fullscreen support for X11.</li>
</ul> </ul>
<h3>1.0.1</h3> <h3>v1.0.1</h3>
<ul> <ul>
<li>Added support for the X Window System.</li> <li>Added support for the X Window System.</li>
<li>Fixed bugs.</li> <li>Fixed bugs.</li>
</ul> </ul>
<h3>1.0.0</h3> <h3>v1.0.0</h3>
<ul> <ul>
<li>First release.</li> <li>First release.</li>
<li>Only supported Windows.</li> <li>Only supported Windows.</li>
</ul> </ul>
<a name="sec6"> <a name="structure">
<h2>6. Directory structure of the GLFW distribution</h2> <h2>6. Directory structure of the GLFW distribution</h2>
<p>Here is an overview of the directory structure of the GLFW distribution: <p>Here is an overview of the directory structure of the GLFW distribution:
<table> <p>
<tr class="header"> <table border=0 cellspacing=0>
<td>Directory</td> <tr valign="top"><td width=100><code>docs</code></td><td>&nbsp;</td><td>GLFW manuals in PDF format</td></tr>
<td>Contents</td> <tr valign="top"><td><code>examples</code></td><td>&nbsp;</td><td>Several example programs in C</td></tr>
</tr> <tr valign="top"><td><code>include</code></td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;GL</code></td><td>&nbsp;</td><td>Here is the GLFW C/C++ include file</td></tr>
<td><code>docs</code></td> <tr valign="top"><td><code>lib</code></td><td>&nbsp;</td><td>The source code for GLFW</td></tr>
<td>GLFW manuals in PDF format</td> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;cocoa</code></td><td>&nbsp;</td><td>Mac OS X/Cocoa specific implementation</td></tr>
</tr> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;win32</code></td><td>&nbsp;</td><td>Windows specific implementation</td></tr>
<tr> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;x11</code></td><td>&nbsp;</td><td>Unix/X11 specific implementation</td></tr>
<td><code>examples</code></td> <tr valign="top"><td><code>support</code></td><td>&nbsp;</td><td>&nbsp;</td></tr>
<td>Several example programs in C</td> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;d</code></td><td>&nbsp;</td><td>D support</td></tr>
</tr> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;msvc90</code></td><td>&nbsp;</td><td>Project files for Visual C++ 9.0</td></tr>
<tr> <tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;pascal</code></td><td>&nbsp;</td><td>Pascal support</td></tr>
<td><code>include/GL</code></td> <tr valign="top"><td><code>tests</code></td><td>&nbsp;</td><td>Several test programs in C</td></tr>
<td>The GLFW C/C++ header file</td>
</tr>
<tr>
<td><code>lib</code></td>
<td>The source code for GLFW</td>
</tr>
<tr>
<td><code>lib/macosx</code>
<td>Mac OS X-specific code</td>
</tr>
<tr>
<td><code>lib/win32</code>
<td>Windows-specific code</td>
</tr>
<tr>
<td><code>lib/x11</code></td>
<td>Unix/X11-specific code</td>
</tr>
</table> </table>
<a name="sec7"> <a name="contact">
<h2>7. Contacting the project</h2> <h2>7. Contacting the project</h2>
<p>The official GLFW web site can be found here: <a <p>The official website for GLFW is <a href="http://www.glfw.org/">glfw.org</a>.
href="http://glfw.sourceforge.net/">http://glfw.sourceforge.net/</a>. It It contains the latest version of GLFW, news and other information that is
contains the latest version of GLFW, news and other information that is useful useful for OpenGL development.</p>
for OpenGL development.</p>
<p>If you have questions related to the use of GLFW, we have a <a <p>If you have questions related to the use of GLFW, we have a
href="https://sourceforge.net/forum/forum.php?forum_id=247562">user's web <a href="https://sourceforge.net/forum/forum.php?forum_id=247562">user's web forum</a>,
forum</a>, and a <a and a
href="https://lists.sourceforge.net/lists/listinfo/glfw-user">user's mailing <a href="https://lists.sourceforge.net/lists/listinfo/glfw-user">user's mailing list</a>
list</a> on SF.net, and the IRC channel <code>#glfw</code> on <a on SF.net, and the registered IRC channel <code>#glfw</code> on
href="http://freenode.net/">Freenode</a>.</p> <a href="http://freenode.net/">Freenode</a>.</p>
<p>If you have a bug to report or a feature you'd like to request, please file <p>If you have a bug to report, a patch to submit or a feature you'd like to
it in the <a href="http://sourceforge.net/tracker/?group_id=72569">SF.net request, please file it in one of the
trackers</a>.</p> <a href="http://sourceforge.net/tracker/?group_id=72569">GLFW trackers</a> on SF.net.</p>
Finally, if you're interested in helping out with the development of GLFW or Finally, if you're interested in helping out with the development of
porting it to your favorite platform, we have a <a GLFW or porting it to your favorite platform, we have a
href="https://lists.stacken.kth.se/mailman/listinfo/glfw-dev">developer's <a href="https://lists.stacken.kth.se/mailman/listinfo/glfw-dev">developer's mailing list</a>,
mailing list</a>, or you could join us on <code>#glfw</code>. or you could join us on <code>#glfw</code>.
<a name="sec8"> <a name="credits">
<h2>8. Acknowledgements</h2> <h2>8. Acknowledgements</h2>
<p>GLFW would not be what it is today without the help from: <p>GLFW exists because people around the world donated their time and lent
their skills. Special thanks go out to:</p>
<ul> <ul>
<li>Marcus Geelnard, the original author and long-time maintainer of GLFW, <li>Bobyshev Alexander and Martins Mozeiko, for the original proposal of
without whose brilliant work none of this would have happened.</li><br> an FSAA hint and their work on the Win32 implementation of FSAA</li>
<li>Robin Leffmann, for his work on Mac OS X and other platforms, and his
invaluable support.</li><br>
<li>Keith Bauer, for his invaluable help with porting and maintaining GLFW on <li>Keith Bauer, for his invaluable help with porting and maintaining GLFW on
Mac OS X, and for his many ideas.</li><br> Mac OS X, and for his many ideas</li>
<li>Ozzy @ <a href="http://www.orkysquad.org">Orkysquad</a>, <li>Jarrod Davis, for the Delphi port of GLFW</li>
for his dedication to GLFW, for debugging my source, and for his
valuable experience with game development.</li><br> <li>Olivier Delannoy, for the initial implementation of FSAA support on
X11, cross-compiling support for MinGW and general extreme usefulness</li>
<li>Paul R. Deppe, who helped with Cygwin support, and made an
adaption of <a href="http://plib.sourceforge.net/">PLIB</a>
so that it can use GLFW (instead of GLUT)</li>
<li>Jonathan Dummer, for submitting a patch fixing an input bug on Win32 and
adding logic for the GLFW_ICON resource</li>
<li>Gerald Franz, who made GLFW compile under IRIX, and supplied patches
for the X11 keyboard translation routine</li>
<li>Marcus Geelnard, the original author and long-time maintainer of GLFW,
without whose brilliant work none of this would have happened</li>
<li>Stefan Gustavson, for quick and thorough testing of GLFW on many and
varied operating systems and hardware configurations</li>
<li>Sylvain Hellegouarch, for support, bug reports and testing</li>
<li>Alex Holkner, for writing the code from which the Compiz/Intel fix was
stolen</li>
<li>Toni Jovanoski, for helping with the MASM32 port of GLFW, and
supplying the example program and fixed OpenGL and GLU bindings for
MASM32</li>
<li>Cameron King, for reporting a hidden cursor mouse bug on X11</li>
<li>Peter Knut, for his many and detailed reports of difficult to find input
bugs</li>
<li>Robin Leffmann, for his work on Mac OS X and other platforms, and his
invaluable support</li>
<li>Glenn Lewis, for helping out with support for the D programming
language</li>
<li>Tristam MacDonald, for his bug reports and feedback on the Cocoa port</li>
<li>David Medlock, for doing the initial Lua port</li>
<li>Kenneth Miller, for his many and detailed bug reports on Win32</li>
<li>Jeff Molofee, the author of the excellent OpenGL tutorials at <a <li>Jeff Molofee, the author of the excellent OpenGL tutorials at <a
href="http://nehe.gamedev.net/">NeHe Productions</a>. href="http://nehe.gamedev.net/">NeHe Productions</a>.
Much of the Windows code of GLFW was originally based on Jeff's Much of the Windows code of GLFW was originally based on Jeff's
code.</li><br> code</li>
<li>Douglas C. Schmidt and Irfan Pyarali, for their excellent article <a <li>Douglas C. Schmidt and Irfan Pyarali, for their excellent article
href="http://www.cs.wustl.edu/~schmidt/win32-cv-1.html">Strategies for <a href="http://www.cs.wustl.edu/~schmidt/win32-cv-1.html">Strategies for Implementing POSIX Condition Variables on Win32</a></li>
Implementing POSIX Condition Variables on Win32</a>, which was the basis for
the Win32 condition variable implementation in GLFW.</li><br>
<li>Bobyshev Alexander and Martins Mozeiko, for the original proposal of <li>Sebastian Schuberth, for the OpenWatcom makefiles</li>
an FSAA hint and their work on the Win32 implementation of FSAA.</li><br>
<li>Gerald Franz, who made GLFW compile under IRIX, and supplied patches <li>Matt Sealey, for helping with the MorphOS port</li>
for the X11 keyboard translation routine.</li><br>
<li>Steve Sexton, for reporting an input bug in the Carbon port</li>
<li>Dmitri Shuralyov, for support, bug reports and testing</li>
<li>Daniel Skorupski, for reporting a bug in the Win32 DEF file</li>
<li>Bradley Smith, for his updates of the D support and his ports of the <li>Bradley Smith, for his updates of the D support and his ports of the
remaining examples to the D language.</li><br> remaining examples to the D language</li>
<li>Olivier Delannoy, for the initial implementation of FSAA support on <li>Julian Squires, for submitting a patch for a bug in the key repeat logic on X11</li>
X11, cross-compiling support for MinGW and general extreme usefulness.</li>
<li>Glenn Lewis, for helping out with support for the D programming <li>Johannes Stein, for maintaining the Pascal bindings</li>
language.</li><br>
<li>David Medlock, for doing the initial Lua port.</li><br> <li>Samuli Tuomola, for support, bug reports and testing</li>
<li>Frank Wille, for helping me with the AmigaOS port and making GLFW <li>Frank Wille, for helping with the AmigaOS port and making GLFW
compile under IRIX 5.3.</li><br> compile under IRIX 5.3</li>
<li>Matt Sealey, for helping me with the MorphOS port.</li><br /> <li>Santi Zupancic, for support, bug reports and testing</li>
<li>Paul R. Deppe, who helped me with Cygwin support, and made an <li>Lasse Öörni, for submitting patches for the input code of the Win32 and X11 ports</li>
adaption of <a href="http://plib.sourceforge.net/">PLIB</a>
so that it can use GLFW (instead of GLUT).</li><br />
<li>Jarrod Davis, for the Delphi port of GLFW.</li><br /> <li>Дмитри Малышев, for the idea of a GLFW_NO_GLU macro</li>
<li>Toni Jovanoski, for helping me with the MASM32 port of GLFW, and <li>blanco, for submitting a patch for a deprecation bug in the Cocoa port</li>
supplying the example program and fixed OpenGL and GLU bindings for
MASM32.</li><br />
<li>Sebastian Schuberth, for the OpenWatcom makefiles.</li><br /> <li>heromyth, for reporting a bug in the D bindings</li>
<li>Dmitri Shuralyov, Samuli Tuomola, Santi Zupancic, Sylvain <li>Ozzy @ <a href="http://www.orkysquad.org">Orkysquad</a>,
Hellegouarch, and many others for support, bug reports and for his dedication to GLFW, for debugging my source, and for his
testing.</li><br /> valuable experience with game development</li>
<li>Дмитри Малышев, for the idea of a GLFW_NO_GLU macro.</li><br /> <li>Peoro, for reporting a bug in the <code>_NET_WM_PING</code> response</li>
<li>TTK-Bandit, for submitting a number of input patches adding many missing
keys to the Win32 and X11 ports</li>
<li>All the unmentioned and anonymous contributors in the GLFW community, for
bug reports, patches, feedback and encouragement</li>
<li><a href="http://www.opengl.org/">OpenGL.org</a>, and all the people on <li><a href="http://www.opengl.org/">OpenGL.org</a>, and all the people on
the discussion forums there that have provided help during the development of the discussion forums there that have provided help during the development of
GLFW.</li><br /> GLFW</li>
<li>The <a href="http://msdn.microsoft.com/library/">MSDN Online Library</a>,
which was used extensively for Windows development.</li><br />
<li>All the feedback from the GLFW community - thank you!</li><br />
<li>Everyone we forgot to thank - thank you!</li><br />
</ul> </ul>
</body> </body>