text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GLFW: glfw3.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra.css" rel="stylesheet" type="text/css"/>

		GLFW

Documentation

Download

Media

Community

Main Page

Related Pages

Modules

Data Structures

Files

          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>

File List

Globals

glfw-3.2.1

include

GLFW

Data Structures |
Macros |
Typedefs |
Functions

glfw3.h File Reference

The header of the GLFW 3 API.
More...

Go to the source code of this file.

Data Structures

struct  	GLFWvidmode

 	Video mode type.  More...

struct  	GLFWgammaramp

 	Gamma ramp.  More...

struct  	GLFWimage

 	Image data.  More...

Macros

#define 	GLFW_KEY_UNKNOWN   -1

#define 	GLFW_KEY_SPACE   32

#define 	GLFW_KEY_APOSTROPHE   39  /* ' */

#define 	GLFW_KEY_COMMA   44  /* , */

#define 	GLFW_KEY_MINUS   45  /* - */

#define 	GLFW_KEY_PERIOD   46  /* . */

#define 	GLFW_KEY_SLASH   47  /* / */

#define 	GLFW_KEY_0   48

#define 	GLFW_KEY_1   49

#define 	GLFW_KEY_2   50

#define 	GLFW_KEY_3   51

#define 	GLFW_KEY_4   52

#define 	GLFW_KEY_5   53

#define 	GLFW_KEY_6   54

#define 	GLFW_KEY_7   55

#define 	GLFW_KEY_8   56

#define 	GLFW_KEY_9   57

#define 	GLFW_KEY_SEMICOLON   59  /* ; */

#define 	GLFW_KEY_EQUAL   61  /* = */

#define 	GLFW_KEY_A   65

#define 	GLFW_KEY_B   66

#define 	GLFW_KEY_C   67

#define 	GLFW_KEY_D   68

#define 	GLFW_KEY_E   69

#define 	GLFW_KEY_F   70

#define 	GLFW_KEY_G   71

#define 	GLFW_KEY_H   72

#define 	GLFW_KEY_I   73

#define 	GLFW_KEY_J   74

#define 	GLFW_KEY_K   75

#define 	GLFW_KEY_L   76

#define 	GLFW_KEY_M   77

#define 	GLFW_KEY_N   78

#define 	GLFW_KEY_O   79

#define 	GLFW_KEY_P   80

#define 	GLFW_KEY_Q   81

#define 	GLFW_KEY_R   82

#define 	GLFW_KEY_S   83

#define 	GLFW_KEY_T   84

#define 	GLFW_KEY_U   85

#define 	GLFW_KEY_V   86

#define 	GLFW_KEY_W   87

#define 	GLFW_KEY_X   88

#define 	GLFW_KEY_Y   89

#define 	GLFW_KEY_Z   90

#define 	GLFW_KEY_LEFT_BRACKET   91  /* [ */

#define 	GLFW_KEY_BACKSLASH   92  /* \ */

#define 	GLFW_KEY_RIGHT_BRACKET   93  /* ] */

#define 	GLFW_KEY_GRAVE_ACCENT   96  /* ` */

#define 	GLFW_KEY_WORLD_1   161 /* non-US #1 */

#define 	GLFW_KEY_WORLD_2   162 /* non-US #2 */

#define 	GLFW_KEY_ESCAPE   256

#define 	GLFW_KEY_ENTER   257

#define 	GLFW_KEY_TAB   258

#define 	GLFW_KEY_BACKSPACE   259

#define 	GLFW_KEY_INSERT   260

#define 	GLFW_KEY_DELETE   261

#define 	GLFW_KEY_RIGHT   262

#define 	GLFW_KEY_LEFT   263

#define 	GLFW_KEY_DOWN   264

#define 	GLFW_KEY_UP   265

#define 	GLFW_KEY_PAGE_UP   266

#define 	GLFW_KEY_PAGE_DOWN   267

#define 	GLFW_KEY_HOME   268

#define 	GLFW_KEY_END   269

#define 	GLFW_KEY_CAPS_LOCK   280

#define 	GLFW_KEY_SCROLL_LOCK   281

#define 	GLFW_KEY_NUM_LOCK   282

#define 	GLFW_KEY_PRINT_SCREEN   283

#define 	GLFW_KEY_PAUSE   284

#define 	GLFW_KEY_F1   290

#define 	GLFW_KEY_F2   291

#define 	GLFW_KEY_F3   292

#define 	GLFW_KEY_F4   293

#define 	GLFW_KEY_F5   294

#define 	GLFW_KEY_F6   295

#define 	GLFW_KEY_F7   296

#define 	GLFW_KEY_F8   297

#define 	GLFW_KEY_F9   298

#define 	GLFW_KEY_F10   299

#define 	GLFW_KEY_F11   300

#define 	GLFW_KEY_F12   301

#define 	GLFW_KEY_F13   302

#define 	GLFW_KEY_F14   303

#define 	GLFW_KEY_F15   304

#define 	GLFW_KEY_F16   305

#define 	GLFW_KEY_F17   306

#define 	GLFW_KEY_F18   307

#define 	GLFW_KEY_F19   308

#define 	GLFW_KEY_F20   309

#define 	GLFW_KEY_F21   310

#define 	GLFW_KEY_F22   311

#define 	GLFW_KEY_F23   312

#define 	GLFW_KEY_F24   313

#define 	GLFW_KEY_F25   314

#define 	GLFW_KEY_KP_0   320

#define 	GLFW_KEY_KP_1   321

#define 	GLFW_KEY_KP_2   322

#define 	GLFW_KEY_KP_3   323

#define 	GLFW_KEY_KP_4   324

#define 	GLFW_KEY_KP_5   325

#define 	GLFW_KEY_KP_6   326

#define 	GLFW_KEY_KP_7   327

#define 	GLFW_KEY_KP_8   328

#define 	GLFW_KEY_KP_9   329

#define 	GLFW_KEY_KP_DECIMAL   330

#define 	GLFW_KEY_KP_DIVIDE   331

#define 	GLFW_KEY_KP_MULTIPLY   332

#define 	GLFW_KEY_KP_SUBTRACT   333

#define 	GLFW_KEY_KP_ADD   334

#define 	GLFW_KEY_KP_ENTER   335

#define 	GLFW_KEY_KP_EQUAL   336

#define 	GLFW_KEY_LEFT_SHIFT   340

#define 	GLFW_KEY_LEFT_CONTROL   341

#define 	GLFW_KEY_LEFT_ALT   342

#define 	GLFW_KEY_LEFT_SUPER   343

#define 	GLFW_KEY_RIGHT_SHIFT   344

#define 	GLFW_KEY_RIGHT_CONTROL   345

#define 	GLFW_KEY_RIGHT_ALT   346

#define 	GLFW_KEY_RIGHT_SUPER   347

#define 	GLFW_KEY_MENU   348

#define 	GLFW_KEY_LAST   GLFW_KEY_MENU

#define 	GLFW_MOD_SHIFT   0x0001

 	If this bit is set one or more Shift keys were held down.  More...

#define 	GLFW_MOD_CONTROL   0x0002

 	If this bit is set one or more Control keys were held down.  More...

#define 	GLFW_MOD_ALT   0x0004

 	If this bit is set one or more Alt keys were held down.  More...

#define 	GLFW_MOD_SUPER   0x0008

 	If this bit is set one or more Super keys were held down.  More...

#define 	GLFW_MOUSE_BUTTON_1   0

#define 	GLFW_MOUSE_BUTTON_2   1

#define 	GLFW_MOUSE_BUTTON_3   2

#define 	GLFW_MOUSE_BUTTON_4   3

#define 	GLFW_MOUSE_BUTTON_5   4

#define 	GLFW_MOUSE_BUTTON_6   5

#define 	GLFW_MOUSE_BUTTON_7   6

#define 	GLFW_MOUSE_BUTTON_8   7

#define 	GLFW_MOUSE_BUTTON_LAST   GLFW_MOUSE_BUTTON_8

#define 	GLFW_MOUSE_BUTTON_LEFT   GLFW_MOUSE_BUTTON_1

#define 	GLFW_MOUSE_BUTTON_RIGHT   GLFW_MOUSE_BUTTON_2

#define 	GLFW_MOUSE_BUTTON_MIDDLE   GLFW_MOUSE_BUTTON_3

#define 	GLFW_JOYSTICK_1   0

#define 	GLFW_JOYSTICK_2   1

#define 	GLFW_JOYSTICK_3   2

#define 	GLFW_JOYSTICK_4   3

#define 	GLFW_JOYSTICK_5   4

#define 	GLFW_JOYSTICK_6   5

#define 	GLFW_JOYSTICK_7   6

#define 	GLFW_JOYSTICK_8   7

#define 	GLFW_JOYSTICK_9   8

#define 	GLFW_JOYSTICK_10   9

#define 	GLFW_JOYSTICK_11   10

#define 	GLFW_JOYSTICK_12   11

#define 	GLFW_JOYSTICK_13   12

#define 	GLFW_JOYSTICK_14   13

#define 	GLFW_JOYSTICK_15   14

#define 	GLFW_JOYSTICK_16   15

#define 	GLFW_JOYSTICK_LAST   GLFW_JOYSTICK_16

#define 	GLFW_NOT_INITIALIZED   0x00010001

 	GLFW has not been initialized.  More...

#define 	GLFW_NO_CURRENT_CONTEXT   0x00010002

 	No context is current for this thread.  More...

#define 	GLFW_INVALID_ENUM   0x00010003

 	One of the arguments to the function was an invalid enum value.  More...

#define 	GLFW_INVALID_VALUE   0x00010004

 	One of the arguments to the function was an invalid value.  More...

#define 	GLFW_OUT_OF_MEMORY   0x00010005

 	A memory allocation failed.  More...

#define 	GLFW_API_UNAVAILABLE   0x00010006

 	GLFW could not find support for the requested API on the system.  More...

#define 	GLFW_VERSION_UNAVAILABLE   0x00010007

 	The requested OpenGL or OpenGL ES version is not available.  More...

#define 	GLFW_PLATFORM_ERROR   0x00010008

 	A platform-specific error occurred that does not match any of the more specific categories.  More...

#define 	GLFW_FORMAT_UNAVAILABLE   0x00010009

 	The requested format is not supported or available.  More...

#define 	GLFW_NO_WINDOW_CONTEXT   0x0001000A

 	The specified window does not have an OpenGL or OpenGL ES context.  More...

#define 	GLFW_FOCUSED   0x00020001

#define 	GLFW_ICONIFIED   0x00020002

#define 	GLFW_RESIZABLE   0x00020003

#define 	GLFW_VISIBLE   0x00020004

#define 	GLFW_DECORATED   0x00020005

#define 	GLFW_AUTO_ICONIFY   0x00020006

#define 	GLFW_FLOATING   0x00020007

#define 	GLFW_MAXIMIZED   0x00020008

#define 	GLFW_RED_BITS   0x00021001

#define 	GLFW_GREEN_BITS   0x00021002

#define 	GLFW_BLUE_BITS   0x00021003

#define 	GLFW_ALPHA_BITS   0x00021004

#define 	GLFW_DEPTH_BITS   0x00021005

#define 	GLFW_STENCIL_BITS   0x00021006

#define 	GLFW_ACCUM_RED_BITS   0x00021007

#define 	GLFW_ACCUM_GREEN_BITS   0x00021008

#define 	GLFW_ACCUM_BLUE_BITS   0x00021009

#define 	GLFW_ACCUM_ALPHA_BITS   0x0002100A

#define 	GLFW_AUX_BUFFERS   0x0002100B

#define 	GLFW_STEREO   0x0002100C

#define 	GLFW_SAMPLES   0x0002100D

#define 	GLFW_SRGB_CAPABLE   0x0002100E

#define 	GLFW_REFRESH_RATE   0x0002100F

#define 	GLFW_DOUBLEBUFFER   0x00021010

#define 	GLFW_CLIENT_API   0x00022001

#define 	GLFW_CONTEXT_VERSION_MAJOR   0x00022002

#define 	GLFW_CONTEXT_VERSION_MINOR   0x00022003

#define 	GLFW_CONTEXT_REVISION   0x00022004

#define 	GLFW_CONTEXT_ROBUSTNESS   0x00022005

#define 	GLFW_OPENGL_FORWARD_COMPAT   0x00022006

#define 	GLFW_OPENGL_DEBUG_CONTEXT   0x00022007

#define 	GLFW_OPENGL_PROFILE   0x00022008

#define 	GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009

#define 	GLFW_CONTEXT_NO_ERROR   0x0002200A

#define 	GLFW_CONTEXT_CREATION_API   0x0002200B

#define 	GLFW_NO_API   0

#define 	GLFW_OPENGL_API   0x00030001

#define 	GLFW_OPENGL_ES_API   0x00030002

#define 	GLFW_NO_ROBUSTNESS   0

#define 	GLFW_NO_RESET_NOTIFICATION   0x00031001

#define 	GLFW_LOSE_CONTEXT_ON_RESET   0x00031002

#define 	GLFW_OPENGL_ANY_PROFILE   0

#define 	GLFW_OPENGL_CORE_PROFILE   0x00032001

#define 	GLFW_OPENGL_COMPAT_PROFILE   0x00032002

#define 	GLFW_CURSOR   0x00033001

#define 	GLFW_STICKY_KEYS   0x00033002

#define 	GLFW_STICKY_MOUSE_BUTTONS   0x00033003

#define 	GLFW_CURSOR_NORMAL   0x00034001

#define 	GLFW_CURSOR_HIDDEN   0x00034002

#define 	GLFW_CURSOR_DISABLED   0x00034003

#define 	GLFW_ANY_RELEASE_BEHAVIOR   0

#define 	GLFW_RELEASE_BEHAVIOR_FLUSH   0x00035001

#define 	GLFW_RELEASE_BEHAVIOR_NONE   0x00035002

#define 	GLFW_NATIVE_CONTEXT_API   0x00036001

#define 	GLFW_EGL_CONTEXT_API   0x00036002

#define 	GLFW_ARROW_CURSOR   0x00036001

 	The regular arrow cursor shape.  More...

#define 	GLFW_IBEAM_CURSOR   0x00036002

 	The text input I-beam cursor shape.  More...

#define 	GLFW_CROSSHAIR_CURSOR   0x00036003

 	The crosshair shape.  More...

#define 	GLFW_HAND_CURSOR   0x00036004

 	The hand shape.  More...

#define 	GLFW_HRESIZE_CURSOR   0x00036005

 	The horizontal resize arrow shape.  More...

#define 	GLFW_VRESIZE_CURSOR   0x00036006

 	The vertical resize arrow shape.  More...

#define 	GLFW_CONNECTED   0x00040001

#define 	GLFW_DISCONNECTED   0x00040002

#define 	GLFW_DONT_CARE   -1

GLFW version macros

#define 	GLFW_VERSION_MAJOR   3

 	The major version number of the GLFW library.  More...

#define 	GLFW_VERSION_MINOR   2

 	The minor version number of the GLFW library.  More...

#define 	GLFW_VERSION_REVISION   1

 	The revision number of the GLFW library.  More...

Boolean values

#define 	GLFW_TRUE   1

 	One.  More...

#define 	GLFW_FALSE   0

 	Zero.  More...

Key and button actions

#define 	GLFW_RELEASE   0

 	The key or mouse button was released.  More...

#define 	GLFW_PRESS   1

 	The key or mouse button was pressed.  More...

#define 	GLFW_REPEAT   2

 	The key was held down until it repeated.  More...

Typedefs

typedef void(* 	GLFWglproc) (void)

 	Client API function pointer type.  More...

typedef void(* 	GLFWvkproc) (void)

 	Vulkan API function pointer type.  More...

typedef struct GLFWmonitor 	GLFWmonitor

 	Opaque monitor object.  More...

typedef struct GLFWwindow 	GLFWwindow

 	Opaque window object.  More...

typedef struct GLFWcursor 	GLFWcursor

 	Opaque cursor object.  More...

typedef void(* 	GLFWerrorfun) (int, const char *)

 	The function signature for error callbacks.  More...

typedef void(* 	GLFWwindowposfun) (GLFWwindow *, int, int)

 	The function signature for window position callbacks.  More...

typedef void(* 	GLFWwindowsizefun) (GLFWwindow *, int, int)

 	The function signature for window resize callbacks.  More...

typedef void(* 	GLFWwindowclosefun) (GLFWwindow *)

 	The function signature for window close callbacks.  More...

typedef void(* 	GLFWwindowrefreshfun) (GLFWwindow *)

 	The function signature for window content refresh callbacks.  More...

typedef void(* 	GLFWwindowfocusfun) (GLFWwindow *, int)

 	The function signature for window focus/defocus callbacks.  More...

typedef void(* 	GLFWwindowiconifyfun) (GLFWwindow *, int)

 	The function signature for window iconify/restore callbacks.  More...

typedef void(* 	GLFWframebuffersizefun) (GLFWwindow *, int, int)

 	The function signature for framebuffer resize callbacks.  More...

typedef void(* 	GLFWmousebuttonfun) (GLFWwindow *, int, int, int)

 	The function signature for mouse button callbacks.  More...

typedef void(* 	GLFWcursorposfun) (GLFWwindow *, double, double)

 	The function signature for cursor position callbacks.  More...

typedef void(* 	GLFWcursorenterfun) (GLFWwindow *, int)

 	The function signature for cursor enter/leave callbacks.  More...

typedef void(* 	GLFWscrollfun) (GLFWwindow *, double, double)

 	The function signature for scroll callbacks.  More...

typedef void(* 	GLFWkeyfun) (GLFWwindow *, int, int, int, int)

 	The function signature for keyboard key callbacks.  More...

typedef void(* 	GLFWcharfun) (GLFWwindow *, unsigned int)

 	The function signature for Unicode character callbacks.  More...

typedef void(* 	GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)

 	The function signature for Unicode character with modifiers callbacks.  More...

typedef void(* 	GLFWdropfun) (GLFWwindow *, int, const char **)

 	The function signature for file drop callbacks.  More...

typedef void(* 	GLFWmonitorfun) (GLFWmonitor *, int)

 	The function signature for monitor configuration callbacks.  More...

typedef void(* 	GLFWjoystickfun) (int, int)

 	The function signature for joystick configuration callbacks.  More...

typedef struct GLFWvidmode 	GLFWvidmode

 	Video mode type.  More...

typedef struct GLFWgammaramp 	GLFWgammaramp

 	Gamma ramp.  More...

typedef struct GLFWimage 	GLFWimage

 	Image data.  More...

Functions

int 	glfwInit (void)

 	Initializes the GLFW library.  More...

void 	glfwTerminate (void)

 	Terminates the GLFW library.  More...

void 	glfwGetVersion (int *major, int *minor, int *rev)

 	Retrieves the version of the GLFW library.  More...

const char * 	glfwGetVersionString (void)

 	Returns a string describing the compile-time configuration.  More...

GLFWerrorfun 	glfwSetErrorCallback (GLFWerrorfun cbfun)

 	Sets the error callback.  More...

GLFWmonitor ** 	glfwGetMonitors (int *count)

 	Returns the currently connected monitors.  More...

GLFWmonitor * 	glfwGetPrimaryMonitor (void)

 	Returns the primary monitor.  More...

void 	glfwGetMonitorPos (GLFWmonitor *monitor, int *xpos, int *ypos)

 	Returns the position of the monitor's viewport on the virtual screen.  More...

void 	glfwGetMonitorPhysicalSize (GLFWmonitor *monitor, int *widthMM, int *heightMM)

 	Returns the physical size of the monitor.  More...

const char * 	glfwGetMonitorName (GLFWmonitor *monitor)

 	Returns the name of the specified monitor.  More...

GLFWmonitorfun 	glfwSetMonitorCallback (GLFWmonitorfun cbfun)

 	Sets the monitor configuration callback.  More...

const GLFWvidmode * 	glfwGetVideoModes (GLFWmonitor *monitor, int *count)

 	Returns the available video modes for the specified monitor.  More...

const GLFWvidmode * 	glfwGetVideoMode (GLFWmonitor *monitor)

 	Returns the current mode of the specified monitor.  More...

void 	glfwSetGamma (GLFWmonitor *monitor, float gamma)

 	Generates a gamma ramp and sets it for the specified monitor.  More...

const GLFWgammaramp * 	glfwGetGammaRamp (GLFWmonitor *monitor)

 	Returns the current gamma ramp for the specified monitor.  More...

void 	glfwSetGammaRamp (GLFWmonitor *monitor, const GLFWgammaramp *ramp)

 	Sets the current gamma ramp for the specified monitor.  More...

void 	glfwDefaultWindowHints (void)

 	Resets all window hints to their default values.  More...

void 	glfwWindowHint (int hint, int value)

 	Sets the specified window hint to the desired value.  More...

GLFWwindow * 	glfwCreateWindow (int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)

 	Creates a window and its associated context.  More...

void 	glfwDestroyWindow (GLFWwindow *window)

 	Destroys the specified window and its context.  More...

int 	glfwWindowShouldClose (GLFWwindow *window)

 	Checks the close flag of the specified window.  More...

void 	glfwSetWindowShouldClose (GLFWwindow *window, int value)

 	Sets the close flag of the specified window.  More...

void 	glfwSetWindowTitle (GLFWwindow *window, const char *title)

 	Sets the title of the specified window.  More...

void 	glfwSetWindowIcon (GLFWwindow *window, int count, const GLFWimage *images)

 	Sets the icon for the specified window.  More...

void 	glfwGetWindowPos (GLFWwindow *window, int *xpos, int *ypos)

 	Retrieves the position of the client area of the specified window.  More...

void 	glfwSetWindowPos (GLFWwindow *window, int xpos, int ypos)

 	Sets the position of the client area of the specified window.  More...

void 	glfwGetWindowSize (GLFWwindow *window, int *width, int *height)

 	Retrieves the size of the client area of the specified window.  More...

void 	glfwSetWindowSizeLimits (GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)

 	Sets the size limits of the specified window.  More...

void 	glfwSetWindowAspectRatio (GLFWwindow *window, int numer, int denom)

 	Sets the aspect ratio of the specified window.  More...

void 	glfwSetWindowSize (GLFWwindow *window, int width, int height)

 	Sets the size of the client area of the specified window.  More...

void 	glfwGetFramebufferSize (GLFWwindow *window, int *width, int *height)

 	Retrieves the size of the framebuffer of the specified window.  More...

void 	glfwGetWindowFrameSize (GLFWwindow *window, int *left, int *top, int *right, int *bottom)

 	Retrieves the size of the frame of the window.  More...

void 	glfwIconifyWindow (GLFWwindow *window)

 	Iconifies the specified window.  More...

void 	glfwRestoreWindow (GLFWwindow *window)

 	Restores the specified window.  More...

void 	glfwMaximizeWindow (GLFWwindow *window)

 	Maximizes the specified window.  More...

void 	glfwShowWindow (GLFWwindow *window)

 	Makes the specified window visible.  More...

void 	glfwHideWindow (GLFWwindow *window)

 	Hides the specified window.  More...

void 	glfwFocusWindow (GLFWwindow *window)

 	Brings the specified window to front and sets input focus.  More...

GLFWmonitor * 	glfwGetWindowMonitor (GLFWwindow *window)

 	Returns the monitor that the window uses for full screen mode.  More...

void 	glfwSetWindowMonitor (GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)

 	Sets the mode, monitor, video mode and placement of a window.  More...

int 	glfwGetWindowAttrib (GLFWwindow *window, int attrib)

 	Returns an attribute of the specified window.  More...

void 	glfwSetWindowUserPointer (GLFWwindow *window, void *pointer)

 	Sets the user pointer of the specified window.  More...

void * 	glfwGetWindowUserPointer (GLFWwindow *window)

 	Returns the user pointer of the specified window.  More...

GLFWwindowposfun 	glfwSetWindowPosCallback (GLFWwindow *window, GLFWwindowposfun cbfun)

 	Sets the position callback for the specified window.  More...

GLFWwindowsizefun 	glfwSetWindowSizeCallback (GLFWwindow *window, GLFWwindowsizefun cbfun)

 	Sets the size callback for the specified window.  More...

GLFWwindowclosefun 	glfwSetWindowCloseCallback (GLFWwindow *window, GLFWwindowclosefun cbfun)

 	Sets the close callback for the specified window.  More...

GLFWwindowrefreshfun 	glfwSetWindowRefreshCallback (GLFWwindow *window, GLFWwindowrefreshfun cbfun)

 	Sets the refresh callback for the specified window.  More...

GLFWwindowfocusfun 	glfwSetWindowFocusCallback (GLFWwindow *window, GLFWwindowfocusfun cbfun)

 	Sets the focus callback for the specified window.  More...

GLFWwindowiconifyfun 	glfwSetWindowIconifyCallback (GLFWwindow *window, GLFWwindowiconifyfun cbfun)

 	Sets the iconify callback for the specified window.  More...

GLFWframebuffersizefun 	glfwSetFramebufferSizeCallback (GLFWwindow *window, GLFWframebuffersizefun cbfun)

 	Sets the framebuffer resize callback for the specified window.  More...

void 	glfwPollEvents (void)

 	Processes all pending events.  More...

void 	glfwWaitEvents (void)

 	Waits until events are queued and processes them.  More...

void 	glfwWaitEventsTimeout (double timeout)

 	Waits with timeout until events are queued and processes them.  More...

void 	glfwPostEmptyEvent (void)

 	Posts an empty event to the event queue.  More...

int 	glfwGetInputMode (GLFWwindow *window, int mode)

 	Returns the value of an input option for the specified window.  More...

void 	glfwSetInputMode (GLFWwindow *window, int mode, int value)

 	Sets an input option for the specified window.  More...

const char * 	glfwGetKeyName (int key, int scancode)

 	Returns the localized name of the specified printable key.  More...

int 	glfwGetKey (GLFWwindow *window, int key)

 	Returns the last reported state of a keyboard key for the specified window.  More...

int 	glfwGetMouseButton (GLFWwindow *window, int button)

 	Returns the last reported state of a mouse button for the specified window.  More...

void 	glfwGetCursorPos (GLFWwindow *window, double *xpos, double *ypos)

 	Retrieves the position of the cursor relative to the client area of the window.  More...

void 	glfwSetCursorPos (GLFWwindow *window, double xpos, double ypos)

 	Sets the position of the cursor, relative to the client area of the window.  More...

GLFWcursor * 	glfwCreateCursor (const GLFWimage *image, int xhot, int yhot)

 	Creates a custom cursor.  More...

GLFWcursor * 	glfwCreateStandardCursor (int shape)

 	Creates a cursor with a standard shape.  More...

void 	glfwDestroyCursor (GLFWcursor *cursor)

 	Destroys a cursor.  More...

void 	glfwSetCursor (GLFWwindow *window, GLFWcursor *cursor)

 	Sets the cursor for the window.  More...

GLFWkeyfun 	glfwSetKeyCallback (GLFWwindow *window, GLFWkeyfun cbfun)

 	Sets the key callback.  More...

GLFWcharfun 	glfwSetCharCallback (GLFWwindow *window, GLFWcharfun cbfun)

 	Sets the Unicode character callback.  More...

GLFWcharmodsfun 	glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun cbfun)

 	Sets the Unicode character with modifiers callback.  More...

GLFWmousebuttonfun 	glfwSetMouseButtonCallback (GLFWwindow *window, GLFWmousebuttonfun cbfun)

 	Sets the mouse button callback.  More...

GLFWcursorposfun 	glfwSetCursorPosCallback (GLFWwindow *window, GLFWcursorposfun cbfun)

 	Sets the cursor position callback.  More...

GLFWcursorenterfun 	glfwSetCursorEnterCallback (GLFWwindow *window, GLFWcursorenterfun cbfun)

 	Sets the cursor enter/exit callback.  More...

GLFWscrollfun 	glfwSetScrollCallback (GLFWwindow *window, GLFWscrollfun cbfun)

 	Sets the scroll callback.  More...

GLFWdropfun 	glfwSetDropCallback (GLFWwindow *window, GLFWdropfun cbfun)

 	Sets the file drop callback.  More...

int 	glfwJoystickPresent (int joy)

 	Returns whether the specified joystick is present.  More...

const float * 	glfwGetJoystickAxes (int joy, int *count)

 	Returns the values of all axes of the specified joystick.  More...

const unsigned char * 	glfwGetJoystickButtons (int joy, int *count)

 	Returns the state of all buttons of the specified joystick.  More...

const char * 	glfwGetJoystickName (int joy)

 	Returns the name of the specified joystick.  More...

GLFWjoystickfun 	glfwSetJoystickCallback (GLFWjoystickfun cbfun)

 	Sets the joystick configuration callback.  More...

void 	glfwSetClipboardString (GLFWwindow *window, const char *string)

 	Sets the clipboard to the specified string.  More...

const char * 	glfwGetClipboardString (GLFWwindow *window)

 	Returns the contents of the clipboard as a string.  More...

double 	glfwGetTime (void)

 	Returns the value of the GLFW timer.  More...

void 	glfwSetTime (double time)

 	Sets the GLFW timer.  More...

uint64_t 	glfwGetTimerValue (void)

 	Returns the current value of the raw timer.  More...

uint64_t 	glfwGetTimerFrequency (void)

 	Returns the frequency, in Hz, of the raw timer.  More...

void 	glfwMakeContextCurrent (GLFWwindow *window)

 	Makes the context of the specified window current for the calling thread.  More...

GLFWwindow * 	glfwGetCurrentContext (void)

 	Returns the window whose context is current on the calling thread.  More...

void 	glfwSwapBuffers (GLFWwindow *window)

 	Swaps the front and back buffers of the specified window.  More...

void 	glfwSwapInterval (int interval)

 	Sets the swap interval for the current context.  More...

int 	glfwExtensionSupported (const char *extension)

 	Returns whether the specified extension is available.  More...

GLFWglproc 	glfwGetProcAddress (const char *procname)

 	Returns the address of the specified function for the current context.  More...

int 	glfwVulkanSupported (void)

 	Returns whether the Vulkan loader has been found.  More...

const char ** 	glfwGetRequiredInstanceExtensions (uint32_t *count)

 	Returns the Vulkan instance extensions required by GLFW.  More...

GLFWvkproc 	glfwGetInstanceProcAddress (VkInstance instance, const char *procname)

 	Returns the address of the specified Vulkan instance function.  More...

int 	glfwGetPhysicalDevicePresentationSupport (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)

 	Returns whether the specified queue family can present images.  More...

VkResult 	glfwCreateWindowSurface (VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)

 	Creates a Vulkan surface for the specified window.  More...

Detailed Description

This is the header file of the GLFW 3 API. It defines all its types and declares all its functions.

For more information about how to use this file, see Including the GLFW header file.

Macro Definition Documentation

          #define GLFW_ACCUM_ALPHA_BITS   0x0002100A

          #define GLFW_ACCUM_BLUE_BITS   0x00021009

          #define GLFW_ACCUM_GREEN_BITS   0x00021008

          #define GLFW_ACCUM_RED_BITS   0x00021007

          #define GLFW_ALPHA_BITS   0x00021004

          #define GLFW_ANY_RELEASE_BEHAVIOR   0

          #define GLFW_AUTO_ICONIFY   0x00020006

          #define GLFW_AUX_BUFFERS   0x0002100B

          #define GLFW_BLUE_BITS   0x00021003

          #define GLFW_CLIENT_API   0x00022001

          #define GLFW_CONNECTED   0x00040001

          #define GLFW_CONTEXT_CREATION_API   0x0002200B

          #define GLFW_CONTEXT_NO_ERROR   0x0002200A

          #define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009

          #define GLFW_CONTEXT_REVISION   0x00022004

          #define GLFW_CONTEXT_ROBUSTNESS   0x00022005

          #define GLFW_CONTEXT_VERSION_MAJOR   0x00022002

          #define GLFW_CONTEXT_VERSION_MINOR   0x00022003

          #define GLFW_CURSOR   0x00033001

          #define GLFW_CURSOR_DISABLED   0x00034003

          #define GLFW_CURSOR_HIDDEN   0x00034002

          #define GLFW_CURSOR_NORMAL   0x00034001

          #define GLFW_DECORATED   0x00020005

          #define GLFW_DEPTH_BITS   0x00021005

          #define GLFW_DISCONNECTED   0x00040002

          #define GLFW_DONT_CARE   -1

          #define GLFW_DOUBLEBUFFER   0x00021010

          #define GLFW_EGL_CONTEXT_API   0x00036002

          #define GLFW_FALSE   0

Zero. Seriously. You don't need to use this symbol in your code. It's just just semantic sugar for the number 0. You can use 0 or false or _False or GL_FALSE or whatever you want.

          #define GLFW_FLOATING   0x00020007

          #define GLFW_FOCUSED   0x00020001

          #define GLFW_GREEN_BITS   0x00021002

          #define GLFW_ICONIFIED   0x00020002

          #define GLFW_LOSE_CONTEXT_ON_RESET   0x00031002

          #define GLFW_MAXIMIZED   0x00020008

          #define GLFW_NATIVE_CONTEXT_API   0x00036001

          #define GLFW_NO_API   0

          #define GLFW_NO_RESET_NOTIFICATION   0x00031001

          #define GLFW_NO_ROBUSTNESS   0

          #define GLFW_OPENGL_ANY_PROFILE   0

          #define GLFW_OPENGL_API   0x00030001

          #define GLFW_OPENGL_COMPAT_PROFILE   0x00032002

          #define GLFW_OPENGL_CORE_PROFILE   0x00032001

          #define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007

          #define GLFW_OPENGL_ES_API   0x00030002

          #define GLFW_OPENGL_FORWARD_COMPAT   0x00022006

          #define GLFW_OPENGL_PROFILE   0x00022008

          #define GLFW_RED_BITS   0x00021001

          #define GLFW_REFRESH_RATE   0x0002100F

          #define GLFW_RELEASE_BEHAVIOR_FLUSH   0x00035001

          #define GLFW_RELEASE_BEHAVIOR_NONE   0x00035002

          #define GLFW_RESIZABLE   0x00020003

          #define GLFW_SAMPLES   0x0002100D

          #define GLFW_SRGB_CAPABLE   0x0002100E

          #define GLFW_STENCIL_BITS   0x00021006

          #define GLFW_STEREO   0x0002100C

          #define GLFW_STICKY_KEYS   0x00033002

          #define GLFW_STICKY_MOUSE_BUTTONS   0x00033003

          #define GLFW_TRUE   1

One. Seriously. You don't need to use this symbol in your code. It's just semantic sugar for the number 1. You can use 1 or true or _True or GL_TRUE or whatever you want.

          #define GLFW_VISIBLE   0x00020004

Typedef Documentation

          typedef struct GLFWcursor GLFWcursor

Opaque cursor object.

See also

Cursor objects

Since

Added in version 3.1.

          typedef struct GLFWimage  GLFWimage

See also

Custom cursor creation

Window icon

Since

Added in version 2.1.

GLFW 3: Removed format and bytes-per-pixel members.

<address class="footer">

Last update on Thu Aug 18 2016 for GLFW 3.2.1

</address>


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GLFW: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra.css" rel="stylesheet" type="text/css"/>

		GLFW

Documentation

Download

Media

Community

Main Page

Related Pages

Modules

Data Structures

Files

          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>

File List

Globals

All

Functions

Typedefs

Macros

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

r

s

t

v

w

Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

- e -

GLFW_EGL_CONTEXT_API
: glfw3.h

glfwExtensionSupported()
: glfw3.h

<address class="footer">

Last update on Thu Aug 18 2016 for GLFW 3.2.1

</address>

repo_language: C

mime_type: text/x-c


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GLFW: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra.css" rel="stylesheet" type="text/css"/>

		GLFW

Documentation

Download

Media

Community

Main Page

Related Pages

Modules

Data Structures

Files

          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>

File List

Globals

All

Functions

Typedefs

Macros

GLFWcharfun
: glfw3.h

GLFWcharmodsfun
: glfw3.h

GLFWcursor
: glfw3.h

GLFWcursorenterfun
: glfw3.h

GLFWcursorposfun
: glfw3.h

GLFWdropfun
: glfw3.h

GLFWerrorfun
: glfw3.h

GLFWframebuffersizefun
: glfw3.h

GLFWgammaramp
: glfw3.h

GLFWglproc
: glfw3.h

GLFWimage
: glfw3.h

GLFWjoystickfun
: glfw3.h

GLFWkeyfun
: glfw3.h

GLFWmonitor
: glfw3.h

GLFWmonitorfun
: glfw3.h

GLFWmousebuttonfun
: glfw3.h

GLFWscrollfun
: glfw3.h

GLFWvidmode
: glfw3.h

GLFWvkproc
: glfw3.h

GLFWwindow
: glfw3.h

GLFWwindowclosefun
: glfw3.h

GLFWwindowfocusfun
: glfw3.h

GLFWwindowiconifyfun
: glfw3.h

GLFWwindowposfun
: glfw3.h

GLFWwindowrefreshfun
: glfw3.h

GLFWwindowsizefun
: glfw3.h

<address class="footer">

Last update on Thu Aug 18 2016 for GLFW 3.2.1

</address>


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GLFW: Moving from GLFW 2 to 3</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra.css" rel="stylesheet" type="text/css"/>

		GLFW

Documentation

Download

Media

Community

Main Page

Related Pages

Modules

Data Structures

Files

          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>

Moving from GLFW 2 to 3

Table of Contents

Changed and removed features

Renamed library and header file

Removal of threading functions

Removal of image and texture loading

Removal of GLFWCALL macro

Window handle parameters

Explicit monitor selection

Removal of automatic event polling

Explicit context management

Separation of window and framebuffer sizes

Window closing changes

Persistent window hints

Video mode enumeration

Removal of character actions

Cursor position changes

Wheel position replaced by scroll offsets

Key repeat action

Physical key input

Joystick function changes

Win32 MBCS support

Support for versions of Windows older than XP

Capture of system-wide hotkeys

Automatic termination

GLU header inclusion

Name change tables

Renamed functions

Renamed types

Renamed tokens

This is a transition guide for moving from GLFW 2 to 3. It describes what has changed or been removed, but does not include new features unless they are required when moving an existing code base onto the new API. For example, the new multi-monitor functions are required to create full screen windows with GLFW 3.

Changed and removed features

Renamed library and header file

The GLFW 3 header is named glfw3.h and moved to the GLFW directory, to avoid collisions with the headers of other major versions. Similarly, the GLFW 3 library is named glfw3, except when it's installed as a shared library on Unix-like systems, where it uses the soname libglfw.so.3.

Old syntax

#include <GL/glfw.h>

New syntax

#include <GLFW/glfw3.h>

Removal of threading functions

The threading functions have been removed, including the per-thread sleep function. They were fairly primitive, under-used, poorly integrated and took time away from the focus of GLFW (i.e. context, input and window). There are better threading libraries available and native threading support is available in both C++11 and C11, both of which are gaining traction.

If you wish to use the C++11 or C11 facilities but your compiler doesn't yet support them, see the TinyThread++ and TinyCThread projects created by the original author of GLFW. These libraries implement a usable subset of the threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use TinyCThread.

However, GLFW 3 has better support for use from multiple threads than GLFW 2 had. Contexts can be made current on any thread, although only a single thread at a time, and the documentation explicitly states which functions may be used from any thread and which must only be used from the main thread.

Removed functions

glfwSleep, glfwCreateThread, glfwDestroyThread, glfwWaitThread, glfwGetThreadID, glfwCreateMutex, glfwDestroyMutex, glfwLockMutex, glfwUnlockMutex, glfwCreateCond, glfwDestroyCond, glfwWaitCond, glfwSignalCond, glfwBroadcastCond and glfwGetNumberOfProcessors.

Removed types

GLFWthreadfun

Removal of image and texture loading

The image and texture loading functions have been removed. They only supported the Targa image format, making them mostly useful for beginner level examples. To become of sufficiently high quality to warrant keeping them in GLFW 3, they would need not only to support other formats, but also modern extensions to OpenGL texturing. This would either add a number of external dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions of these libraries.

As there already are libraries doing this, it is unnecessary both to duplicate the work and to tie the duplicate to GLFW. The resulting library would also be platform-independent, as both OpenGL and stdio are available wherever GLFW is.

Removed functions

glfwReadImage, glfwReadMemoryImage, glfwFreeImage, glfwLoadTexture2D, glfwLoadMemoryTexture2D and glfwLoadTextureImage2D.

Removal of GLFWCALL macro

The GLFWCALL macro, which made callback functions use __stdcall on Windows, has been removed. GLFW is written in C, not Pascal. Removing this macro means there's one less thing for application programmers to remember, i.e. the requirement to mark all callback functions with GLFWCALL. It also simplifies the creation of DLLs and DLL link libraries, as there's no need to explicitly disable @n entry point suffixes.

Old syntax

void GLFWCALL callback_function(...);

New syntax

void callback_function(...);

Window handle parameters

Because GLFW 3 supports multiple windows, window handle parameters have been added to all window-related GLFW functions and callbacks. The handle of a newly created window is returned by glfwCreateWindow (formerly glfwOpenWindow). Window handles are pointers to the opaque type GLFWwindow.

Old syntax

glfwSetWindowTitle("New Window Title");

New syntax

glfwSetWindowTitle(window, "New Window Title");

Explicit monitor selection

GLFW 3 provides support for multiple monitors. To request a full screen mode window, instead of passing GLFW_FULLSCREEN you specify which monitor you wish the window to use. The glfwGetPrimaryMonitor function returns the monitor that GLFW 2 would have selected, but there are many other monitor functions. Monitor handles are pointers to the opaque type GLFWmonitor.

Old basic full screen

glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN);

New basic full screen

window = glfwCreateWindow(640, 480, "My Window", glfwGetPrimaryMonitor(), NULL);

Note

The framebuffer bit depth parameters of glfwOpenWindow have been turned into window hints, but as they have been given sane defaults you rarely need to set these hints.

Removal of automatic event polling

GLFW 3 does not automatically poll for events in glfwSwapBuffers, meaning you need to call glfwPollEvents or glfwWaitEvents yourself. Unlike buffer swap, which acts on a single window, the event processing functions act on all windows at once.

Old basic main loop

while (...)

{

    // Process input

    // Render output

    glfwSwapBuffers();

}

New basic main loop

while (...)

{

    // Process input

    // Render output

    glfwSwapBuffers(window);

    glfwPollEvents();

}

Explicit context management

Each GLFW 3 window has its own OpenGL context and only you, the application programmer, can know which context should be current on which thread at any given time. Therefore, GLFW 3 leaves that decision to you.

This means that you need to call glfwMakeContextCurrent after creating a window before you can call any OpenGL functions.

Separation of window and framebuffer sizes

Window positions and sizes now use screen coordinates, which may not be the same as pixels on machines with high-DPI monitors. This is important as OpenGL uses pixels, not screen coordinates. For example, the rectangle specified with glViewport needs to use pixels. Therefore, framebuffer size functions have been added. You can retrieve the size of the framebuffer of a window with glfwGetFramebufferSize function. A framebuffer size callback has also been added, which can be set with glfwSetFramebufferSizeCallback.

Old basic viewport setup

glfwGetWindowSize(&width, &height);

glViewport(0, 0, width, height);

New basic viewport setup

glfwGetFramebufferSize(window, &width, &height);

glViewport(0, 0, width, height);

Window closing changes

The GLFW_OPENED window parameter has been removed. As long as the window has not been destroyed, whether through glfwDestroyWindow or glfwTerminate, the window is "open".

A user attempting to close a window is now just an event like any other. Unlike GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless you choose them to be. Each window now has a close flag that is set to GLFW_TRUE when the user attempts to close that window. By default, nothing else happens and the window stays visible. It is then up to you to either destroy the window, take some other action or simply ignore the request.

You can query the close flag at any time with glfwWindowShouldClose and set it at any time with glfwSetWindowShouldClose.

Old basic main loop

while (glfwGetWindowParam(GLFW_OPENED))

{

    ...

}

New basic main loop

while (!glfwWindowShouldClose(window))

{

    ...

}

The close callback no longer returns a value. Instead, it is called after the close flag has been set so it can override its value, if it chooses to, before event processing completes. You may however not call glfwDestroyWindow from the close callback (or any other window related callback).

Old syntax

int GLFWCALL window_close_callback(void);

New syntax

void window_close_callback(GLFWwindow* window);

Note

GLFW never clears the close flag to GLFW_FALSE, meaning you can use it for other reasons to close the window as well, for example the user choosing Quit from an in-game menu.

Persistent window hints

The glfwOpenWindowHint function has been renamed to glfwWindowHint.

Window hints are no longer reset to their default values on window creation, but instead retain their values until modified by glfwWindowHint or glfwDefaultWindowHints, or until the library is terminated and re-initialized.

Video mode enumeration

Video mode enumeration is now per-monitor. The glfwGetVideoModes function now returns all available modes for a specific monitor instead of requiring you to guess how large an array you need. The glfwGetDesktopMode function, which had poorly defined behavior, has been replaced by glfwGetVideoMode, which returns the current mode of a monitor.

Removal of character actions

The action parameter of the character callback has been removed. This was an artefact of the origin of GLFW, i.e. being developed in English by a Swede. However, many keyboard layouts require more than one key to produce characters with diacritical marks. Even the Swedish keyboard layout requires this for uncommon cases like ü.

Old syntax

void GLFWCALL character_callback(int character, int action);

New syntax

void character_callback(GLFWwindow* window, int character);

Cursor position changes

The glfwGetMousePos function has been renamed to glfwGetCursorPos, glfwSetMousePos to glfwSetCursorPos and glfwSetMousePosCallback to glfwSetCursorPosCallback.

The cursor position is now double instead of int, both for the direct functions and for the callback. Some platforms can provide sub-pixel cursor movement and this data is now passed on to the application where available. On platforms where this is not provided, the decimal part is zero.

GLFW 3 only allows you to position the cursor within a window using glfwSetCursorPos (formerly glfwSetMousePos) when that window is active. Unless the window is active, the function fails silently.

Wheel position replaced by scroll offsets

The glfwGetMouseWheel function has been removed. Scrolling is the input of offsets and has no absolute position. The mouse wheel callback has been replaced by a scroll callback that receives two-dimensional floating point scroll offsets. This allows you to receive precise scroll data from for example modern touchpads.

Old syntax

void GLFWCALL mouse_wheel_callback(int position);

New syntax

void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);

Removed functions

glfwGetMouseWheel

Key repeat action

The GLFW_KEY_REPEAT enable has been removed and key repeat is always enabled for both keys and characters. A new key action, GLFW_REPEAT, has been added to allow the key callback to distinguish an initial key press from a repeat. Note that glfwGetKey still returns only GLFW_PRESS or GLFW_RELEASE.

Physical key input

GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to the values generated by the current keyboard layout. The tokens are named according to the values they would have using the standard US layout, but this is only a convenience, as most programmers are assumed to know that layout. This means that (for example) GLFW_KEY_LEFT_BRACKET is always a single key and is the same key in the same place regardless of what keyboard layouts the users of your program has.

The key input facility was never meant for text input, although using it that way worked slightly better in GLFW 2. If you were using it to input text, you should be using the character callback instead, on both GLFW 2 and 3. This will give you the characters being input, as opposed to the keys being pressed.

GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of having to remember whether to check for 'a' or 'A', you now check for GLFW_KEY_A.

Joystick function changes

The glfwGetJoystickPos function has been renamed to glfwGetJoystickAxes.

The glfwGetJoystickParam function and the GLFW_PRESENT, GLFW_AXES and GLFW_BUTTONS tokens have been replaced by the glfwJoystickPresent function as well as axis and button counts returned by the glfwGetJoystickAxes and glfwGetJoystickButtons functions.

Win32 MBCS support

The Win32 port of GLFW 3 will not compile in MBCS mode. 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 possible to call MBCS functions from other parts of the same application. Therefore, even if an application using GLFW has MBCS mode code, there's no need for GLFW itself to support it.

Support for versions of Windows older than XP

All explicit support for version of Windows older than XP has been removed. There is no code that actively prevents GLFW 3 from running on these earlier versions, but it uses Win32 functions that those versions lack.

Windows XP was released in 2001, and by now (January 2015) it has not only replaced almost all earlier versions of Windows, but is itself rapidly being replaced by Windows 7 and 8. The MSDN library doesn't even provide documentation for version older than Windows 2000, making it difficult to maintain compatibility with these versions even if it was deemed worth the effort.

The Win32 API has also not stood still, and GLFW 3 uses many functions only present on Windows XP or later. Even supporting an OS as new as XP (new from the perspective of GLFW 2, which still supports Windows 95) requires runtime checking for a number of functions that are present only on modern version of Windows.

Capture of system-wide hotkeys

The ability to disable and capture system-wide hotkeys like Alt+Tab has been removed. Modern applications, whether they're games, scientific visualisations or something else, are nowadays expected to be good desktop citizens and allow these hotkeys to function even when running in full screen mode.

Automatic termination

GLFW 3 does not register glfwTerminate with atexit at initialization, because exit calls registered functions from the calling thread and while it is permitted to call exit from any thread, glfwTerminate must only be called from the main thread.

To release all resources allocated by GLFW, you should call glfwTerminate yourself, from the main thread, before the program terminates. Note that this destroys all windows not already destroyed with glfwDestroyWindow, invalidating any window handles you may still have.

GLU header inclusion

GLFW 3 does not by default include the GLU header and GLU itself has been deprecated by Khronos. New projects should not use GLU, but if you need it for legacy code that has been moved to GLFW 3, you can request that the GLFW header includes it by defining GLFW_INCLUDE_GLU before the inclusion of the GLFW header.

Old syntax

#include <GL/glfw.h>

New syntax

#define GLFW_INCLUDE_GLU

#include <GLFW/glfw3.h>

Name change tables

Renamed functions

GLFW 2 	GLFW 3 	Notes

glfwOpenWindow 	glfwCreateWindow 	All channel bit depths are now hints

glfwCloseWindow 	glfwDestroyWindow

glfwOpenWindowHint 	glfwWindowHint 	Now accepts all GLFW_*_BITS tokens

glfwEnable 	glfwSetInputMode

glfwDisable 	glfwSetInputMode

glfwGetMousePos 	glfwGetCursorPos

glfwSetMousePos 	glfwSetCursorPos

glfwSetMousePosCallback 	glfwSetCursorPosCallback

glfwSetMouseWheelCallback 	glfwSetScrollCallback 	Accepts two-dimensional scroll offsets as doubles

glfwGetJoystickPos 	glfwGetJoystickAxes

glfwGetWindowParam 	glfwGetWindowAttrib

glfwGetGLVersion 	glfwGetWindowAttrib 	Use GLFW_CONTEXT_VERSION_MAJOR, GLFW_CONTEXT_VERSION_MINOR and GLFW_CONTEXT_REVISION

glfwGetDesktopMode 	glfwGetVideoMode 	Returns the current mode of a monitor

glfwGetJoystickParam 	glfwJoystickPresent 	The axis and button counts are provided by glfwGetJoystickAxes and glfwGetJoystickButtons

Renamed types

GLFW 2 	GLFW 3 	Notes

GLFWmousewheelfun 	GLFWscrollfun

GLFWmouseposfun 	GLFWcursorposfun

Renamed tokens

GLFW 2 	GLFW 3 	Notes

GLFW_OPENGL_VERSION_MAJOR 	GLFW_CONTEXT_VERSION_MAJOR 	Renamed as it applies to OpenGL ES as well

GLFW_OPENGL_VERSION_MINOR 	GLFW_CONTEXT_VERSION_MINOR 	Renamed as it applies to OpenGL ES as well

GLFW_FSAA_SAMPLES 	GLFW_SAMPLES 	Renamed to match the OpenGL API

GLFW_ACTIVE 	GLFW_FOCUSED 	Renamed to match the window focus callback

GLFW_WINDOW_NO_RESIZE 	GLFW_RESIZABLE 	The default has been inverted

GLFW_MOUSE_CURSOR 	GLFW_CURSOR 	Used with glfwSetInputMode

GLFW_KEY_ESC 	GLFW_KEY_ESCAPE

GLFW_KEY_DEL 	GLFW_KEY_DELETE

GLFW_KEY_PAGEUP 	GLFW_KEY_PAGE_UP

GLFW_KEY_PAGEDOWN 	GLFW_KEY_PAGE_DOWN

GLFW_KEY_KP_NUM_LOCK 	GLFW_KEY_NUM_LOCK

GLFW_KEY_LCTRL 	GLFW_KEY_LEFT_CONTROL

GLFW_KEY_LSHIFT 	GLFW_KEY_LEFT_SHIFT

GLFW_KEY_LALT 	GLFW_KEY_LEFT_ALT

GLFW_KEY_LSUPER 	GLFW_KEY_LEFT_SUPER

GLFW_KEY_RCTRL 	GLFW_KEY_RIGHT_CONTROL

GLFW_KEY_RSHIFT 	GLFW_KEY_RIGHT_SHIFT

GLFW_KEY_RALT 	GLFW_KEY_RIGHT_ALT

GLFW_KEY_RSUPER 	GLFW_KEY_RIGHT_SUPER

<address class="footer">

Last update on Thu Aug 18 2016 for GLFW 3.2.1

</address>