| 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% GLFW Reference Manual | 
						
						
						
						
							 | 
							
								 | 
							
							% API Version: 3.0 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							 | 
						
						
						
						
							 | 
							
								 | 
							
							% Document class | 
						
						
						
						
							 | 
							
								 | 
							
							\documentclass[a4paper,11pt,oneside]{report} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% Document title and API version | 
						
						
						
						
							 | 
							
								 | 
							
							\newcommand{\glfwdoctype}[1][0]{Reference Manual} | 
						
						
						
						
							 | 
							
								 | 
							
							\newcommand{\glfwapiver}[1][0]{3.0} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% Common document settings and macros | 
						
						
						
						
							 | 
							
								 | 
							
							\input{glfwdoc.sty} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% PDF specific document settings | 
						
						
						
						
							 | 
							
								 | 
							
							\hypersetup{pdftitle={GLFW Reference Manual}} | 
						
						
						
						
							 | 
							
								 | 
							
							\hypersetup{pdfauthor={Camilla Berglund}} | 
						
						
						
						
							 | 
							
								 | 
							
							\hypersetup{pdfkeywords={GLFW,OpenGL,reference,manual}} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% Document body | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{document} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\pagestyle{plain} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% Title page | 
						
						
						
						
							 | 
							
								 | 
							
							\glfwmaketitle | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% Summary, trademarks and table of contents | 
						
						
						
						
							 | 
							
								 | 
							
							\pagenumbering{roman} | 
						
						
						
						
							 | 
							
								 | 
							
							\setcounter{page}{1} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% Summary and Trademarks | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\chapter*{Summary} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							This document is primarily a function reference manual for the \GLFW\ API. | 
						
						
						
						
							 | 
							
								 | 
							
							For a description of how to use \GLFW\ you should refer to the | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{GLFW Users Guide}. | 
						
						
						
						
							 | 
							
								 | 
							
							\vspace{5cm} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\large | 
						
						
						
						
							 | 
							
								 | 
							
							Trademarks | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\small | 
						
						
						
						
							 | 
							
								 | 
							
							OpenGL and IRIX are registered trademarks of Silicon Graphics, Inc.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							Microsoft and Windows are registered trademarks of Microsoft Corporation.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							Mac OS is a registered trademark of Apple Computer, Inc.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							Linux is a registered trademark of Linus Torvalds.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							FreeBSD is a registered trademark of Wind River Systems, Inc.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							Solaris is a trademark of Sun Microsystems, Inc.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							UNIX is a registered trademark of The Open Group.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							X Window System is a trademark of The Open Group.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							POSIX is a trademark of IEEE.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							Truevision, TARGA and TGA are registered trademarks of Truevision, Inc.\linebreak | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							All other trademarks mentioned in this document are the property of their respective owners. | 
						
						
						
						
							 | 
							
								 | 
							
							\normalsize | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% Table of contents | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\tableofcontents | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% List of tables | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\listoftables | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% Document chapters starts here... | 
						
						
						
						
							 | 
							
								 | 
							
							\pagenumbering{arabic} | 
						
						
						
						
							 | 
							
								 | 
							
							\setcounter{page}{1} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\pagestyle{fancy} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% Introduction | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\chapter{Introduction} | 
						
						
						
						
							 | 
							
								 | 
							
							\thispagestyle{fancy} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ is a portable API (Application Program Interface) that handles | 
						
						
						
						
							 | 
							
								 | 
							
							operating system specific tasks related to \OpenGL\ programming. While | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ in general is portable, easy to use and often results in tidy and | 
						
						
						
						
							 | 
							
								 | 
							
							compact code, the operating system specific mechanisms that are required | 
						
						
						
						
							 | 
							
								 | 
							
							to set up and manage an \OpenGL\ window are quite the opposite. \GLFW\ tries | 
						
						
						
						
							 | 
							
								 | 
							
							to remedy this by providing the following functionality: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							\item Opening and managing an \OpenGL\ context and its associated window. | 
						
						
						
						
							 | 
							
								 | 
							
							\item Keyboard, mouse and joystick input. | 
						
						
						
						
							 | 
							
								 | 
							
							\item A high precision timer. | 
						
						
						
						
							 | 
							
								 | 
							
							\item Support for querying and using \OpenGL\ extensions. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							All this functionality is implemented as a set of easy-to-use functions, | 
						
						
						
						
							 | 
							
								 | 
							
							which makes it possible to write an \OpenGL\ application framework in just a | 
						
						
						
						
							 | 
							
								 | 
							
							few lines of code. The \GLFW\ API looks and behaves the same on all supported | 
						
						
						
						
							 | 
							
								 | 
							
							platforms, making it very simple to port \GLFW\ based \OpenGL\ applications to | 
						
						
						
						
							 | 
							
								 | 
							
							a variety of platforms. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Currently supported platforms are: | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							\item Microsoft Windows\textsuperscript{\textregistered} (32-bit only). | 
						
						
						
						
							 | 
							
								 | 
							
							\item Unix\textsuperscript{\textregistered} or Unix<EFBFBD>-like systems running | 
						
						
						
						
							 | 
							
								 | 
							
							resonably a modern version of the X Window | 
						
						
						
						
							 | 
							
								 | 
							
							System\texttrademark\footnote{X11.app on Mac OS X is not supported due to its | 
						
						
						
						
							 | 
							
								 | 
							
							incomplete implementation of GLXFBConfigs} e.g. | 
						
						
						
						
							 | 
							
								 | 
							
							Linux\textsuperscript{\textregistered}, | 
						
						
						
						
							 | 
							
								 | 
							
							FreeBSD\textsuperscript{\textregistered} and Solaris\texttrademark (32- and | 
						
						
						
						
							 | 
							
								 | 
							
							64-bit). | 
						
						
						
						
							 | 
							
								 | 
							
							\item Mac OS\textsuperscript{\textregistered} X, using Cocoa\footnote{Joystick | 
						
						
						
						
							 | 
							
								 | 
							
							input is not yet supported on Mac OS X.} (32- and 64-bit). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% GLFW Operation | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\chapter{GLFW Operation Overview} | 
						
						
						
						
							 | 
							
								 | 
							
							\thispagestyle{fancy} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{The GLFW Window} | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ only supports having one window open at a time. The window can be either | 
						
						
						
						
							 | 
							
								 | 
							
							a normal desktop window or a fullscreen window. The latter is completely | 
						
						
						
						
							 | 
							
								 | 
							
							undecorated, without window borders, and covers the entire monitor. With a | 
						
						
						
						
							 | 
							
								 | 
							
							fullscreen window, it is also possible to select which video mode to use. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When a window is opened, an \OpenGL\ rendering context is created and | 
						
						
						
						
							 | 
							
								 | 
							
							attached to the entire client area of the window. When the window is closed, | 
						
						
						
						
							 | 
							
								 | 
							
							the \OpenGL\ rendering context is detached and destroyed. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Through a window it is possible to receive user input in the form of | 
						
						
						
						
							 | 
							
								 | 
							
							keyboard and mouse input. User input is exposed through the \GLFW\ API | 
						
						
						
						
							 | 
							
								 | 
							
							primarily via a set of callback functions. Also, \GLFW\ stores most user input | 
						
						
						
						
							 | 
							
								 | 
							
							as internal state that can be queried through different \GLFW\ API functions | 
						
						
						
						
							 | 
							
								 | 
							
							(for instance it is possible to query the position of the mouse cursor with the | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetMousePos} function). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							As for user input, it is possible to receive information about window | 
						
						
						
						
							 | 
							
								 | 
							
							state changes, such as window resize or close events, through callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions. It is also possible to query some kinds of information about the | 
						
						
						
						
							 | 
							
								 | 
							
							window information using \GLFW\ API functions. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{The GLFW Event Loop} | 
						
						
						
						
							 | 
							
								 | 
							
							The \GLFW\ event loop is an open loop, which means that it is up to the | 
						
						
						
						
							 | 
							
								 | 
							
							programmer to design the loop. Events are processed by calling specific | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ functions, which in turn query the system for new input and window | 
						
						
						
						
							 | 
							
								 | 
							
							events and reports these events back to the program through callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The programmer decides when to call the event processing functions and | 
						
						
						
						
							 | 
							
								 | 
							
							when to abort the event loop. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							In pseudo language, a typical event loop might look like this: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							  repeat until window is closed | 
						
						
						
						
							 | 
							
								 | 
							
							  { | 
						
						
						
						
							 | 
							
								 | 
							
							      poll events | 
						
						
						
						
							 | 
							
								 | 
							
							      draw OpenGL graphics | 
						
						
						
						
							 | 
							
								 | 
							
							  } | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							There are two ways to handle events in \GLFW : | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							  \item Block the event loop while waiting for new events. | 
						
						
						
						
							 | 
							
								 | 
							
							  \item Poll for new events and continue the loop regardless of whether there | 
						
						
						
						
							 | 
							
								 | 
							
							        are any new events or not. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{itemize} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The first method is useful for interactive applications that do not | 
						
						
						
						
							 | 
							
								 | 
							
							need to refresh the \OpenGL\ display unless the user interacts with the | 
						
						
						
						
							 | 
							
								 | 
							
							application through user input. Typical applications are CAD software | 
						
						
						
						
							 | 
							
								 | 
							
							and other kinds of editors. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The second method is useful for applications that need to refresh the | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ display constantly, regardless of user input, such as games, | 
						
						
						
						
							 | 
							
								 | 
							
							demos, 3D animations, screen savers and so on. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Callback Functions} | 
						
						
						
						
							 | 
							
								 | 
							
							Using callback functions can be a good method for receiving up to date | 
						
						
						
						
							 | 
							
								 | 
							
							information about window state and user input. When a window has been | 
						
						
						
						
							 | 
							
								 | 
							
							opened, it is possible to register custom callback functions that will | 
						
						
						
						
							 | 
							
								 | 
							
							be called when certain events occur. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Callback functions are called from any of the event polling functions | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSwapBuffers}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Callback functions should \emph{only} be used to gather information. Since | 
						
						
						
						
							 | 
							
								 | 
							
							the callback functions are called from within the internal \GLFW\ event | 
						
						
						
						
							 | 
							
								 | 
							
							polling loops, they should not call any \GLFW\ functions that might | 
						
						
						
						
							 | 
							
								 | 
							
							result in considerable \GLFW\ state changes, nor stall the event polling | 
						
						
						
						
							 | 
							
								 | 
							
							loop for a lengthy period of time. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							In other words, most or all \OpenGL\ rendering should be called from the | 
						
						
						
						
							 | 
							
								 | 
							
							main application event loop, not from any of the \GLFW\ callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions. Also, the only \GLFW\ functions that may be safely called from | 
						
						
						
						
							 | 
							
								 | 
							
							callback functions are the different Get functions (e.g. | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetKey}, \textbf{glfwGetTime}, \textbf{glfwGetWindowParam} | 
						
						
						
						
							 | 
							
								 | 
							
							etc.). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% Function Reference | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\chapter{Function Reference} | 
						
						
						
						
							 | 
							
								 | 
							
							\thispagestyle{fancy} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{GLFW Initialization and Termination} | 
						
						
						
						
							 | 
							
								 | 
							
							Before any other \GLFW\ functions can be used, \GLFW\ must be initialized to | 
						
						
						
						
							 | 
							
								 | 
							
							ensure proper functionality, and before a program terminates \GLFW\ should be | 
						
						
						
						
							 | 
							
								 | 
							
							terminated in order to free allocated resources, memory, etc. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwInit} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwInit(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							If the function succeeds, GL\_TRUE is returned.\\ | 
						
						
						
						
							 | 
							
								 | 
							
							If the function fails, GL\_FALSE is returned. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							The glfwInit function initializes \GLFW. No other \GLFW\ functions may be | 
						
						
						
						
							 | 
							
								 | 
							
							called before this function has succeeded. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							This function may take several seconds to complete on some systems, while | 
						
						
						
						
							 | 
							
								 | 
							
							on other systems it may take only a fraction of a second to complete. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							This function registers a function calling \textbf{glfwTerminate} with the | 
						
						
						
						
							 | 
							
								 | 
							
							atexit facility of the C library. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							On Mac OS X, this function will change the current directory of the application | 
						
						
						
						
							 | 
							
								 | 
							
							to the \textbf{Contents/Resources} subdirectory of the application's bundle, if | 
						
						
						
						
							 | 
							
								 | 
							
							present.  For more information on bundles, see the Bundle Programming Guide | 
						
						
						
						
							 | 
							
								 | 
							
							provided by Apple. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwTerminate} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwTerminate(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function terminates \GLFW. Among other things it closes the window, if | 
						
						
						
						
							 | 
							
								 | 
							
							open.  This function should be called before a program exits. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetVersion} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwGetVersion(int* major, int* minor, int* rev) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{major}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the major version number. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{minor}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the minor version number. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{rev}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the revision. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the major and minor version numbers and the revision | 
						
						
						
						
							 | 
							
								 | 
							
							for the currently linked \GLFW\ library. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the \GLFW\ library version. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Window Handling} | 
						
						
						
						
							 | 
							
								 | 
							
							The primary purpose of \GLFW\ is to provide a simple interface to | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ context creation and window management. \GLFW\ supports one window at | 
						
						
						
						
							 | 
							
								 | 
							
							a time, which can be either a normal desktop window or a fullscreen window. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwOpenWindow} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwOpenWindow(int width, int height, | 
						
						
						
						
							 | 
							
								 | 
							
							                   int redbits, int greenbits, int bluebits, | 
						
						
						
						
							 | 
							
								 | 
							
							                   int alphabits, int depthbits, int stencilbits, | 
						
						
						
						
							 | 
							
								 | 
							
							                   int mode) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{width}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The width of the window. If \textit{width} is zero, it will be | 
						
						
						
						
							 | 
							
								 | 
							
							  calculated as ${width=\frac{4}{3}height}$, if \textit{height} is not | 
						
						
						
						
							 | 
							
								 | 
							
							  zero. If both \textit{width} and \textit{height} are zero, | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{width} will be set to 640. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{height}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The height of the window. If \textit{height} is zero, it will be | 
						
						
						
						
							 | 
							
								 | 
							
							  calculated as ${height=\frac{3}{4}width}$, if \textit{width} is not | 
						
						
						
						
							 | 
							
								 | 
							
							  zero. If both \textit{width} and \textit{height} are zero, | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{height} will be set to 480. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{redbits, greenbits, bluebits}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The number of bits to use for each color component of the color buffer | 
						
						
						
						
							 | 
							
								 | 
							
							  (0 means default color depth). For instance, setting \textit{redbits=5, | 
						
						
						
						
							 | 
							
								 | 
							
							  greenbits=6 and bluebits=5} will create a 16-<EFBFBD>bit color buffer, if | 
						
						
						
						
							 | 
							
								 | 
							
							  possible. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{alphabits}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The number of bits to use for the alpha channel of the color buffer (0 means | 
						
						
						
						
							 | 
							
								 | 
							
							  no alpha channel). | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{depthbits}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The number of bits to use for the depth buffer (0 means no depth | 
						
						
						
						
							 | 
							
								 | 
							
							  buffer). | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{stencilbits}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  The number of bits to use for the stencil buffer (0 means no stencil | 
						
						
						
						
							 | 
							
								 | 
							
							  buffer). | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{mode}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Selects which type of \OpenGL\ window to use. \textit{mode} must be | 
						
						
						
						
							 | 
							
								 | 
							
							  either GLFW\_WINDOW, which will generate a normal desktop window, or | 
						
						
						
						
							 | 
							
								 | 
							
							  GLFW\_FULLSCREEN, which will generate a window which covers the entire | 
						
						
						
						
							 | 
							
								 | 
							
							  screen. When GLFW\_FULLSCREEN is selected, the video mode will be | 
						
						
						
						
							 | 
							
								 | 
							
							  changed to the resolution that closest matches the \textit{width} and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{height} parameters. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							If the function succeeds, GL\_TRUE is returned.\\ | 
						
						
						
						
							 | 
							
								 | 
							
							If the function fails, GL\_FALSE is returned. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function opens a window that best matches the parameters given to the | 
						
						
						
						
							 | 
							
								 | 
							
							function. How well the resulting window matches the desired window depends | 
						
						
						
						
							 | 
							
								 | 
							
							mostly on the available hardware and \OpenGL\ drivers. In general, | 
						
						
						
						
							 | 
							
								 | 
							
							selecting a fullscreen mode has better chances of generating a close match | 
						
						
						
						
							 | 
							
								 | 
							
							of buffers and channel sizes than does a normal desktop window, since \GLFW\ | 
						
						
						
						
							 | 
							
								 | 
							
							can freely select from all the available video modes. A desktop window is | 
						
						
						
						
							 | 
							
								 | 
							
							normally restricted to the video mode of the desktop. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							For additional control of window properties, see | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindowHint}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							In fullscreen mode the mouse cursor is hidden by default and the | 
						
						
						
						
							 | 
							
								 | 
							
							screensaver is prohibited from starting. In windowed mode the mouse | 
						
						
						
						
							 | 
							
								 | 
							
							cursor is visible and screensavers are allowed to start. To change the | 
						
						
						
						
							 | 
							
								 | 
							
							visibility of the mouse cursor, use \textbf{glfwEnable} or | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwDisable} with the argument GLFW\_MOUSE\_CURSOR. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							In order to determine the actual properties of an opened window, use | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetWindowParam} and \textbf{glfwGetWindowSize} (or | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSetWindowSizeCallback}). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							On Microsoft Windows, if the executable has an icon resource named | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_ICON}, it will be set as the icon for the window.  If no such | 
						
						
						
						
							 | 
							
								 | 
							
							icon is present, the \textbf{IDI\_WINLOGO} icon will be used instead. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							On Mac OS X the \GLFW\ window has no icon, but programs using \GLFW\ will use | 
						
						
						
						
							 | 
							
								 | 
							
							the application bundle's icon.  For more information on bundles, see the Bundle | 
						
						
						
						
							 | 
							
								 | 
							
							Programming Guide provided by Apple. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							For information on how the availability of different platform-specific | 
						
						
						
						
							 | 
							
								 | 
							
							extensions affect the behavior of this function, see appendix | 
						
						
						
						
							 | 
							
								 | 
							
							\ref{chap:compatibility}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|l|p{7.0cm}|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name}            & \textbf{Default} & \textbf{Description} \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_REFRESH\_RATE      & 0                & Vertical monitor refresh rate in Hz (only used for fullscreen windows). Zero means system default.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_RED\_BITS   & 0                & Number of bits for the red channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_GREEN\_BITS & 0                & Number of bits for the green channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_BLUE\_BITS  & 0                & Number of bits for the blue channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_ALPHA\_BITS & 0                & Number of bits for the alpha channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_AUX\_BUFFERS       & 0                & Number of auxiliary buffers.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_STEREO             & GL\_FALSE        & Specify if stereo rendering should be supported (can be GL\_TRUE or GL\_FALSE).\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_WINDOW\_NO\_RESIZE & GL\_FALSE        & Specify whether the window can be resized by the user (not used for fullscreen windows).\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_FSAA\_SAMPLES      & 0                & Number of samples to use for the multisampling buffer. Zero disables multisampling.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MAJOR & 1	        & Major number of the desired minimum \OpenGL\ version.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MINOR & 1	        & Minor number of the desired minimum \OpenGL\ version.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_FORWARD\_COMPAT & GL\_FALSE   & Specify whether the \OpenGL\ context should be forward-compatible (i.e. disallow legacy functionality). | 
						
						
						
						
							 | 
							
								 | 
							
							                                              This should only be used when requesting \OpenGL\ version 3.0 or above.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_DEBUG\_CONTEXT & GL\_FALSE    & Specify whether a debug context should be created.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_PROFILE    & 0                & The \OpenGL\ profile the context should implement, or zero to let the system choose. | 
						
						
						
						
							 | 
							
								 | 
							
							                                              Available profiles are GLFW\_OPENGL\_CORE\_PROFILE and GLFW\_OPENGL\_COMPAT\_PROFILE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Targets for \textbf{glfwOpenWindowHint}} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:winhints} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwOpenWindowHint} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwOpenWindowHint(int target, int hint) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{target}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Can be any of the tokens in the table \ref{tab:winhints}. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{hint}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  An integer giving the value of the corresponding token (see table | 
						
						
						
						
							 | 
							
								 | 
							
							  \ref{tab:winhints}). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets additional properties for a window that is to be opened. | 
						
						
						
						
							 | 
							
								 | 
							
							For a hint to be registered, the function must be called before calling | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow}. When the \textbf{glfwOpenWindow} function is | 
						
						
						
						
							 | 
							
								 | 
							
							called, any hints that were registered with the \textbf{glfwOpenWindowHint} | 
						
						
						
						
							 | 
							
								 | 
							
							function are used for setting the corresponding window properties, and | 
						
						
						
						
							 | 
							
								 | 
							
							then all hints are reset to their default values. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							In order to determine the actual properties of an opened window, use | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetWindowParam} (after the window has been opened). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_STEREO is a hard constraint. If stereo rendering is requested, but no | 
						
						
						
						
							 | 
							
								 | 
							
							stereo rendering capable pixel formats / framebuffer configs are available, | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow} will fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The GLFW\_REFRESH\_RATE hint should be used with caution. Most | 
						
						
						
						
							 | 
							
								 | 
							
							systems have default values for monitor refresh rates that are optimal | 
						
						
						
						
							 | 
							
								 | 
							
							for the specific system. Specifying the refresh rate can override these | 
						
						
						
						
							 | 
							
								 | 
							
							settings, which can result in suboptimal operation. The monitor may be | 
						
						
						
						
							 | 
							
								 | 
							
							unable to display the resulting video signal, or in the worst case it may | 
						
						
						
						
							 | 
							
								 | 
							
							even be damaged! | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The GLFW\_WINDOW\_NO\_RESIZE hint applies only to manual resizing by the user. | 
						
						
						
						
							 | 
							
								 | 
							
							A window created with this hint enabled can still be resized by the application | 
						
						
						
						
							 | 
							
								 | 
							
							by calling \textbf{glfwSetWindowSize}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The GLFW\_OPENGL\_VERSION\_MAJOR and GLFW\_OPENGL\_VERSION\_MINOR hints specify | 
						
						
						
						
							 | 
							
								 | 
							
							the \OpenGL\ version that the created context must be compatible with, | 
						
						
						
						
							 | 
							
								 | 
							
							\emph{not} the exact version to use.  It is therefore perfectly safe to use the | 
						
						
						
						
							 | 
							
								 | 
							
							default of version 1.1 for legacy code and you will still get | 
						
						
						
						
							 | 
							
								 | 
							
							backwards-compatible contexts of version 3.0 and above when available. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							To make the behavior of the above version hints consistent across both modern | 
						
						
						
						
							 | 
							
								 | 
							
							and legacy drivers, \textbf{glfwOpenWindow} will fail if the modern creation | 
						
						
						
						
							 | 
							
								 | 
							
							mechanism (as specified in \textbf{WGL\_ARB\_create\_context} | 
						
						
						
						
							 | 
							
								 | 
							
							and \textbf{GLX\_ARB\_create\_context}) is unavailable \emph{and} the created | 
						
						
						
						
							 | 
							
								 | 
							
							context is of a version lower than the one that was requested. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							At the time of release, the exact meaning of what a "debug context" is (as | 
						
						
						
						
							 | 
							
								 | 
							
							created using the GLFW\_OPENGL\_DEBUG\_CONTEXT hint) has yet to be defined by | 
						
						
						
						
							 | 
							
								 | 
							
							the Khronos ARB WG. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							For information on how the availability of different extensions affect the | 
						
						
						
						
							 | 
							
								 | 
							
							behavior of this function, see appendix \ref{chap:compatibility}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							For full details on the workings of the \OpenGL\ version, forward-compatibility | 
						
						
						
						
							 | 
							
								 | 
							
							and debug hints, see the specifications for \textbf{WGL\_ARB\_create\_context} | 
						
						
						
						
							 | 
							
								 | 
							
							and \textbf{GLX\_ARB\_create\_context}, respectively.  The relevant \GLFW\ | 
						
						
						
						
							 | 
							
								 | 
							
							hints map very closely to their platform-specific counterparts. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwCloseWindow} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwCloseWindow(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function closes an opened window and destroys the associated \OpenGL\ | 
						
						
						
						
							 | 
							
								 | 
							
							context. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowCloseCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowCloseCallback(GLFWwindowclosefun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called when a user requests | 
						
						
						
						
							 | 
							
								 | 
							
							  that the window should be closed, typically by clicking the window close | 
						
						
						
						
							 | 
							
								 | 
							
							  icon (e.g. the cross in the upper right corner of a window under | 
						
						
						
						
							 | 
							
								 | 
							
							  Microsoft Windows), and on Mac OS X also when selecting \textbf{Quit} from | 
						
						
						
						
							 | 
							
								 | 
							
							  the application menu. The function should have the following C language | 
						
						
						
						
							 | 
							
								 | 
							
							  prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{int functionname(void);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function. The | 
						
						
						
						
							 | 
							
								 | 
							
							  return value of the callback function indicates wether or not the window | 
						
						
						
						
							 | 
							
								 | 
							
							  close action should continue. If the function returns GL\_TRUE, the | 
						
						
						
						
							 | 
							
								 | 
							
							  window will be closed. If the function returns GL\_FALSE, the window | 
						
						
						
						
							 | 
							
								 | 
							
							  will not be closed. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for window close events. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Window close events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The \OpenGL\ context is still valid when this function is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Note that the window close callback function is not called when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwCloseWindow} is called, but only when the close request | 
						
						
						
						
							 | 
							
								 | 
							
							comes from the window manager. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Do \emph{not} call \textbf{glfwCloseWindow} from a window close | 
						
						
						
						
							 | 
							
								 | 
							
							callback function. Close the window by returning GL\_TRUE from the | 
						
						
						
						
							 | 
							
								 | 
							
							function. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowTitle} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowTitle(const char* title) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{title}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a  null terminated ISO~8859-1 (8-bit Latin~1) string that | 
						
						
						
						
							 | 
							
								 | 
							
							  holds the title of the window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function changes the title of the opened window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The title property of a window is often used in situations other than for | 
						
						
						
						
							 | 
							
								 | 
							
							the window title, such as the title of an application icon when it is in | 
						
						
						
						
							 | 
							
								 | 
							
							iconified state. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowSize} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowSize(int width, int height) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{width}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Width of the window. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{height}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Height of the window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function changes the size of an opened window. The \textit{width} and | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{height} parameters denote the size of the client area of the | 
						
						
						
						
							 | 
							
								 | 
							
							window (i.e. excluding any window borders and decorations). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							If the window is in fullscreen mode, the video mode will be changed to a | 
						
						
						
						
							 | 
							
								 | 
							
							resolution that closest matches the width and height parameters (the | 
						
						
						
						
							 | 
							
								 | 
							
							number of color bits will not be changed). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							This function has no effect if the window is iconified. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The \OpenGL\ context is guaranteed to be preserved after calling | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSetWindowSize}, even if the video mode is changed. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							This function is not affected by the value of the GLFW\_WINDOW\_NO\_RESIZE | 
						
						
						
						
							 | 
							
								 | 
							
							hint. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowPos} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowPos(int x, int y) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{x}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Horizontal position of the window, relative to the upper left corner | 
						
						
						
						
							 | 
							
								 | 
							
							  of the desktop. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{y}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Vertical position of the window, relative to the upper left corner of | 
						
						
						
						
							 | 
							
								 | 
							
							  the desktop. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function changes the position of an opened window. It does not have | 
						
						
						
						
							 | 
							
								 | 
							
							any effect on a fullscreen window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							This function has no effect if the window is iconified. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The behaviour of this function on multi-monitor systems is ill-defined. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetWindowSize} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwGetWindowSize(int* width, int* height) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{width}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the width of the window. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{height}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the height of the window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The current width and height of the opened window is returned in the | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{width} and \textit{height} parameters, respectively. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function is used for determining the size of an opened window. | 
						
						
						
						
							 | 
							
								 | 
							
							The returned values are dimensions of the client area of the window | 
						
						
						
						
							 | 
							
								 | 
							
							(i.e. excluding any window borders and decorations). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Even if the size of a fullscreen window does not change once the window | 
						
						
						
						
							 | 
							
								 | 
							
							has been opened, it does not necessarily have to be the same as the size | 
						
						
						
						
							 | 
							
								 | 
							
							that was requested using \textbf{glfwOpenWindow}. Therefor it is wise to | 
						
						
						
						
							 | 
							
								 | 
							
							use this function to determine the true size of the window once it has | 
						
						
						
						
							 | 
							
								 | 
							
							been opened. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowSizeCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowSizeCallback(GLFWwindowsizefun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time the | 
						
						
						
						
							 | 
							
								 | 
							
							  window size changes. The function should have the following C language | 
						
						
						
						
							 | 
							
								 | 
							
							  prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int width, int height);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{width} and \textit{height} are the dimensions of the window | 
						
						
						
						
							 | 
							
								 | 
							
							  client area. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for window size change events. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Window size changes are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When a callback function is set, it will be called with the current window | 
						
						
						
						
							 | 
							
								 | 
							
							size before this function returns. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwIconifyWindow} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwIconifyWindow(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							Iconify a window. If the window is in fullscreen mode, then the desktop | 
						
						
						
						
							 | 
							
								 | 
							
							video mode will be restored. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwRestoreWindow} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwRestoreWindow(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							Restore an iconified window. If the window that is restored is in | 
						
						
						
						
							 | 
							
								 | 
							
							fullscreen mode, then the fullscreen video mode will be restored. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|p{9.5cm}|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name}            & \textbf{Description} \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENED             & GL\_TRUE if window is opened, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACTIVE             & GL\_TRUE if window has focus, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ICONIFIED          & GL\_TRUE if window is iconified, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCELERATED        & GL\_TRUE if window is hardware accelerated, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_RED\_BITS          & Number of bits for the red color component.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_GREEN\_BITS        & Number of bits for the green color component.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_BLUE\_BITS         & Number of bits for the blue color component.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ALPHA\_BITS        & Number of bits for the alpha buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_DEPTH\_BITS        & Number of bits for the depth buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_STENCIL\_BITS      & Number of bits for the stencil buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_REFRESH\_RATE      & Vertical monitor refresh rate in Hz. Zero indicates an unknown or a default refresh rate.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_RED\_BITS   & Number of bits for the red channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_GREEN\_BITS & Number of bits for the green channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_BLUE\_BITS  & Number of bits for the blue channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCUM\_ALPHA\_BITS & Number of bits for the alpha channel of the accumulation buffer.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_AUX\_BUFFERS       & Number of auxiliary buffers.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_STEREO             & GL\_TRUE if stereo rendering is supported, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_WINDOW\_NO\_RESIZE & GL\_TRUE if the window cannot be resized by the user, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_FSAA\_SAMPLES      & Number of multisampling buffer samples. Zero indicated multisampling is disabled.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MAJOR & Major number of the actual version of the context.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MINOR & Minor number of the actual version of the context.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_FORWARD\_COMPAT & GL\_TRUE if the context is forward-compatible, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_DEBUG\_CONTEXT & GL\_TRUE if the context is a debug context.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_PROFILE    & The profile implemented by the context, or zero.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Window parameters for \textbf{glfwGetWindowParam}} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:winparams} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetWindowParam} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetWindowParam(int param) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{param}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A token selecting which parameter the function should return (see | 
						
						
						
						
							 | 
							
								 | 
							
							  table \ref{tab:winparams}). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the value the window parameter corresponding to the token | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{param}.  Table \ref{tab:winparams} lists the available tokens. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function is used for acquiring various properties of an opened window. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_ACCELERATED is only supported under Windows. Other systems will | 
						
						
						
						
							 | 
							
								 | 
							
							always return GL\_TRUE. Under Windows, GLFW\_ACCELERATED means that the | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ renderer is a 3rd party renderer, rather than the fallback | 
						
						
						
						
							 | 
							
								 | 
							
							Microsoft software \OpenGL\ renderer. In other words, it is not a real | 
						
						
						
						
							 | 
							
								 | 
							
							guarantee that the \OpenGL\ renderer is actually hardware accelerated. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MAJOR and GLFW\_OPENGL\_VERSION\_MINOR always return the | 
						
						
						
						
							 | 
							
								 | 
							
							same values as those returned by \textbf{glfwGetGLVersion}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSwapBuffers(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function swaps the back and front color buffers of the window. If | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_AUTO\_POLL\_EVENTS is enabled (which is the default), | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents} is called after swapping the front and back | 
						
						
						
						
							 | 
							
								 | 
							
							buffers. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							In previous versions of \GLFW , \textbf{glfwPollEvents} was called | 
						
						
						
						
							 | 
							
								 | 
							
							\emph{before} buffer swap.  This was changed in order to decrease input | 
						
						
						
						
							 | 
							
								 | 
							
							lag but may affect code that relied on the former behavior. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSwapInterval} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSwapInterval(int interval) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{interval}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Minimum number of monitor vertical retraces between each buffer swap | 
						
						
						
						
							 | 
							
								 | 
							
							  performed by \textbf{glfwSwapBuffers}. If \textit{interval} is zero, | 
						
						
						
						
							 | 
							
								 | 
							
							  buffer swaps will not be synchronized to the vertical refresh of the | 
						
						
						
						
							 | 
							
								 | 
							
							  monitor (also known as 'VSync off'). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function selects the minimum number of monitor vertical retraces that | 
						
						
						
						
							 | 
							
								 | 
							
							should occur between two buffer swaps. If the selected swap interval is | 
						
						
						
						
							 | 
							
								 | 
							
							one, the rate of buffer swaps will never be higher than the vertical | 
						
						
						
						
							 | 
							
								 | 
							
							refresh rate of the monitor. If the selected swap interval is zero, the | 
						
						
						
						
							 | 
							
								 | 
							
							rate of buffer swaps is only limited by the speed of the software and | 
						
						
						
						
							 | 
							
								 | 
							
							the hardware. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							This function will only have an effect on hardware and drivers that support | 
						
						
						
						
							 | 
							
								 | 
							
							user selection of the swap interval.  ATI drivers in particular have been known | 
						
						
						
						
							 | 
							
								 | 
							
							to ignore this setting. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetWindowRefreshCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetWindowRefreshCallback(GLFWwindowrefreshfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called when the window client | 
						
						
						
						
							 | 
							
								 | 
							
							  area needs to be refreshed. The function should have the following C | 
						
						
						
						
							 | 
							
								 | 
							
							  language prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(void);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for window refresh events, which occurs when | 
						
						
						
						
							 | 
							
								 | 
							
							any part of the window client area has been damaged, and needs to be repainted | 
						
						
						
						
							 | 
							
								 | 
							
							(for instance, if a part of the window that was previously occluded by another | 
						
						
						
						
							 | 
							
								 | 
							
							window has become visible). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Window refresh events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Modern windowing systems using hardware compositing, such as Aqua, Aero and | 
						
						
						
						
							 | 
							
								 | 
							
							Compiz, very rarely need to refresh the contents of windows, so the specified | 
						
						
						
						
							 | 
							
								 | 
							
							callback will very rarely be called on such systems. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Video Modes} | 
						
						
						
						
							 | 
							
								 | 
							
							Since \GLFW\ supports video mode changes when using a fullscreen window, | 
						
						
						
						
							 | 
							
								 | 
							
							it also provides functionality for querying which video modes are | 
						
						
						
						
							 | 
							
								 | 
							
							supported on a system. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetVideoModes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetVideoModes(GLFWvidmode* list, int maxcount) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{list}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A vector of \textit{GLFWvidmode} structures, which will be filled out | 
						
						
						
						
							 | 
							
								 | 
							
							  by the function. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{maxcount}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Maximum number of video modes that \textit{list} vector can hold. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the number of detected video modes (this number | 
						
						
						
						
							 | 
							
								 | 
							
							will never exceed \textit{maxcount}). The \textit{list} vector is | 
						
						
						
						
							 | 
							
								 | 
							
							filled out with the video modes that are supported by the system. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns a list of supported video modes. Each video mode is | 
						
						
						
						
							 | 
							
								 | 
							
							represented by a \textit{GLFWvidmode} structure, which has the following | 
						
						
						
						
							 | 
							
								 | 
							
							definition: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							typedef struct { | 
						
						
						
						
							 | 
							
								 | 
							
							    int Width, Height; // Video resolution | 
						
						
						
						
							 | 
							
								 | 
							
							    int RedBits;       // Number of red bits | 
						
						
						
						
							 | 
							
								 | 
							
							    int GreenBits;     // Number of green bits | 
						
						
						
						
							 | 
							
								 | 
							
							    int BlueBits;      // Number of blue bits | 
						
						
						
						
							 | 
							
								 | 
							
							} GLFWvidmode; | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The returned list is sorted, first by color depth ($RedBits + GreenBits + | 
						
						
						
						
							 | 
							
								 | 
							
							BlueBits$), and then by resolution ($Width \times Height$), with the | 
						
						
						
						
							 | 
							
								 | 
							
							lowest resolution, fewest bits per pixel mode first. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetDesktopMode} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwGetDesktopMode(GLFWvidmode* mode) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{mode}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a \textit{GLFWvidmode} structure, which will be filled out | 
						
						
						
						
							 | 
							
								 | 
							
							  by the function. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The \textit{GLFWvidmode} structure pointed to by \textit{mode} is filled | 
						
						
						
						
							 | 
							
								 | 
							
							out with the desktop video mode. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the desktop video mode in a \textit{GLFWvidmode} | 
						
						
						
						
							 | 
							
								 | 
							
							structure. See \textbf{glfwGetVideoModes} for a definition of the | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{GLFWvidmode} structure. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The color depth of the desktop display is always reported as the number | 
						
						
						
						
							 | 
							
								 | 
							
							of bits for each individual color component (red, green and blue), even | 
						
						
						
						
							 | 
							
								 | 
							
							if the desktop is not using an RGB or RGBA color format. For instance, an | 
						
						
						
						
							 | 
							
								 | 
							
							indexed 256 color display may report \textit{RedBits} = 3, | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{GreenBits} = 3 and \textit{BlueBits} = 2, which adds up to 8 bits | 
						
						
						
						
							 | 
							
								 | 
							
							in total. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The desktop video mode is the video mode used by the desktop at the time | 
						
						
						
						
							 | 
							
								 | 
							
							the \GLFW\ window was opened, \textit{not} the current video mode (which | 
						
						
						
						
							 | 
							
								 | 
							
							may differ from the desktop video mode if the \GLFW\ window is a | 
						
						
						
						
							 | 
							
								 | 
							
							fullscreen window). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Input Handling} | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ supports three channels of user input: keyboard input, mouse input | 
						
						
						
						
							 | 
							
								 | 
							
							and joystick input. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Keyboard and mouse input can be treated either as events, using callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions, or as state, using functions for polling specific keyboard and | 
						
						
						
						
							 | 
							
								 | 
							
							mouse states. Regardless of which method is used, all keyboard and mouse | 
						
						
						
						
							 | 
							
								 | 
							
							input is collected using window event polling. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Joystick input is asynchronous to the keyboard and mouse input, and does | 
						
						
						
						
							 | 
							
								 | 
							
							not require event polling for keeping up to date joystick information. | 
						
						
						
						
							 | 
							
								 | 
							
							Also, joystick input is independent of any window, so a window does not | 
						
						
						
						
							 | 
							
								 | 
							
							have to be opened for joystick input to be used. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwPollEvents} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwPollEvents(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function is used for polling for events, such as user input and | 
						
						
						
						
							 | 
							
								 | 
							
							window resize events. Upon calling this function, all window states, | 
						
						
						
						
							 | 
							
								 | 
							
							keyboard states and mouse states are updated. If any related callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions are registered, these are called during the call to | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents} is called implicitly from \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							if GLFW\_AUTO\_POLL\_EVENTS is enabled (as it is by default). Thus, if | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSwapBuffers} is called frequently, which is normally the case, | 
						
						
						
						
							 | 
							
								 | 
							
							there is no need to call \textbf{glfwPollEvents}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwWaitEvents} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwWaitEvents(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function is used for waiting for events, such as user input and | 
						
						
						
						
							 | 
							
								 | 
							
							window resize events. Upon calling this function, the calling thread will | 
						
						
						
						
							 | 
							
								 | 
							
							be put to sleep until any event appears in the event queue. When events | 
						
						
						
						
							 | 
							
								 | 
							
							are available, they will be processed just as they are processed by | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							If there are any events in the queue when the function is called, the | 
						
						
						
						
							 | 
							
								 | 
							
							function will behave exactly like \textbf{glfwPollEvents} (i.e. process | 
						
						
						
						
							 | 
							
								 | 
							
							all messages and then return, without blocking the calling thread). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							It is guaranteed that \textbf{glfwWaitEvents} will wake up on any event that | 
						
						
						
						
							 | 
							
								 | 
							
							can be processed by \textbf{glfwPollEvents}. However, \GLFW\ receives many | 
						
						
						
						
							 | 
							
								 | 
							
							events that are only processed internally and the function may behave | 
						
						
						
						
							 | 
							
								 | 
							
							differently on different systems. Do not make any assumptions about when or why | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwWaitEvents} will return. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|l|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name}             & \textbf{Description} \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_\textit{X}     & Letter (\textit{X} can be in the range A..Z)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_\textit{n}     & Number (\textit{n} can be in the range 0..9)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_SPACE          & Space\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_MINUS          & Minus (-)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_EQUAL          & Equal (=)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT\_BRACKET  & Left bracket ([)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT\_BRACKET & Right bracket (])\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_GRAVE\_ACCENT  & Grave accent (`)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_APOSTROPHE     & Apostrophe (')\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_COMMA          & Comma (,)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_PERIOD         & Period (.)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_SEMICOLON      & Semicolon (;)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_SLASH          & Slash ($/$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_BACKSLASH      & Backslash ($\backslash$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_WORLD\_1       & Non-US character no. 1\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_WORLD\_2       & Non-US character no. 2\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption[Key codes for printable keys]{Key codes for printable keys. The keys are named according to the US keyboard layout, but represent physical keys (so for instance, GLFW\_KEY\_Z represents the same physical key, regardless of the system input language).} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:keys1} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|l|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name}             & \textbf{Description} \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_ESCAPE         & Escape\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_F\textit{n}    & Function key \textit{n} (\textit{n} can be in the range 1..25)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_UP             & Cursor up\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_DOWN           & Cursor down\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT           & Cursor left\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT          & Cursor right\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT\_SHIFT    & Left shift key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT\_SHIFT   & Right shift key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT\_CTRL     & Left control key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT\_CTRL    & Right control key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT\_ALT      & Left alternate function key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT\_ALT     & Right alternate function key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LEFT\_SUPER    & Left super key, WinKey, or command key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_RIGHT\_SUPER   & Right super key, WinKey, or command key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_TAB            & Tabulator\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_ENTER          & Enter\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_BACKSPACE      & Backspace\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_INSERT         & Insert\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_DELETE         & Delete\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_PAGE\_UP       & Page up\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_PAGE\_DOWN     & Page down\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_HOME           & Home\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_END            & End\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_\textit{n} & Keypad numeric key \textit{n} (\textit{n} can be in the range 0..9)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_DIVIDE     & Keypad divide ($\div$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_MULTIPLY   & Keypad multiply ($\times$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_SUBTRACT   & Keypad subtract ($-$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_ADD        & Keypad add ($+$)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_DECIMAL    & Keypad decimal (. or ,)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_EQUAL      & Keypad equal (=)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_KP\_ENTER      & Keypad enter\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_NUM\_LOCK      & Num lock\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_CAPS\_LOCK     & Caps lock\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_SCROLL\_LOCK   & Scroll lock\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_PAUSE          & Pause key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_MENU           & Menu key\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Key codes for function keys} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:keys2} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|l|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name}               & \textbf{Description} \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_LEFT   & Left mouse button (button 1) \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_RIGHT  & Right mouse button (button 2) \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_MIDDLE & Middle mouse button (button 3) \\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_\textit{n} & Mouse button \textit{n} (\textit{n} can be in the range 1..8)\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Valid mouse button identifiers} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:mousebuttons} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetKey} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetKey(int key) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{key}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A keyboard key identifier, which can be any of the key codes in tables | 
						
						
						
						
							 | 
							
								 | 
							
							  \ref{tab:keys1} and \ref{tab:keys2}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns GLFW\_PRESS if the key is held down, or GLFW\_RELEASE | 
						
						
						
						
							 | 
							
								 | 
							
							if the key is not held down. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function queries the current state of a specific keyboard key. The | 
						
						
						
						
							 | 
							
								 | 
							
							physical location of each key depends on the system keyboard layout | 
						
						
						
						
							 | 
							
								 | 
							
							setting. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The constant GLFW\_KEY\_SPACE is equal to 32, which is the ISO~8859-1 code | 
						
						
						
						
							 | 
							
								 | 
							
							for space.  This is the only named \GLFW\ key identifier with a value in the | 
						
						
						
						
							 | 
							
								 | 
							
							ISO~8859-1 range. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Not all key codes are supported on all systems. Also, while some keys are | 
						
						
						
						
							 | 
							
								 | 
							
							available on some keyboard layouts, they may not be available on other | 
						
						
						
						
							 | 
							
								 | 
							
							keyboard layouts. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							For systems that do not distinguish between left and right versions of | 
						
						
						
						
							 | 
							
								 | 
							
							modifier keys (shift, alt and control), the left version is used (e.g. | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_KEY\_LSHIFT). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window must be opened for the function to have any effect, and | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) must be called before any keyboard | 
						
						
						
						
							 | 
							
								 | 
							
							events are recorded and reported by \textbf{glfwGetKey}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetMouseButton} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetMouseButton(int button) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{button}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A mouse button identifier, which can be one of the mouse button | 
						
						
						
						
							 | 
							
								 | 
							
							  identifiers listed in table \ref{tab:mousebuttons}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns GLFW\_PRESS if the mouse button is held down, or | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_RELEASE if the mouse button is not held down. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function queries the current state of a specific mouse button. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							A window must be opened for the function to have any effect, and | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) must be called before any mouse button | 
						
						
						
						
							 | 
							
								 | 
							
							events are recorded and reported by \textbf{glfwGetMouseButton}. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_LEFT is equal to GLFW\_MOUSE\_BUTTON\_1. | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_RIGHT is equal to GLFW\_MOUSE\_BUTTON\_2. | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_MIDDLE is equal to GLFW\_MOUSE\_BUTTON\_3. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetMousePos} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwGetMousePos(int* xpos, int* ypos) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{xpos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will be set to the horizontal position of the | 
						
						
						
						
							 | 
							
								 | 
							
							  mouse cursor. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{ypos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will be set to the vertical position of the mouse cursor. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the current mouse cursor position in \textit{xpos} and | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{ypos}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the current mouse position. If the cursor is not | 
						
						
						
						
							 | 
							
								 | 
							
							hidden, the mouse position is the cursor position, relative to the upper | 
						
						
						
						
							 | 
							
								 | 
							
							left corner of the window and with the Y-axis down.  If the cursor is hidden, | 
						
						
						
						
							 | 
							
								 | 
							
							the mouse position is a virtual absolute position, not limited to any | 
						
						
						
						
							 | 
							
								 | 
							
							boundaries except to those implied by the maximum number that can be | 
						
						
						
						
							 | 
							
								 | 
							
							represented by a signed integer. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							A window must be opened for the function to have any effect, and | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) must be called before any mouse | 
						
						
						
						
							 | 
							
								 | 
							
							movements are recorded and reported by \textbf{glfwGetMousePos}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetMousePos} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetMousePos(int xpos, int ypos) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{xpos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Horizontal position of the mouse. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{ypos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Vertical position of the mouse. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function changes the position of the mouse. If the cursor is visible (not | 
						
						
						
						
							 | 
							
								 | 
							
							disabled), the cursor will be moved to the specified position, relative to the | 
						
						
						
						
							 | 
							
								 | 
							
							upper left corner of the window client area and with the Y-axis down.  If the | 
						
						
						
						
							 | 
							
								 | 
							
							cursor is hidden (disabled), only the mouse position that is reported by \GLFW\ | 
						
						
						
						
							 | 
							
								 | 
							
							is changed. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetMouseWheel} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetMouseWheel(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the current mouse wheel position. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the current mouse wheel position. The mouse wheel can | 
						
						
						
						
							 | 
							
								 | 
							
							be thought of as a third mouse axis, which is available as a separate | 
						
						
						
						
							 | 
							
								 | 
							
							wheel or up/down stick on some mice. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							A window must be opened for the function to have any effect, and | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) must be called before any mouse wheel | 
						
						
						
						
							 | 
							
								 | 
							
							movements are recorded and reported by \textbf{glfwGetMouseWheel}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetMouseWheel} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetMouseWheel(int pos) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{pos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Position of the mouse wheel. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function changes the position of the mouse wheel. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetKeyCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetKeyCallback(GLFWkeyfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time a key is | 
						
						
						
						
							 | 
							
								 | 
							
							  pressed or released. The function should have the following C language | 
						
						
						
						
							 | 
							
								 | 
							
							  prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int key, int action);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{key} is a key code (see tables \ref{tab:keys1} and \ref{tab:keys2}), | 
						
						
						
						
							 | 
							
								 | 
							
							  and \textit{action} is either GLFW\_PRESS or GLFW\_RELEASE. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for keyboard key events.  The callback function | 
						
						
						
						
							 | 
							
								 | 
							
							is called every time the state of a single key is changed (from released to | 
						
						
						
						
							 | 
							
								 | 
							
							pressed or vice versa). The reported keys are unaffected by any modifiers (such | 
						
						
						
						
							 | 
							
								 | 
							
							as shift or alt) and each modifier is reported as a separate key. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Keyboard key events are not intended for text input and many languages | 
						
						
						
						
							 | 
							
								 | 
							
							will not be able to be input using it.  Use Unicode character events for | 
						
						
						
						
							 | 
							
								 | 
							
							text input instead. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Keyboard events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetCharCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetCharCallback(GLFWcharfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time a | 
						
						
						
						
							 | 
							
								 | 
							
							  printable character is generated by the keyboard. The function should | 
						
						
						
						
							 | 
							
								 | 
							
							  have the following C language prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int character, int action);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{character} is a Unicode (ISO~10646) character, and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{action} is either GLFW\_PRESS or GLFW\_RELEASE. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for keyboard character events.  The callback | 
						
						
						
						
							 | 
							
								 | 
							
							function is called every time a key that results in a printable Unicode | 
						
						
						
						
							 | 
							
								 | 
							
							character is pressed or released.  Characters are affected by modifiers (such | 
						
						
						
						
							 | 
							
								 | 
							
							as shift or alt). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Character events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Control characters such as tab and carriage return are not reported to | 
						
						
						
						
							 | 
							
								 | 
							
							the character callback function, since they are not part of the Unicode | 
						
						
						
						
							 | 
							
								 | 
							
							character set. Use the key callback function for such events (see | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSetKeyCallback}). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The Unicode character set supports character codes above 255, so never | 
						
						
						
						
							 | 
							
								 | 
							
							cast a Unicode character to an eight bit data type (e.g. the C language | 
						
						
						
						
							 | 
							
								 | 
							
							'char' type) without first checking that the character code is less than | 
						
						
						
						
							 | 
							
								 | 
							
							256. Also note that Unicode character codes 0 to 255 are equal to | 
						
						
						
						
							 | 
							
								 | 
							
							ISO~8859-1 (Latin~1). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetMouseButtonCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetMouseButtonCallback(GLFWmousebuttonfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time a mouse | 
						
						
						
						
							 | 
							
								 | 
							
							  button is pressed or released. The function should have the following C | 
						
						
						
						
							 | 
							
								 | 
							
							  language prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int button, int action);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{button} is a mouse button identifier (see table | 
						
						
						
						
							 | 
							
								 | 
							
							  \ref{tab:mousebuttons} on page \pageref{tab:mousebuttons}), and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{action} is either GLFW\_PRESS or GLFW\_RELEASE. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for mouse button events. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Mouse button events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_LEFT is equal to GLFW\_MOUSE\_BUTTON\_1. | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_RIGHT is equal to GLFW\_MOUSE\_BUTTON\_2. | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_MOUSE\_BUTTON\_MIDDLE is equal to GLFW\_MOUSE\_BUTTON\_3. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetMousePosCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetMousePosCallback(GLFWmouseposfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time the mouse | 
						
						
						
						
							 | 
							
								 | 
							
							  is moved. The function should have the following C language prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int x, int y);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{x} and \textit{y} are the mouse coordinates (see | 
						
						
						
						
							 | 
							
								 | 
							
							  \textbf{glfwGetMousePos} for more information on mouse coordinates). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for mouse motion events. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Mouse motion events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetMouseWheelCallback} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetMouseWheelCallback(GLFWmousewheelfun cbfun) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{cbfun}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to a callback function that will be called every time the mouse | 
						
						
						
						
							 | 
							
								 | 
							
							  wheel is moved. The function should have the following C language | 
						
						
						
						
							 | 
							
								 | 
							
							  prototype: | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  \texttt{void functionname(int pos);} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  Where \textit{functionname} is the name of the callback function, and | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{pos} is the mouse wheel position. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  If \textit{cbfun} is NULL, any previously set callback function | 
						
						
						
						
							 | 
							
								 | 
							
							  will be unset. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the callback for mouse wheel events. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							A window has to be opened for this function to have any effect. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							Mouse wheel events are recorded continuously, but only reported when | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled) is called. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|l|}\hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name} & \textbf{Return value}\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_PRESENT & GL\_TRUE if the joystick is connected, else GL\_FALSE.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_AXES    & Number of axes supported by the joystick.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_BUTTONS & Number of buttons supported by the joystick.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Joystick parameters for \textbf{glfwGetJoystickParam}} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:joyparams} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetJoystickParam} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetJoystickParam(int joy, int param) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{joy}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A joystick identifier, which should be GLFW\_JOYSTICK\_\textit{n}, where | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{n} is in the range 1 to 16. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{param}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A token selecting which parameter the function should return (see table | 
						
						
						
						
							 | 
							
								 | 
							
							  \ref{tab:joyparams}). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns different parameters depending on the value of | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{param}. Table \ref{tab:joyparams} lists valid \textit{param} | 
						
						
						
						
							 | 
							
								 | 
							
							values, and their corresponding return values. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function is used for acquiring various properties of a joystick. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The joystick information is updated every time the function is called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							No window has to be opened for joystick information to be available. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetJoystickPos} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetJoystickPos(int joy, float* pos, int numaxes) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{joy}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A joystick identifier, which should be GLFW\_JOYSTICK\_\textit{n}, where | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{n} is in the range 1 to 16. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{pos}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  An array that will hold the positional values for all requested axes. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{numaxes}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Specifies how many axes should be returned. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the number of actually returned axes. This is the | 
						
						
						
						
							 | 
							
								 | 
							
							minimum of \textit{numaxes} and the number of axes supported by the | 
						
						
						
						
							 | 
							
								 | 
							
							joystick. If the joystick is not supported or connected, the function will | 
						
						
						
						
							 | 
							
								 | 
							
							return 0 (zero). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function queries the current position of one or more axes of a | 
						
						
						
						
							 | 
							
								 | 
							
							joystick. The positional values are returned in an array, where the first | 
						
						
						
						
							 | 
							
								 | 
							
							element represents the first axis of the joystick (normally the X axis). | 
						
						
						
						
							 | 
							
								 | 
							
							Each position is in the range -1.0 to 1.0. Where applicable, the positive | 
						
						
						
						
							 | 
							
								 | 
							
							direction of an axis is right, forward or up, and the negative direction | 
						
						
						
						
							 | 
							
								 | 
							
							is left, back or down. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							If \textit{numaxes} exceeds the number of axes supported by the joystick, | 
						
						
						
						
							 | 
							
								 | 
							
							or if the joystick is not available, the unused elements in the | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{pos} array will be set to 0.0 (zero). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The joystick state is updated every time the function is called, so there | 
						
						
						
						
							 | 
							
								 | 
							
							is no need to call \textbf{glfwPollEvents} or \textbf{glfwWaitEvents} for | 
						
						
						
						
							 | 
							
								 | 
							
							joystick state to be updated. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Use \textbf{glfwGetJoystickParam} to retrieve joystick capabilities, such | 
						
						
						
						
							 | 
							
								 | 
							
							as joystick availability and number of supported axes. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							No window has to be opened for joystick input to be available. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetJoystickButtons} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwGetJoystickButtons(int joy, unsigned char* buttons, | 
						
						
						
						
							 | 
							
								 | 
							
							                            int numbuttons) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{joy}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A joystick identifier, which should be GLFW\_JOYSTICK\_\textit{n}, where | 
						
						
						
						
							 | 
							
								 | 
							
							  \textit{n} is in the range 1 to 16. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{buttons}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  An array that will hold the button states for all requested buttons. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{numbuttons}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Specifies how many buttons should be returned. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the number of actually returned buttons. This is the | 
						
						
						
						
							 | 
							
								 | 
							
							minimum of \textit{numbuttons} and the number of buttons supported by the | 
						
						
						
						
							 | 
							
								 | 
							
							joystick. If the joystick is not supported or connected, the function will | 
						
						
						
						
							 | 
							
								 | 
							
							return 0 (zero). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function queries the current state of one or more buttons of a | 
						
						
						
						
							 | 
							
								 | 
							
							joystick. The button states are returned in an array, where the first | 
						
						
						
						
							 | 
							
								 | 
							
							element represents the first button of the joystick. Each state can be | 
						
						
						
						
							 | 
							
								 | 
							
							either GLFW\_PRESS or GLFW\_RELEASE. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							If \textit{numbuttons} exceeds the number of buttons supported by the | 
						
						
						
						
							 | 
							
								 | 
							
							joystick, or if the joystick is not available, the unused elements in the | 
						
						
						
						
							 | 
							
								 | 
							
							\textit{buttons} array will be set to GLFW\_RELEASE. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The joystick state is updated every time the function is called, so there | 
						
						
						
						
							 | 
							
								 | 
							
							is no need to call \textbf{glfwPollEvents} or \textbf{glfwWaitEvents} for | 
						
						
						
						
							 | 
							
								 | 
							
							joystick state to be updated. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Use \textbf{glfwGetJoystickParam} to retrieve joystick capabilities, such | 
						
						
						
						
							 | 
							
								 | 
							
							as joystick availability and number of supported buttons. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							No window has to be opened for joystick input to be available. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Timing} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetTime} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							double glfwGetTime(void) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the value of the high precision timer. The time is | 
						
						
						
						
							 | 
							
								 | 
							
							measured in seconds, and is returned as a double precision floating point | 
						
						
						
						
							 | 
							
								 | 
							
							value. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the state of a high precision timer. Unless the timer | 
						
						
						
						
							 | 
							
								 | 
							
							has been set by the \textbf{glfwSetTime} function, the time is measured as | 
						
						
						
						
							 | 
							
								 | 
							
							the number of seconds that have passed since \textbf{glfwInit} was called. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							The resolution of the timer depends on which system the program is running | 
						
						
						
						
							 | 
							
								 | 
							
							on. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwSetTime} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwSetTime(double time) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{time}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Time (in seconds) that the timer should be set to. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function sets the current time of the high precision timer to the | 
						
						
						
						
							 | 
							
								 | 
							
							specified time. Subsequent calls to \textbf{glfwGetTime} will be relative | 
						
						
						
						
							 | 
							
								 | 
							
							to this time. The time is given in seconds. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{OpenGL Extension Support} | 
						
						
						
						
							 | 
							
								 | 
							
							One of the great features of \OpenGL\ is its support for extensions, which | 
						
						
						
						
							 | 
							
								 | 
							
							allow independent vendors to supply non-standard functionality in their | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ implementations.  As the mechanism for querying extensions varies | 
						
						
						
						
							 | 
							
								 | 
							
							among systems, \GLFW\ provides an operating system independent interface for | 
						
						
						
						
							 | 
							
								 | 
							
							querying \OpenGL\ version, extensions and entry points. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwExtensionSupported} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							int glfwExtensionSupported(const char* extension) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{extension}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A null terminated ISO~8859-1 string containing the name of an \OpenGL\ | 
						
						
						
						
							 | 
							
								 | 
							
							  extension. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns GL\_TRUE if the extension is supported. Otherwise it | 
						
						
						
						
							 | 
							
								 | 
							
							returns GL\_FALSE. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function does a string search in the list of supported \OpenGL\ | 
						
						
						
						
							 | 
							
								 | 
							
							extensions to find if the specified extension is listed. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							An \OpenGL\ context must be created before this function can be called | 
						
						
						
						
							 | 
							
								 | 
							
							(i.e. an \OpenGL\ window must have been opened with | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow}). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							In addition to checking for \OpenGL\ extensions, \GLFW\ also checks for | 
						
						
						
						
							 | 
							
								 | 
							
							extensions in the operating system ``glue API'', such as WGL extensions | 
						
						
						
						
							 | 
							
								 | 
							
							under Microsoft Windows and GLX extensions under the X Window System. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetProcAddress} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void* glfwGetProcAddress(const char* procname) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{procname}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A null terminated ISO~8859-1 string containing the name of an \OpenGL\ | 
						
						
						
						
							 | 
							
								 | 
							
							  extension function. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the address of the specified \OpenGL\ function, if it | 
						
						
						
						
							 | 
							
								 | 
							
							is available.  Otherwise NULL is returned. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function acquires the pointer to an \OpenGL\ extension function. Some | 
						
						
						
						
							 | 
							
								 | 
							
							(but not all) \OpenGL\ extensions define new API functions, which are | 
						
						
						
						
							 | 
							
								 | 
							
							usually not available through normal linking. It is therefore necessary to | 
						
						
						
						
							 | 
							
								 | 
							
							get access to those API functions at runtime. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							An \OpenGL\ context must be created before this function can be called | 
						
						
						
						
							 | 
							
								 | 
							
							(i.e. an \OpenGL\ window must have been opened with | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow}). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Some systems do not support dynamic function pointer retrieval, in which | 
						
						
						
						
							 | 
							
								 | 
							
							case \textbf{glfwGetProcAddress} will always return NULL. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwGetGLVersion} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwGetGLVersion(int* major, int* minor, int* rev) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{major}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the major version number. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{minor}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the minor version number. | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{rev}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  Pointer to an integer that will hold the revision. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							The function returns the major and minor version numbers and the revision | 
						
						
						
						
							 | 
							
								 | 
							
							for the currently used \OpenGL\ implementation. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							This function returns the \OpenGL\ implementation version. This is a | 
						
						
						
						
							 | 
							
								 | 
							
							convenient function that parses the version number information at the beginning | 
						
						
						
						
							 | 
							
								 | 
							
							of the string returned by calling \texttt{glGetString(~GL\_VERSION~)}. The | 
						
						
						
						
							 | 
							
								 | 
							
							\OpenGL\ version information can be used to determine what functionality is | 
						
						
						
						
							 | 
							
								 | 
							
							supported by the used \OpenGL\ implementation. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							An \OpenGL\ context must be created before this function can be called | 
						
						
						
						
							 | 
							
								 | 
							
							(i.e. an \OpenGL\ window must have been opened with | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow}). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refnotes} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\pagebreak | 
						
						
						
						
							 | 
							
								 | 
							
							\section{Miscellaneous} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\subsection{glfwEnable/glfwDisable} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{C language syntax} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwEnable(int token) | 
						
						
						
						
							 | 
							
								 | 
							
							void glfwDisable(int token) | 
						
						
						
						
							 | 
							
								 | 
							
							\end{lstlisting} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\item [\textit{token}]\ \\ | 
						
						
						
						
							 | 
							
								 | 
							
							  A value specifying a feature to enable or disable. Valid tokens are | 
						
						
						
						
							 | 
							
								 | 
							
							  listed in table \ref{tab:enable}. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{description} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refparameters} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							none | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refreturn} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwEnable} is used to enable a certain feature, while | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwDisable} is used to disable it. Below follows a description of | 
						
						
						
						
							 | 
							
								 | 
							
							each feature. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{refdescription} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{table}[p] | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\begin{tabular}{|l|p{5.0cm}|p{3.0cm}|} \hline \raggedright | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{Name} & \textbf{Controls} & \textbf{Default}\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:autopollevents}{GLFW\_AUTO\_POLL\_EVENTS}         & Automatic event polling when \textbf{glfwSwapBuffers} is called & Enabled\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:keyrepeat}{GLFW\_KEY\_REPEAT}                     & Keyboard key repeat                                    & Disabled\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:mousecursor}{GLFW\_MOUSE\_CURSOR}                 & Mouse cursor visibility                                & Enabled in windowed mode. Disabled in fullscreen mode.\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:stickykeys}{GLFW\_STICKY\_KEYS}                   & Keyboard key ``stickiness''                            & Disabled\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:stickymousebuttons}{GLFW\_STICKY\_MOUSE\_BUTTONS} & Mouse button ``stickiness''                            & Disabled\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\hyperlink{lnk:systemkeys}{GLFW\_SYSTEM\_KEYS}                   & Special system key actions                             & Enabled\\ \hline | 
						
						
						
						
							 | 
							
								 | 
							
							\end{tabular} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{center} | 
						
						
						
						
							 | 
							
								 | 
							
							\caption{Tokens for \textbf{glfwEnable}/\textbf{glfwDisable}} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{tab:enable} | 
						
						
						
						
							 | 
							
								 | 
							
							\end{table} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:autopollevents}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_AUTO\_POLL\_EVENTS}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_AUTO\_POLL\_EVENTS is enabled, \textbf{glfwPollEvents} is | 
						
						
						
						
							 | 
							
								 | 
							
							automatically called each time that \textbf{glfwSwapBuffers} is called, | 
						
						
						
						
							 | 
							
								 | 
							
							immediately after the buffer swap itself. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_AUTO\_POLL\_EVENTS is disabled, calling | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSwapBuffers} will not result in a call to | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}. This can be useful if for example \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							needs to be called from within a callback function, since calling | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents} from a callback function is not allowed. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:keyrepeat}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_KEY\_REPEAT}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_KEY\_REPEAT is enabled, the key and character callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions are called repeatedly when a key is held down long enough | 
						
						
						
						
							 | 
							
								 | 
							
							(according to the system key repeat configuration). | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_KEY\_REPEAT is disabled, the key and character callback | 
						
						
						
						
							 | 
							
								 | 
							
							functions are only called once when a key is pressed (and once when it is | 
						
						
						
						
							 | 
							
								 | 
							
							released). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:mousecursor}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_MOUSE\_CURSOR}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_MOUSE\_CURSOR is enabled, the mouse cursor is visible, and | 
						
						
						
						
							 | 
							
								 | 
							
							mouse coordinates are relative to the upper left corner of the client area | 
						
						
						
						
							 | 
							
								 | 
							
							of the \GLFW\ window. The coordinates are limited to the client area of | 
						
						
						
						
							 | 
							
								 | 
							
							the window. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_MOUSE\_CURSOR is disabled, the mouse cursor is invisible, and | 
						
						
						
						
							 | 
							
								 | 
							
							mouse coordinates are not limited to the drawing area of the window. It is | 
						
						
						
						
							 | 
							
								 | 
							
							as if the mouse coordinates are received directly from the mouse, without | 
						
						
						
						
							 | 
							
								 | 
							
							being restricted or manipulated by the windowing system. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:stickykeys}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_STICKY\_KEYS}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_STICKY\_KEYS is enabled, keys which are pressed will not be | 
						
						
						
						
							 | 
							
								 | 
							
							released until they are physically released and checked with | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetKey}. This behavior makes it possible to catch keys that | 
						
						
						
						
							 | 
							
								 | 
							
							were pressed and then released again between two calls to | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwSwapBuffers}, which would otherwise have been reported as | 
						
						
						
						
							 | 
							
								 | 
							
							released. Care should be taken when using this mode, since keys that are | 
						
						
						
						
							 | 
							
								 | 
							
							not checked with \textbf{glfwGetKey} will never be released. Note also | 
						
						
						
						
							 | 
							
								 | 
							
							that enabling GLFW\_STICKY\_KEYS does not affect the behavior of the | 
						
						
						
						
							 | 
							
								 | 
							
							keyboard callback functionality. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_STICKY\_KEYS is disabled, the status of a key that is reported | 
						
						
						
						
							 | 
							
								 | 
							
							by \textbf{glfwGetKey} is always the physical state of the key. Disabling | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_STICKY\_KEYS also clears the sticky information for all keys. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:stickymousebuttons}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_STICKY\_MOUSE\_BUTTONS}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_STICKY\_MOUSE\_BUTTONS is enabled, mouse buttons that are pressed | 
						
						
						
						
							 | 
							
								 | 
							
							will not be released until they are physically released and checked with | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwGetMouseButton}. This behavior makes it possible to catch mouse | 
						
						
						
						
							 | 
							
								 | 
							
							buttons which were pressed and then released again between two calls to | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwPollEvents}, \textbf{glfwWaitEvents} or \textbf{glfwSwapBuffers} | 
						
						
						
						
							 | 
							
								 | 
							
							(with GLFW\_AUTO\_POLL\_EVENTS enabled), which would otherwise have been | 
						
						
						
						
							 | 
							
								 | 
							
							reported as released. Care should be taken when using this mode, since mouse | 
						
						
						
						
							 | 
							
								 | 
							
							buttons that are not checked with \textbf{glfwGetMouseButton} will never be | 
						
						
						
						
							 | 
							
								 | 
							
							released. Note also that enabling GLFW\_STICKY\_MOUSE\_BUTTONS does not affect | 
						
						
						
						
							 | 
							
								 | 
							
							the behavior of the mouse button callback functionality. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_STICKY\_MOUSE\_BUTTONS is disabled, the status of a mouse | 
						
						
						
						
							 | 
							
								 | 
							
							button that is reported by \textbf{glfwGetMouseButton} is always the | 
						
						
						
						
							 | 
							
								 | 
							
							physical state of the mouse button. Disabling GLFW\_STICKY\_MOUSE\_BUTTONS | 
						
						
						
						
							 | 
							
								 | 
							
							also clears the sticky information for all mouse buttons. | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\bigskip\begin{mysamepage}\hypertarget{lnk:systemkeys}{} | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLFW\_SYSTEM\_KEYS}\\ | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_SYSTEM\_KEYS is enabled, pressing standard system key | 
						
						
						
						
							 | 
							
								 | 
							
							combinations, such as \texttt{Alt+Tab} under Windows, will give the normal | 
						
						
						
						
							 | 
							
								 | 
							
							behavior. Note that when \texttt{Alt+Tab} is issued under Windows in this | 
						
						
						
						
							 | 
							
								 | 
							
							mode so that the \GLFW\ application is deselected when \GLFW\ is operating | 
						
						
						
						
							 | 
							
								 | 
							
							in fullscreen mode, the \GLFW\ application window will be minimized and | 
						
						
						
						
							 | 
							
								 | 
							
							the video mode will be set to the original desktop mode. When the \GLFW\ | 
						
						
						
						
							 | 
							
								 | 
							
							application is re-selected, the video mode will be set to the \GLFW\ video | 
						
						
						
						
							 | 
							
								 | 
							
							mode again. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							When GLFW\_SYSTEM\_KEYS is disabled, pressing standard system key | 
						
						
						
						
							 | 
							
								 | 
							
							combinations will have no effect, since those key combinations are blocked | 
						
						
						
						
							 | 
							
								 | 
							
							by \GLFW . This mode can be useful in situations when the \GLFW\ program | 
						
						
						
						
							 | 
							
								 | 
							
							must not be interrupted (normally for games in fullscreen mode). | 
						
						
						
						
							 | 
							
								 | 
							
							\end{mysamepage} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							% GLFW Standards Conformance | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\appendix | 
						
						
						
						
							 | 
							
								 | 
							
							\chapter{GLFW Compatibility} | 
						
						
						
						
							 | 
							
								 | 
							
							\label{chap:compatibility} | 
						
						
						
						
							 | 
							
								 | 
							
							\thispagestyle{fancy} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							This chapter describes the various API extensions used by this version of | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW .  It lists what are essentially implementation details, but which are | 
						
						
						
						
							 | 
							
								 | 
							
							nonetheless vital knowledge for developers wishing to deploy their applications | 
						
						
						
						
							 | 
							
								 | 
							
							on machines with varied specifications. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Note that the information in this appendix is not a part of the API | 
						
						
						
						
							 | 
							
								 | 
							
							specification but merely list some of the preconditions for certain parts of | 
						
						
						
						
							 | 
							
								 | 
							
							the API to function on a given machine.  As such, any part of it may change in | 
						
						
						
						
							 | 
							
								 | 
							
							future versions without this being considered a breaking API change. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{ICCCM and EWMH Conformance} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							As \GLFW\ uses \textbf{Xlib}, directly, without any intervening toolkit | 
						
						
						
						
							 | 
							
								 | 
							
							library, it has sole responsibility for interacting well with the many and | 
						
						
						
						
							 | 
							
								 | 
							
							varied window managers in use on Unix-like systems.  In order for applications | 
						
						
						
						
							 | 
							
								 | 
							
							and window managers to work well together, a number of standards and | 
						
						
						
						
							 | 
							
								 | 
							
							conventions have been developed that regulate behavior outside the scope of the | 
						
						
						
						
							 | 
							
								 | 
							
							X11 API; most importantly the \textbf{Inter-Client Communication Conventions | 
						
						
						
						
							 | 
							
								 | 
							
							Manual} (ICCCM) and \textbf{Extended Window Manager Hints} (EWMH) standards. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the ICCCM \textbf{WM\_DELETE\_WINDOW} protocol to intercept the user | 
						
						
						
						
							 | 
							
								 | 
							
							attempting to close the \GLFW\ window.  If the running window manager does not | 
						
						
						
						
							 | 
							
								 | 
							
							support this protocol, the close callback will never be called. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the EWMH \textbf{\_NET\_WM\_PING} protocol, allowing the window | 
						
						
						
						
							 | 
							
								 | 
							
							manager notify the user when the application has stopped responding, i.e. when | 
						
						
						
						
							 | 
							
								 | 
							
							it has ceased to process events.  If the running window manager does not | 
						
						
						
						
							 | 
							
								 | 
							
							support this protocol, the user will not be notified if the application locks | 
						
						
						
						
							 | 
							
								 | 
							
							up. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the EWMH \textbf{\_NET\_WM\_STATE} protocol to tell the window | 
						
						
						
						
							 | 
							
								 | 
							
							manager to make the \GLFW\ window fullscreen.  If the running window manager | 
						
						
						
						
							 | 
							
								 | 
							
							does not support this protocol, fullscreen windows may not work properly. | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ has a fallback code path in case this protocol is unavailable, but every | 
						
						
						
						
							 | 
							
								 | 
							
							window manager behaves slightly differently in this regard. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{GLX Extensions} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The \textbf{GLX} API is used to create \OpenGL\ contexts on Unix-like systems | 
						
						
						
						
							 | 
							
								 | 
							
							using the X Window System. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{GLXFBConfig} API to enumerate and select framebuffer | 
						
						
						
						
							 | 
							
								 | 
							
							pixel formats.  This requires either \textbf{GLX} 1.3 or greater, or the | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{GLX\_SGIX\_fbconfig} extension.  Where both are available, the SGIX | 
						
						
						
						
							 | 
							
								 | 
							
							extension is preferred.  If neither is available, \GLFW\ will be unable to open | 
						
						
						
						
							 | 
							
								 | 
							
							windows. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim below | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{GLX\_SGI\_swap\_control} extension to provide vertical | 
						
						
						
						
							 | 
							
								 | 
							
							retrace synchronization (or ``vsync'').  Where this extension is unavailable, | 
						
						
						
						
							 | 
							
								 | 
							
							calling \textbf{glfwSwapInterval} will have no effect. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim below | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{GLX\_ARB\_multisample} extension to create contexts | 
						
						
						
						
							 | 
							
								 | 
							
							with multisampling anti-aliasing.  Where this extension is unavailable, the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_FSAA\_SAMPLES hint will have no effect. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim below | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{GLX\_ARB\_create\_context} extension when available, | 
						
						
						
						
							 | 
							
								 | 
							
							even when creating \OpenGL\ contexts of version 2.1 and below.  Where this | 
						
						
						
						
							 | 
							
								 | 
							
							extension is unavailable, the GLFW\_OPENGL\_VERSION\_MAJOR and | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MINOR hints will only be partially supported, the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_DEBUG\_CONTEXT hint will have no effect, and setting the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_PROFILE or GLFW\_FORWARD\_COMPAT hints to a non-zero value will | 
						
						
						
						
							 | 
							
								 | 
							
							cause \textbf{glfwOpenWindow} to fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim below | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{GLX\_ARB\_create\_context\_profile} extension to | 
						
						
						
						
							 | 
							
								 | 
							
							provide support for context profiles.  Where this extension is unavailable, | 
						
						
						
						
							 | 
							
								 | 
							
							setting the GLFW\_OPENGL\_PROFILE hint to anything but zero will cause | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow} to fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{WGL Extensions} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							The \textbf{WGL} API is used to create \OpenGL\ contexts on Microsoft Windows | 
						
						
						
						
							 | 
							
								 | 
							
							and other implementations of the Win32 API, such as Wine. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses either the \textbf{WGL\_EXT\_extension\_string} or the | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{WGL\_ARB\_extension\_string} extension to check for the presence of all | 
						
						
						
						
							 | 
							
								 | 
							
							other \textbf{WGL} extensions listed below.  If both are available, the EXT one | 
						
						
						
						
							 | 
							
								 | 
							
							is preferred.  If neither is available, no other extensions are used and many | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ features related to context creation will have no effect or cause errors | 
						
						
						
						
							 | 
							
								 | 
							
							when used. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim above | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{WGL\_EXT\_swap\_control} extension to provide vertical | 
						
						
						
						
							 | 
							
								 | 
							
							retrace synchronization (or ``vsync'').  Where this extension is unavailable, | 
						
						
						
						
							 | 
							
								 | 
							
							calling \textbf{glfwSwapInterval} will have no effect. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim above | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{WGL\_ARB\_pixel\_format} and | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{WGL\_ARB\_multisample} extensions to create contexts with multisampling | 
						
						
						
						
							 | 
							
								 | 
							
							anti-aliasing.  Where these extensions are unavailable, the GLFW\_FSAA\_SAMPLES | 
						
						
						
						
							 | 
							
								 | 
							
							hint will have no effect. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim above | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{WGL\_ARB\_create\_context} extension when available, | 
						
						
						
						
							 | 
							
								 | 
							
							even when creating \OpenGL\ contexts of version 2.1 and below.  Where this | 
						
						
						
						
							 | 
							
								 | 
							
							extension is unavailable, the GLFW\_OPENGL\_VERSION\_MAJOR and | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MINOR hints will only be partially supported, the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_DEBUG\_CONTEXT hint will have no effect, and setting the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_PROFILE or GLFW\_FORWARD\_COMPAT hints to a non-zero value will | 
						
						
						
						
							 | 
							
								 | 
							
							cause \textbf{glfwOpenWindow} to fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							% This paragraph repeated almost verbatim above | 
						
						
						
						
							 | 
							
								 | 
							
							\GLFW\ uses the \textbf{WGL\_ARB\_create\_context\_profile} extension to | 
						
						
						
						
							 | 
							
								 | 
							
							provide support for context profiles.  Where this extension is unavailable, | 
						
						
						
						
							 | 
							
								 | 
							
							setting the GLFW\_OPENGL\_PROFILE hint to anything but zero will cause | 
						
						
						
						
							 | 
							
								 | 
							
							\textbf{glfwOpenWindow} to fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							%------------------------------------------------------------------------- | 
						
						
						
						
							 | 
							
								 | 
							
							\section{OpenGL 3.0+ on Mac OS X} | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							At the time of writing, Mac OS X does not support OpenGL 3.0 or above. | 
						
						
						
						
							 | 
							
								 | 
							
							Because of this, the GLFW\_OPENGL\_VERSION\_MAJOR and | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_VERSION\_MINOR hints will fail if given a version above 2.1, the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_DEBUG\_CONTEXT hint will have no effect, and setting the | 
						
						
						
						
							 | 
							
								 | 
							
							GLFW\_OPENGL\_PROFILE or GLFW\_FORWARD\_COMPAT hints to a non-zero value will | 
						
						
						
						
							 | 
							
								 | 
							
							cause \textbf{glfwOpenWindow} to fail. | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							\end{document}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 |