Documentation work.

This commit is contained in:
Camilla Berglund 2013-04-10 23:01:12 +02:00
parent 7b5b33ee3b
commit 8282a8fbe0
7 changed files with 191 additions and 97 deletions

View File

@ -307,7 +307,7 @@ GLFW.
`GLFWgammaramp` type for monitor gamma ramp control `GLFWgammaramp` type for monitor gamma ramp control
* Added window parameter to `glfwSwapBuffers` * Added window parameter to `glfwSwapBuffers`
* Changed buffer bit depth parameters of `glfwOpenWindow` to window hints * Changed buffer bit depth parameters of `glfwOpenWindow` to window hints
* Changed `glfwOpenWindow` and `glfwSetWindowTitle` to use UTF-8 encoded * Changed `glfwCreateWindow` and `glfwSetWindowTitle` to use UTF-8 encoded
strings strings
* Changed `glfwGetProcAddress` to return a (generic) function pointer * Changed `glfwGetProcAddress` to return a (generic) function pointer
* Changed `glfwGetVideoModes` to return a dynamic, unlimited number of video * Changed `glfwGetVideoModes` to return a dynamic, unlimited number of video
@ -367,7 +367,7 @@ GLFW.
counterparts counterparts
* [Cocoa] Bugfix: The `NSOpenGLPFAFullScreen` pixel format attribute caused * [Cocoa] Bugfix: The `NSOpenGLPFAFullScreen` pixel format attribute caused
creation to fail on some machines creation to fail on some machines
* [Cocoa] Bugfix: `glfwOpenWindow` did not properly enforce the * [Cocoa] Bugfix: `glfwCreateWindow` did not properly enforce the
forward-compatible and context profile hints forward-compatible and context profile hints
* [Cocoa] Bugfix: The loop condition for saving video modes used the wrong * [Cocoa] Bugfix: The loop condition for saving video modes used the wrong
index variable index variable

View File

@ -86,7 +86,7 @@ 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. related to context creation will have no effect or cause errors when used.
GLFW uses the `WGL_EXT_swap_control` extension to provide vertical retrace GLFW uses the `WGL_EXT_swap_control` extension to provide vertical retrace
synchronization (or "vsync"). Where this extension is unavailable, calling @ref synchronization (or 'vsync'). Where this extension is unavailable, calling @ref
glfwSwapInterval will have no effect. glfwSwapInterval will have no effect.
GLFW uses the `WGL_ARB_pixel_format` and `WGL_ARB_multisample` extensions to GLFW uses the `WGL_ARB_pixel_format` and `WGL_ARB_multisample` extensions to

View File

@ -5,10 +5,10 @@
@tableofcontents @tableofcontents
This is a transition guide for moving from GLFW 2 to 3. It describes what has This is a transition guide for moving from GLFW 2 to 3. It describes what has
changed or been removed, but does *not* include entirely new features unless changed or been removed, but does *not* include
they are required when moving an existing code base onto the new API. For example, [new features](@ref news) unless they are required when moving an existing code
use of the new multi-monitor functions are required to create fullscreen windows base onto the new API. For example, use of the new multi-monitor functions are
with GLFW 3. required to create full screen windows with GLFW 3.
@section moving_removed Removed features @section moving_removed Removed features
@ -31,8 +31,9 @@ TinyCThread.
However, GLFW 3 has better support for *use from multiple threads* than GLFW However, GLFW 3 has better support for *use from multiple threads* than GLFW
2 had. Contexts can be made current on and rendered with from secondary 2 had. Contexts can be made current on and rendered with from secondary
threads, and the documentation explicitly states which functions may or may not threads, and the documentation explicitly states which functions may be used
be used from secondary threads. from secondary threads and which may only be used from the main thread, i.e. the
thread that calls main.
@subsection moving_image Image and texture loading @subsection moving_image Image and texture loading
@ -92,8 +93,8 @@ The Win32 port of GLFW 3 will not compile in
However, because the use of the Unicode version of the Win32 API doesn't affect However, because the use of the Unicode version of the Win32 API doesn't affect
the process as a whole, but only those windows created using it, it's perfectly the process as a whole, but only those windows created using it, it's perfectly
possible to call MBCS functions from other parts of the same application. possible to call MBCS functions from other parts of the same application.
Therefore, even if an application using GLFW uses MBCS mode, there's no need for Therefore, even if an application using GLFW has MBCS mode code, there's no need
GLFW itself to support it. for GLFW itself to support it.
@subsection moving_windows Support for versions of Windows older than XP @subsection moving_windows Support for versions of Windows older than XP
@ -211,9 +212,9 @@ having to remember whether to check for `'a'` or `'A'`, you now check for
Video mode enumeration is now per-monitor. The @ref glfwGetVideoModes function Video mode enumeration is now per-monitor. The @ref glfwGetVideoModes function
now returns all available modes for a specific monitor instead of requiring you now returns all available modes for a specific monitor instead of requiring you
to guess how large an array you need. The `glfwGetDesktopMode` function has to guess how large an array you need. The `glfwGetDesktopMode` function, which
been replaced by @ref glfwGetVideoMode, which returns the current mode of had poorly defined behavior, has been replaced by @ref glfwGetVideoMode, which
a monitor. returns the current mode of a monitor.
@subsection moving_cursor Cursor positioning @subsection moving_cursor Cursor positioning

View File

@ -32,7 +32,7 @@ select which context is current on a given thread.
GLFW now explicitly supports multiple monitors. They can be enumerated with GLFW now explicitly supports multiple monitors. They can be enumerated with
@ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref @ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize, glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
and specified at window creation to make the newly created window fullscren on and specified at window creation to make the newly created window full screen on
that specific monitor. that specific monitor.
@ -65,7 +65,7 @@ GLFW now supports the creation of OpenGL ES contexts, by setting the
contexts are supported. Note that GLFW *does not implement* OpenGL ES, so your contexts are supported. Note that GLFW *does not implement* OpenGL ES, so your
driver must provide support in a way usable by GLFW. Modern nVidia and Intel driver must provide support in a way usable by GLFW. Modern nVidia and Intel
drivers support creation of OpenGL ES context using the GLX and WGL APIs, while drivers support creation of OpenGL ES context using the GLX and WGL APIs, while
AMD currently only provides an EGL implementation. AMD provides an EGL implementation instead.
GLFW now has an (experimental) EGL context creation back end, which can be GLFW now has an (experimental) EGL context creation back end, which can be
selected through CMake options. selected through CMake options.
@ -118,7 +118,7 @@ to @ref glfwCreateWindow.
Windows can now be hidden with @ref glfwHideWindow, shown using @ref Windows can now be hidden with @ref glfwHideWindow, shown using @ref
glfwShowWindow and created initially hidden with the `GLFW_VISIBLE` window hint. glfwShowWindow and created initially hidden with the `GLFW_VISIBLE` window hint.
This allows for offscreen rendering in a way compatible with most drivers, as This allows for off-screen rendering in a way compatible with most drivers, as
well as moving a window to a specific position before showing it. well as moving a window to a specific position before showing it.
*/ */

View File

@ -110,8 +110,8 @@ glfwSetErrorCallback(error_callback);
@section quick_create_window Creating a window and context @section quick_create_window Creating a window and context
The window (and its context) is created with @ref glfwCreateWindow, which The window (and its context) is created with @ref glfwCreateWindow, which
returns a handle to the created window. For example, this creates an 640 by 480 returns a handle to the created window. For example, this creates a 640 by 480
pixels windowed mode window: windowed mode window:
@code @code
GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
@ -272,8 +272,8 @@ keyboard input, it's possible to create a simple program.
@snippet simple.c code @snippet simple.c code
This program creates a 640 by 480 pixels window and runs a loop clearing the This program creates a 640 by 480 windowed mode window and runs a loop clearing
screen, rendering a triangle and processing events until the user closes the the screen, rendering a triangle and processing events until the user closes the
window. It can be found in the source distribution as `examples/simple.c`, and window. It can be found in the source distribution as `examples/simple.c`, and
is by default compiled along with all other examples when you build GLFW. is by default compiled along with all other examples when you build GLFW.

View File

@ -9,7 +9,11 @@ a fullscreen window.
@section window_object Window objects @section window_object Window objects
Text here. The @ref GLFWwindow object encapsulates both a window and a context. They are
created with @ref glfwCreateWindow and destroyed with @ref glfwDestroyWindow (or
@ref glfwTerminate, if any remain). As the window and context are inseparably
linked, the window handle (i.e. window object pointer) is used as a context
handle as well, for example when calling @ref glfwMakeContextCurrent.
@section window_hints Window hints @section window_hints Window hints
@ -79,9 +83,13 @@ with.
For OpenGL, these hints are *not* hard constraints, as they don't have to For OpenGL, these hints are *not* hard constraints, as they don't have to
match exactly, but @ref glfwCreateWindow will still fail if the resulting match exactly, but @ref glfwCreateWindow will still fail if the resulting
OpenGL version is less than the one requested. It is therefore perfectly OpenGL version is less than the one requested. It is therefore perfectly
safe to use the default of version 1.0 for legacy code and you will still safe to use the default of version 1.0 for legacy code and you may still
get backwards-compatible contexts of version 3.0 and above when available. get backwards-compatible contexts of version 3.0 and above when available.
While there is no way to ask the driver for a context of the highest supported
version, most drivers provide this when you ask GLFW for a version
1.0 context.
For OpenGL ES, these hints are hard constraints, as there is no backward For OpenGL ES, these hints are hard constraints, as there is no backward
compatibility between OpenGL ES versions. compatibility between OpenGL ES versions.
@ -120,7 +128,8 @@ visible. This hint is ignored for fullscreen windows.
The `GLFW_DECORATED` hint specifies whether the window will have window The `GLFW_DECORATED` hint specifies whether the window will have window
decorations such as a border, a close widget, etc. This hint is ignored for decorations such as a border, a close widget, etc. This hint is ignored for
fullscreen windows. fullscreen windows. Note that even though a window may lack a close widget, it
is usually still possible for the user to generate close events.
@subsection window_hints_values Supported and default values @subsection window_hints_values Supported and default values
@ -155,7 +164,14 @@ fullscreen windows.
@section window_closing Window closing @section window_closing Window closing
Text here. When the user attempts to close the window, for example by clicking the close
widget or using a key chord like Alt+F4, the window's close flag is set and then
its close callback is called. The window is not actually destroyed and, unless
you are monitoring the close flag, nothing further happens.
If you do not want the close flag to be set, it can be cleared again from the
close callback (or from any other point in your program) with @ref
glfwSetWindowShouldClose.
@section window_dims Window dimensions @section window_dims Window dimensions

View File

@ -241,23 +241,23 @@ extern "C" {
#define GLFW_REPEAT 2 #define GLFW_REPEAT 2
/*! @} */ /*! @} */
/* Keyboard raw key codes. /*! @defgroup keys Keyboard keys
* These key codes are inspired by the USB HID Usage Tables v1.12 (p. 53-60), *
* These key codes are inspired by the *USB HID Usage Tables v1.12* (p. 53-60),
* but re-arranged to map to 7-bit ASCII for printable keys (function keys are * but re-arranged to map to 7-bit ASCII for printable keys (function keys are
* put in the 256+ range). * put in the 256+ range).
*
* The naming of the key codes follow these rules: * The naming of the key codes follow these rules:
* - The US keyboard layout is used. * - The US keyboard layout is used
* - Names of printable alpha-numeric characters are used (e.g. "A", "R", * - Names of printable alpha-numeric characters are used (e.g. "A", "R",
* "3", etc). * "3", etc.)
* - For non-alphanumeric characters, Unicode:ish names are used (e.g. * - For non-alphanumeric characters, Unicode:ish names are used (e.g.
* "COMMA", "LEFT_SQUARE_BRACKET", etc). Note that some names do not * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not
* correspond to the Unicode standard (usually for brevity). * correspond to the Unicode standard (usually for brevity)
* - Keys that lack a clear US mapping are named "WORLD_x". * - Keys that lack a clear US mapping are named "WORLD_x"
* - For non-printable keys, custom names are used (e.g. "F4", * - For non-printable keys, custom names are used (e.g. "F4",
* "BACKSPACE", etc). * "BACKSPACE", etc.)
*/ *
/*! @defgroup keys Keyboard keys
* @ingroup input * @ingroup input
* @{ * @{
*/ */
@ -542,21 +542,34 @@ extern "C" {
*************************************************************************/ *************************************************************************/
/*! @brief Client API function pointer type. /*! @brief Client API function pointer type.
*
* Generic function pointer used for returning client API function pointers
* without forcing a cast from a regular pointer.
*
* @ingroup context * @ingroup context
*/ */
typedef void (*GLFWglproc)(void); typedef void (*GLFWglproc)(void);
/*! @brief Opaque monitor object. /*! @brief Opaque monitor object.
*
* Opaque monitor object.
*
* @ingroup monitor * @ingroup monitor
*/ */
typedef struct GLFWmonitor GLFWmonitor; typedef struct GLFWmonitor GLFWmonitor;
/*! @brief Opaque window object. /*! @brief Opaque window object.
*
* Opaque window object.
*
* @ingroup window * @ingroup window
*/ */
typedef struct GLFWwindow GLFWwindow; typedef struct GLFWwindow GLFWwindow;
/*! @brief The function signature for error callbacks. /*! @brief The function signature for error callbacks.
*
* This is the function signature for error callback functions.
*
* @param[in] error An [error code](@ref errors). * @param[in] error An [error code](@ref errors).
* @param[in] description A UTF-8 encoded string describing the error. * @param[in] description A UTF-8 encoded string describing the error.
* *
@ -567,11 +580,14 @@ typedef struct GLFWwindow GLFWwindow;
typedef void (* GLFWerrorfun)(int,const char*); typedef void (* GLFWerrorfun)(int,const char*);
/*! @brief The function signature for window position callbacks. /*! @brief The function signature for window position callbacks.
*
* This is the function signature for window position callback functions.
*
* @param[in] window The window that the user moved. * @param[in] window The window that the user moved.
* @param[in] xpos The new x-coordinate, in pixels, of the upper-left corner of * @param[in] xpos The new x-coordinate, in screen coordinates, of the
* the client area of the window. * upper-left corner of the client area of the window.
* @param[in] ypos The new y-coordinate, in pixels, of the upper-left corner of * @param[in] ypos The new y-coordinate, in screen coordinates, of the
* the client area of the window. * upper-left corner of the client area of the window.
* *
* @sa glfwSetWindowPosCallback * @sa glfwSetWindowPosCallback
* *
@ -580,9 +596,12 @@ typedef void (* GLFWerrorfun)(int,const char*);
typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
/*! @brief The function signature for window resize callbacks. /*! @brief The function signature for window resize callbacks.
*
* This is the function signature for window size callback functions.
*
* @param[in] window The window that the user resized. * @param[in] window The window that the user resized.
* @param[in] width The new width, in pixels, of the window. * @param[in] width The new width, in screen coordinates, of the window.
* @param[in] height The new height, in pixels, of the window. * @param[in] height The new height, in screen coordinates, of the window.
* *
* @sa glfwSetWindowSizeCallback * @sa glfwSetWindowSizeCallback
* *
@ -591,6 +610,9 @@ typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
/*! @brief The function signature for window close callbacks. /*! @brief The function signature for window close callbacks.
*
* This is the function signature for window close callback functions.
*
* @param[in] window The window that the user attempted to close. * @param[in] window The window that the user attempted to close.
* *
* @sa glfwSetWindowCloseCallback * @sa glfwSetWindowCloseCallback
@ -600,6 +622,9 @@ typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
typedef void (* GLFWwindowclosefun)(GLFWwindow*); typedef void (* GLFWwindowclosefun)(GLFWwindow*);
/*! @brief The function signature for window content refresh callbacks. /*! @brief The function signature for window content refresh callbacks.
*
* This is the function signature for window refresh callback functions.
*
* @param[in] window The window whose content needs to be refreshed. * @param[in] window The window whose content needs to be refreshed.
* *
* @sa glfwSetWindowRefreshCallback * @sa glfwSetWindowRefreshCallback
@ -609,6 +634,9 @@ typedef void (* GLFWwindowclosefun)(GLFWwindow*);
typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
/*! @brief The function signature for window focus/defocus callbacks. /*! @brief The function signature for window focus/defocus callbacks.
*
* This is the function signature for window focus callback functions.
*
* @param[in] window The window that was focused or defocused. * @param[in] window The window that was focused or defocused.
* @param[in] focused `GL_TRUE` if the window was focused, or `GL_FALSE` if * @param[in] focused `GL_TRUE` if the window was focused, or `GL_FALSE` if
* it was defocused. * it was defocused.
@ -620,6 +648,10 @@ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
/*! @brief The function signature for window iconify/restore callbacks. /*! @brief The function signature for window iconify/restore callbacks.
*
* This is the function signature for window iconify/restore callback
* functions.
*
* @param[in] window The window that was iconified or restored. * @param[in] window The window that was iconified or restored.
* @param[in] iconified `GL_TRUE` if the window was iconified, or `GL_FALSE` * @param[in] iconified `GL_TRUE` if the window was iconified, or `GL_FALSE`
* if it was restored. * if it was restored.
@ -631,6 +663,9 @@ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
/*! @brief The function signature for mouse button callbacks. /*! @brief The function signature for mouse button callbacks.
*
* This is the function signature for mouse button callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] button The [mouse button](@ref buttons) that was pressed or * @param[in] button The [mouse button](@ref buttons) that was pressed or
* released. * released.
@ -643,6 +678,9 @@ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int); typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int);
/*! @brief The function signature for cursor position callbacks. /*! @brief The function signature for cursor position callbacks.
*
* This is the function signature for cursor position callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] xpos The new x-coordinate of the cursor. * @param[in] xpos The new x-coordinate of the cursor.
* @param[in] ypos The new y-coordinate of the cursor. * @param[in] ypos The new y-coordinate of the cursor.
@ -653,7 +691,10 @@ typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int);
*/ */
typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
/*! @brief The function signature for cursor enter/exit callbacks. /*! @brief The function signature for cursor enter/leave callbacks.
*
* This is the function signature for cursor enter/leave callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] entered `GL_TRUE` if the cursor entered the window's client * @param[in] entered `GL_TRUE` if the cursor entered the window's client
* area, or `GL_FALSE` if it left it. * area, or `GL_FALSE` if it left it.
@ -665,6 +706,9 @@ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
/*! @brief The function signature for scroll callbacks. /*! @brief The function signature for scroll callbacks.
*
* This is the function signature for scroll callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] xpos The scroll offset along the x-axis. * @param[in] xpos The scroll offset along the x-axis.
* @param[in] ypos The scroll offset along the y-axis. * @param[in] ypos The scroll offset along the y-axis.
@ -676,6 +720,9 @@ typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
/*! @brief The function signature for keyboard key callbacks. /*! @brief The function signature for keyboard key callbacks.
*
* This is the function signature for keyboard key callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] key The [keyboard key](@ref keys) that was pressed or released. * @param[in] key The [keyboard key](@ref keys) that was pressed or released.
* @param[in] action @ref GLFW_PRESS, @ref GLFW_RELEASE or @ref GLFW_REPEAT. * @param[in] action @ref GLFW_PRESS, @ref GLFW_RELEASE or @ref GLFW_REPEAT.
@ -687,6 +734,9 @@ typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
typedef void (* GLFWkeyfun)(GLFWwindow*,int,int); typedef void (* GLFWkeyfun)(GLFWwindow*,int,int);
/*! @brief The function signature for Unicode character callbacks. /*! @brief The function signature for Unicode character callbacks.
*
* This is the function signature for Unicode character callback functions.
*
* @param[in] window The window that received the event. * @param[in] window The window that received the event.
* @param[in] character The Unicode code point of the character. * @param[in] character The Unicode code point of the character.
* *
@ -697,6 +747,9 @@ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int);
typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
/*! @brief The function signature for monitor configuration callbacks. /*! @brief The function signature for monitor configuration callbacks.
*
* This is the function signature for monitor configuration callback functions.
*
* @param[in] monitor The monitor that was connected or disconnected. * @param[in] monitor The monitor that was connected or disconnected.
* @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.
* *
@ -706,7 +759,10 @@ typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
*/ */
typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); typedef void (* GLFWmonitorfun)(GLFWmonitor*,int);
/* @brief Video mode type. /*! @brief Video mode type.
*
* This describes a single video mode.
*
* @ingroup monitor * @ingroup monitor
*/ */
typedef struct typedef struct
@ -719,6 +775,11 @@ typedef struct
} GLFWvidmode; } GLFWvidmode;
/*! @brief Gamma ramp. /*! @brief Gamma ramp.
*
* This describes the gamma ramp for a monitor.
*
* @sa glfwGetGammaRamp glfwSetGammaRamp
*
* @ingroup gamma * @ingroup gamma
*/ */
typedef struct typedef struct
@ -1066,13 +1127,16 @@ GLFWAPI void glfwWindowHint(int target, int hint);
* can use the newly created context, you need to make it current using @ref * can use the newly created context, you need to make it current using @ref
* glfwMakeContextCurrent. * glfwMakeContextCurrent.
* *
* Note that the actual properties of the window and context may differ from * Note that the created window and context may differ from what you requested,
* what you requested, as not all parameters and hints are hard constraints. * as not all parameters and hints are hard constraints. This includes the
* size of the window, especially for full screen windows. To retrieve the
* actual properties of the window and context, use queries like @ref
* glfwGetWindowParam and @ref glfwGetWindowSize.
* *
* @param[in] width The desired width, in pixels, of the window. This must be * @param[in] width The desired width, in screen coordinates, of the window.
* greater than zero. * This must be greater than zero.
* @param[in] height The desired height, in pixels, of the window. This must * @param[in] height The desired height, in screen coordinates, of the window.
* be greater than zero. * This must be greater than zero.
* @param[in] title The initial, UTF-8 encoded window title. * @param[in] title The initial, UTF-8 encoded window title.
* @param[in] monitor The monitor to use for full screen mode, or `NULL` to use * @param[in] monitor The monitor to use for full screen mode, or `NULL` to use
* windowed mode. * windowed mode.
@ -1085,8 +1149,8 @@ GLFWAPI void glfwWindowHint(int target, int hint);
* show it. * show it.
* *
* @remarks For full screen windows the initial cursor mode is * @remarks For full screen windows the initial cursor mode is
* `GLFW_CURSOR_CAPTURED` and the screensaver is prohibited from starting. For * `GLFW_CURSOR_CAPTURED` and the screen saver is prohibited from starting.
* regular windows the initial cursor mode is `GLFW_CURSOR_NORMAL` and the * For regular windows the initial cursor mode is `GLFW_CURSOR_NORMAL` and the
* screen saver is allowed to start. * screen saver is allowed to start.
* *
* @remarks **Windows:** If the executable has an icon resource named * @remarks **Windows:** If the executable has an icon resource named
@ -1195,6 +1259,8 @@ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
* This function sets the position, in screen coordinates, of the upper-left * This function sets the position, in screen coordinates, of the upper-left
* corner of the client area of the window. * corner of the client area of the window.
* *
* If it is a full screen window, this function does nothing.
*
* @param[in] window The window to query. * @param[in] window The window to query.
* @param[in] xpos The x-coordinate of the upper-left corner of the client area. * @param[in] xpos The x-coordinate of the upper-left corner of the client area.
* @param[in] ypos The y-coordinate of the upper-left corner of the client area. * @param[in] ypos The y-coordinate of the upper-left corner of the client area.
@ -1224,8 +1290,8 @@ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
/*! @brief Retrieves the size of the client area of the specified window. /*! @brief Retrieves the size of the client area of the specified window.
* *
* This function retrieves the size, in pixels, of the client area of the * This function retrieves the size, in screen coordinates, of the client area
* specified window. * of the specified window.
* *
* @param[in] window The window whose size to retrieve. * @param[in] window The window whose size to retrieve.
* @param[out] width The width of the client area. * @param[out] width The width of the client area.
@ -1239,8 +1305,13 @@ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
/*! @brief Sets the size of the client area of the specified window. /*! @brief Sets the size of the client area of the specified window.
* *
* This function sets the size, in pixels, of the client area of the specified * This function sets the size, in screen coordinates, of the client area of
* window. * the specified window.
*
* For full screen windows, this function selects and switches to the resolution
* closest to the specified size, without affecting the window's context. As
* the context is unaffected, the bit depths of the framebuffer remain
* unchanged.
* *
* @param[in] window The window to resize. * @param[in] window The window to resize.
* @param[in] width The desired width of the specified window. * @param[in] width The desired width of the specified window.
@ -1250,10 +1321,6 @@ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
* *
* @note The window manager may put limits on what window sizes are allowed. * @note The window manager may put limits on what window sizes are allowed.
* *
* @note For fullscreen windows, this function selects and switches to the
* resolution closest to the specified size, without destroying the window's
* context.
*
* @sa glfwGetWindowSize * @sa glfwGetWindowSize
* *
* @ingroup window * @ingroup window
@ -1283,8 +1350,9 @@ GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
/*! @brief Restores the specified window. /*! @brief Restores the specified window.
* *
* This function restores the specified window, if it was previously * This function restores the specified window, if it was previously
* iconified/minimized. If the window is already restored, this function does * iconified/minimized. If it is a full screen window, the resolution chosen
* nothing. * for the window is restored on the selected monitor. If the window is
* already restored, this function does nothing.
* *
* @param[in] window The window to restore. * @param[in] window The window to restore.
* *
@ -1440,7 +1508,7 @@ GLFWAPI void glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun
* *
* This function sets the size callback of the specified window, which is * This function sets the size callback of the specified window, which is
* called when the window is resized. The callback is provided with the size, * called when the window is resized. The callback is provided with the size,
* in pixels, of the client area of the window. * in screen coordinates, of the client area of the window.
* *
* @param[in] window The window whose callback to set. * @param[in] window The window whose callback to set.
* @param[in] cbfun The new callback, or `NULL` to remove the currently set * @param[in] cbfun The new callback, or `NULL` to remove the currently set
@ -1479,14 +1547,14 @@ GLFWAPI void glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun c
* called when the client area of the window needs to be redrawn, for example * called when the client area of the window needs to be redrawn, for example
* if the window has been exposed after having been covered by another window. * if the window has been exposed after having been covered by another window.
* *
* On compositing window systems such as Aero, Compiz or Aqua, where the window
* contents are saved off-screen, this callback may be called only very
* infrequently or never at all.
*
* @param[in] window The window whose callback to set. * @param[in] window The window whose callback to set.
* @param[in] cbfun The new callback, or `NULL` to remove the currently set * @param[in] cbfun The new callback, or `NULL` to remove the currently set
* callback. * callback.
* *
* @note On compositing window systems such as Aero, Compiz or Aqua, where the
* window contents are saved off-screen, this callback may be called only very
* infrequently or never at all.
*
* @ingroup window * @ingroup window
*/ */
GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun); GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun);
@ -1519,7 +1587,7 @@ GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyf
/*! @brief Processes all pending events. /*! @brief Processes all pending events.
* *
* This function processes only those events that have already been recevied * This function processes only those events that have already been received
* and then returns immediately. * and then returns immediately.
* *
* @par New in GLFW 3 * @par New in GLFW 3
@ -1527,7 +1595,6 @@ GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyf
* it or @ref glfwWaitEvents yourself. * it or @ref glfwWaitEvents yourself.
* *
* @note This function may only be called from the main thread. * @note This function may only be called from the main thread.
* @note This function may not be called from a callback.
* *
* @note This function may not be called from a callback. * @note This function may not be called from a callback.
* *
@ -1539,11 +1606,10 @@ GLFWAPI void glfwPollEvents(void);
/*! @brief Waits until events are pending and processes them. /*! @brief Waits until events are pending and processes them.
* *
* This function blocks until at least one event has been recevied and then * This function blocks until at least one event has been received and then
* processes all received events before returning. * processes all received events before returning.
* *
* @note This function may only be called from the main thread. * @note This function may only be called from the main thread.
* @note This function may not be called from a callback.
* *
* @note This function may not be called from a callback. * @note This function may not be called from a callback.
* *
@ -1903,8 +1969,7 @@ GLFWAPI void glfwSetTime(double time);
* *
* This function makes the context of the specified window current on the * This function makes the context of the specified window current on the
* calling thread. A context can only be made current on a single thread at * calling thread. A context can only be made current on a single thread at
* a time and each thread can have only a single current context for a given * a time and each thread can have only a single current context at a time.
* client API (such as OpenGL or OpenGL ES).
* *
* @param[in] window The window whose context to make current, or `NULL` to * @param[in] window The window whose context to make current, or `NULL` to
* detach the current context. * detach the current context.
@ -1957,13 +2022,25 @@ GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
* *
* This function sets the swap interval for the current context, i.e. the * This function sets the swap interval for the current context, i.e. the
* number of screen updates to wait before swapping the buffers of a window and * number of screen updates to wait before swapping the buffers of a window and
* returning from @ref glfwSwapBuffers. * returning from @ref glfwSwapBuffers. This is sometimes called 'vertical
* synchronization', 'vertical retrace synchronization' or 'vsync'.
* *
* @param[in] interval The minimum number of screen updates to wait for * @param[in] interval The minimum number of screen updates to wait for
* until the buffers are swapped by @ref glfwSwapBuffers. * until the buffers are swapped by @ref glfwSwapBuffers.
* *
* @remarks This function may be called from secondary threads. * @remarks This function may be called from secondary threads.
* *
* @remarks Contexts that support either of the `WGL_EXT_swap_control_tear` and
* `GLX_EXT_swap_control_tear` extensions also accept negative swap intervals,
* which allow the driver to swap even if a frame arrives a little bit late.
* You can check for the presence of these extensions using @ref
* glfwExtensionSupported. For more information about swap tearing, see the
* extension specifications.
*
* @note Some GPU drivers do not honor the requested swap interval, either
* because of user settings that override the request or due to bugs in the
* driver.
*
* @sa glfwSwapBuffers * @sa glfwSwapBuffers
* *
* @ingroup context * @ingroup context
@ -1983,7 +2060,7 @@ GLFWAPI void glfwSwapInterval(int interval);
* *
* @note As this functions searches one or more extension strings on each call, * @note As this functions searches one or more extension strings on each call,
* it is recommended that you cache its results if it's going to be used * it is recommended that you cache its results if it's going to be used
* freqently. The extension strings will not change during the lifetime of * frequently. The extension strings will not change during the lifetime of
* a context, so there is no danger in doing this. * a context, so there is no danger in doing this.
* *
* @ingroup context * @ingroup context