89#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
98 #define APIENTRY __stdcall
106#if !defined(WINGDIAPI) && defined(_WIN32)
107 #define WINGDIAPI __declspec(dllimport)
108 #define GLFW_WINGDIAPI_DEFINED
113#if !defined(CALLBACK) && defined(_WIN32)
114 #define CALLBACK __stdcall
115 #define GLFW_CALLBACK_DEFINED
130#if defined(__APPLE__)
131 #if defined(GLFW_INCLUDE_GLCOREARB)
132 #include <OpenGL/gl3.h>
133 #if defined(GLFW_INCLUDE_GLEXT)
134 #include <OpenGL/gl3ext.h>
136 #elif !defined(GLFW_INCLUDE_NONE)
137 #if !defined(GLFW_INCLUDE_GLEXT)
138 #define GL_GLEXT_LEGACY
140 #include <OpenGL/gl.h>
142 #if defined(GLFW_INCLUDE_GLU)
143 #include <OpenGL/glu.h>
146 #if defined(GLFW_INCLUDE_GLCOREARB)
147 #include <GL/glcorearb.h>
148 #elif defined(GLFW_INCLUDE_ES1)
150 #if defined(GLFW_INCLUDE_GLEXT)
151 #include <GLES/glext.h>
153 #elif defined(GLFW_INCLUDE_ES2)
154 #include <GLES2/gl2.h>
155 #if defined(GLFW_INCLUDE_GLEXT)
156 #include <GLES2/gl2ext.h>
158 #elif defined(GLFW_INCLUDE_ES3)
159 #include <GLES3/gl3.h>
160 #if defined(GLFW_INCLUDE_GLEXT)
161 #include <GLES2/gl2ext.h>
163 #elif defined(GLFW_INCLUDE_ES31)
164 #include <GLES3/gl31.h>
165 #if defined(GLFW_INCLUDE_GLEXT)
166 #include <GLES2/gl2ext.h>
168 #elif defined(GLFW_INCLUDE_VULKAN)
169 #include <vulkan/vulkan.h>
170 #elif !defined(GLFW_INCLUDE_NONE)
172 #if defined(GLFW_INCLUDE_GLEXT)
173 #include <GL/glext.h>
176 #if defined(GLFW_INCLUDE_GLU)
181#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
186 #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
192#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
194 #define GLFWAPI __declspec(dllexport)
195#elif defined(_WIN32) && defined(GLFW_DLL)
197 #define GLFWAPI __declspec(dllimport)
198#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
200 #define GLFWAPI __attribute__((visibility("default")))
218#define GLFW_VERSION_MAJOR 3
225#define GLFW_VERSION_MINOR 2
232#define GLFW_VERSION_REVISION 1
261#define GLFW_RELEASE 0
302#define GLFW_KEY_UNKNOWN -1
305#define GLFW_KEY_SPACE 32
306#define GLFW_KEY_APOSTROPHE 39
307#define GLFW_KEY_COMMA 44
308#define GLFW_KEY_MINUS 45
309#define GLFW_KEY_PERIOD 46
310#define GLFW_KEY_SLASH 47
321#define GLFW_KEY_SEMICOLON 59
322#define GLFW_KEY_EQUAL 61
349#define GLFW_KEY_LEFT_BRACKET 91
350#define GLFW_KEY_BACKSLASH 92
351#define GLFW_KEY_RIGHT_BRACKET 93
352#define GLFW_KEY_GRAVE_ACCENT 96
353#define GLFW_KEY_WORLD_1 161
354#define GLFW_KEY_WORLD_2 162
357#define GLFW_KEY_ESCAPE 256
358#define GLFW_KEY_ENTER 257
359#define GLFW_KEY_TAB 258
360#define GLFW_KEY_BACKSPACE 259
361#define GLFW_KEY_INSERT 260
362#define GLFW_KEY_DELETE 261
363#define GLFW_KEY_RIGHT 262
364#define GLFW_KEY_LEFT 263
365#define GLFW_KEY_DOWN 264
366#define GLFW_KEY_UP 265
367#define GLFW_KEY_PAGE_UP 266
368#define GLFW_KEY_PAGE_DOWN 267
369#define GLFW_KEY_HOME 268
370#define GLFW_KEY_END 269
371#define GLFW_KEY_CAPS_LOCK 280
372#define GLFW_KEY_SCROLL_LOCK 281
373#define GLFW_KEY_NUM_LOCK 282
374#define GLFW_KEY_PRINT_SCREEN 283
375#define GLFW_KEY_PAUSE 284
376#define GLFW_KEY_F1 290
377#define GLFW_KEY_F2 291
378#define GLFW_KEY_F3 292
379#define GLFW_KEY_F4 293
380#define GLFW_KEY_F5 294
381#define GLFW_KEY_F6 295
382#define GLFW_KEY_F7 296
383#define GLFW_KEY_F8 297
384#define GLFW_KEY_F9 298
385#define GLFW_KEY_F10 299
386#define GLFW_KEY_F11 300
387#define GLFW_KEY_F12 301
388#define GLFW_KEY_F13 302
389#define GLFW_KEY_F14 303
390#define GLFW_KEY_F15 304
391#define GLFW_KEY_F16 305
392#define GLFW_KEY_F17 306
393#define GLFW_KEY_F18 307
394#define GLFW_KEY_F19 308
395#define GLFW_KEY_F20 309
396#define GLFW_KEY_F21 310
397#define GLFW_KEY_F22 311
398#define GLFW_KEY_F23 312
399#define GLFW_KEY_F24 313
400#define GLFW_KEY_F25 314
401#define GLFW_KEY_KP_0 320
402#define GLFW_KEY_KP_1 321
403#define GLFW_KEY_KP_2 322
404#define GLFW_KEY_KP_3 323
405#define GLFW_KEY_KP_4 324
406#define GLFW_KEY_KP_5 325
407#define GLFW_KEY_KP_6 326
408#define GLFW_KEY_KP_7 327
409#define GLFW_KEY_KP_8 328
410#define GLFW_KEY_KP_9 329
411#define GLFW_KEY_KP_DECIMAL 330
412#define GLFW_KEY_KP_DIVIDE 331
413#define GLFW_KEY_KP_MULTIPLY 332
414#define GLFW_KEY_KP_SUBTRACT 333
415#define GLFW_KEY_KP_ADD 334
416#define GLFW_KEY_KP_ENTER 335
417#define GLFW_KEY_KP_EQUAL 336
418#define GLFW_KEY_LEFT_SHIFT 340
419#define GLFW_KEY_LEFT_CONTROL 341
420#define GLFW_KEY_LEFT_ALT 342
421#define GLFW_KEY_LEFT_SUPER 343
422#define GLFW_KEY_RIGHT_SHIFT 344
423#define GLFW_KEY_RIGHT_CONTROL 345
424#define GLFW_KEY_RIGHT_ALT 346
425#define GLFW_KEY_RIGHT_SUPER 347
426#define GLFW_KEY_MENU 348
428#define GLFW_KEY_LAST GLFW_KEY_MENU
441#define GLFW_MOD_SHIFT 0x0001
444#define GLFW_MOD_CONTROL 0x0002
447#define GLFW_MOD_ALT 0x0004
450#define GLFW_MOD_SUPER 0x0008
460#define GLFW_MOUSE_BUTTON_1 0
461#define GLFW_MOUSE_BUTTON_2 1
462#define GLFW_MOUSE_BUTTON_3 2
463#define GLFW_MOUSE_BUTTON_4 3
464#define GLFW_MOUSE_BUTTON_5 4
465#define GLFW_MOUSE_BUTTON_6 5
466#define GLFW_MOUSE_BUTTON_7 6
467#define GLFW_MOUSE_BUTTON_8 7
468#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
469#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
470#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
471#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
480#define GLFW_JOYSTICK_1 0
481#define GLFW_JOYSTICK_2 1
482#define GLFW_JOYSTICK_3 2
483#define GLFW_JOYSTICK_4 3
484#define GLFW_JOYSTICK_5 4
485#define GLFW_JOYSTICK_6 5
486#define GLFW_JOYSTICK_7 6
487#define GLFW_JOYSTICK_8 7
488#define GLFW_JOYSTICK_9 8
489#define GLFW_JOYSTICK_10 9
490#define GLFW_JOYSTICK_11 10
491#define GLFW_JOYSTICK_12 11
492#define GLFW_JOYSTICK_13 12
493#define GLFW_JOYSTICK_14 13
494#define GLFW_JOYSTICK_15 14
495#define GLFW_JOYSTICK_16 15
496#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
513#define GLFW_NOT_INITIALIZED 0x00010001
523#define GLFW_NO_CURRENT_CONTEXT 0x00010002
532#define GLFW_INVALID_ENUM 0x00010003
543#define GLFW_INVALID_VALUE 0x00010004
551#define GLFW_OUT_OF_MEMORY 0x00010005
567#define GLFW_API_UNAVAILABLE 0x00010006
584#define GLFW_VERSION_UNAVAILABLE 0x00010007
595#define GLFW_PLATFORM_ERROR 0x00010008
614#define GLFW_FORMAT_UNAVAILABLE 0x00010009
622#define GLFW_NO_WINDOW_CONTEXT 0x0001000A
625#define GLFW_FOCUSED 0x00020001
626#define GLFW_ICONIFIED 0x00020002
627#define GLFW_RESIZABLE 0x00020003
628#define GLFW_VISIBLE 0x00020004
629#define GLFW_DECORATED 0x00020005
630#define GLFW_AUTO_ICONIFY 0x00020006
631#define GLFW_FLOATING 0x00020007
632#define GLFW_MAXIMIZED 0x00020008
634#define GLFW_RED_BITS 0x00021001
635#define GLFW_GREEN_BITS 0x00021002
636#define GLFW_BLUE_BITS 0x00021003
637#define GLFW_ALPHA_BITS 0x00021004
638#define GLFW_DEPTH_BITS 0x00021005
639#define GLFW_STENCIL_BITS 0x00021006
640#define GLFW_ACCUM_RED_BITS 0x00021007
641#define GLFW_ACCUM_GREEN_BITS 0x00021008
642#define GLFW_ACCUM_BLUE_BITS 0x00021009
643#define GLFW_ACCUM_ALPHA_BITS 0x0002100A
644#define GLFW_AUX_BUFFERS 0x0002100B
645#define GLFW_STEREO 0x0002100C
646#define GLFW_SAMPLES 0x0002100D
647#define GLFW_SRGB_CAPABLE 0x0002100E
648#define GLFW_REFRESH_RATE 0x0002100F
649#define GLFW_DOUBLEBUFFER 0x00021010
651#define GLFW_CLIENT_API 0x00022001
652#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
653#define GLFW_CONTEXT_VERSION_MINOR 0x00022003
654#define GLFW_CONTEXT_REVISION 0x00022004
655#define GLFW_CONTEXT_ROBUSTNESS 0x00022005
656#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
657#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007
658#define GLFW_OPENGL_PROFILE 0x00022008
659#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
660#define GLFW_CONTEXT_NO_ERROR 0x0002200A
661#define GLFW_CONTEXT_CREATION_API 0x0002200B
664#define GLFW_OPENGL_API 0x00030001
665#define GLFW_OPENGL_ES_API 0x00030002
667#define GLFW_NO_ROBUSTNESS 0
668#define GLFW_NO_RESET_NOTIFICATION 0x00031001
669#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
671#define GLFW_OPENGL_ANY_PROFILE 0
672#define GLFW_OPENGL_CORE_PROFILE 0x00032001
673#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
675#define GLFW_CURSOR 0x00033001
676#define GLFW_STICKY_KEYS 0x00033002
677#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
679#define GLFW_CURSOR_NORMAL 0x00034001
680#define GLFW_CURSOR_HIDDEN 0x00034002
681#define GLFW_CURSOR_DISABLED 0x00034003
683#define GLFW_ANY_RELEASE_BEHAVIOR 0
684#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
685#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
687#define GLFW_NATIVE_CONTEXT_API 0x00036001
688#define GLFW_EGL_CONTEXT_API 0x00036002
701#define GLFW_ARROW_CURSOR 0x00036001
706#define GLFW_IBEAM_CURSOR 0x00036002
711#define GLFW_CROSSHAIR_CURSOR 0x00036003
716#define GLFW_HAND_CURSOR 0x00036004
721#define GLFW_HRESIZE_CURSOR 0x00036005
726#define GLFW_VRESIZE_CURSOR 0x00036006
729#define GLFW_CONNECTED 0x00040001
730#define GLFW_DISCONNECTED 0x00040002
732#define GLFW_DONT_CARE -1
4095#if defined(VK_VERSION_1_0)
4230#ifdef GLFW_WINGDIAPI_DEFINED
4232 #undef GLFW_WINGDIAPI_DEFINED
4235#ifdef GLFW_CALLBACK_DEFINED
4237 #undef GLFW_CALLBACK_DEFINED
struct GLFWimage GLFWimage
Image data.
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition: glfw3.h:801
void glfwMakeContextCurrent(GLFWwindow *window)
Makes the context of the specified window current for the calling thread.
GLFWglproc glfwGetProcAddress(const char *procname)
Returns the address of the specified function for the current context.
void(* GLFWglproc)(void)
Client API function pointer type.
Definition: glfw3.h:751
void glfwSwapInterval(int interval)
Sets the swap interval for the current context.
int glfwExtensionSupported(const char *extension)
Returns whether the specified extension is available.
GLFWwindow * glfwGetCurrentContext(void)
Returns the window whose context is current on the calling thread.
const char * glfwGetVersionString(void)
Returns a string describing the compile-time configuration.
int glfwInit(void)
Initializes the GLFW library.
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun)
Sets the error callback.
void(* GLFWerrorfun)(int, const char *)
The function signature for error callbacks.
Definition: glfw3.h:817
void glfwTerminate(void)
Terminates the GLFW library.
void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
Returns the position of the monitor's viewport on the virtual screen.
void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)
Sets the current gamma ramp for the specified monitor.
void glfwSetGamma(GLFWmonitor *monitor, float gamma)
Generates a gamma ramp and sets it for the specified monitor.
GLFWmonitor ** glfwGetMonitors(int *count)
Returns the currently connected monitors.
const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)
Returns the current gamma ramp for the specified monitor.
const char * glfwGetMonitorName(GLFWmonitor *monitor)
Returns the name of the specified monitor.
void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)
Returns the physical size of the monitor.
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:777
struct GLFWvidmode GLFWvidmode
Video mode type.
struct GLFWgammaramp GLFWgammaramp
Gamma ramp.
const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
Returns the current mode of the specified monitor.
GLFWmonitor * glfwGetPrimaryMonitor(void)
Returns the primary monitor.
GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun)
Sets the monitor configuration callback.
void(* GLFWmonitorfun)(GLFWmonitor *, int)
The function signature for monitor configuration callbacks.
Definition: glfw3.h:1105
const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
Returns the available video modes for the specified monitor.
VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
Creates a Vulkan surface for the specified window.
int glfwVulkanSupported(void)
Returns whether the Vulkan loader has been found.
void(* GLFWvkproc)(void)
Vulkan API function pointer type.
Definition: glfw3.h:765
const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
Returns the Vulkan instance extensions required by GLFW.
GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)
Returns the address of the specified Vulkan instance function.
int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
Returns whether the specified queue family can present images.
void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the framebuffer of the specified window.
void glfwSwapBuffers(GLFWwindow *window)
Swaps the front and back buffers of the specified window.
void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)
Retrieves the size of the frame of the window.
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)
Sets the position of the client area of the specified window.
void glfwIconifyWindow(GLFWwindow *window)
Iconifies the specified window.
int glfwWindowShouldClose(GLFWwindow *window)
Checks the close flag of the specified window.
GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun cbfun)
Sets the focus callback for the specified window.
GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun cbfun)
Sets the position callback for the specified window.
GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun cbfun)
Sets the framebuffer resize callback for the specified window.
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
void glfwSetWindowSize(GLFWwindow *window, int width, int height)
Sets the size of the client area of the specified window.
void glfwPollEvents(void)
Processes all pending events.
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:789
void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)
Sets the user pointer of the specified window.
void glfwMaximizeWindow(GLFWwindow *window)
Maximizes the specified window.
GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun cbfun)
Sets the refresh callback for the specified window.
void glfwHideWindow(GLFWwindow *window)
Hides the specified window.
void glfwSetWindowShouldClose(GLFWwindow *window, int value)
Sets the close flag of the specified window.
GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)
Returns the monitor that the window uses for full screen mode.
void glfwRestoreWindow(GLFWwindow *window)
Restores the specified window.
void(* GLFWframebuffersizefun)(GLFWwindow *, int, int)
The function signature for framebuffer resize callbacks.
Definition: glfw3.h:939
void glfwWaitEvents(void)
Waits until events are queued and processes them.
void(* GLFWwindowclosefun)(GLFWwindow *)
The function signature for window close callbacks.
Definition: glfw3.h:870
void glfwSetWindowTitle(GLFWwindow *window, const char *title)
Sets the title of the specified window.
void glfwWaitEventsTimeout(double timeout)
Waits with timeout until events are queued and processes them.
void glfwShowWindow(GLFWwindow *window)
Makes the specified window visible.
void(* GLFWwindowfocusfun)(GLFWwindow *, int)
The function signature for window focus/defocus callbacks.
Definition: glfw3.h:903
void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)
Sets the aspect ratio of the specified window.
void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)
Retrieves the position of the client area of the specified window.
void(* GLFWwindowrefreshfun)(GLFWwindow *)
The function signature for window content refresh callbacks.
Definition: glfw3.h:886
void glfwWindowHint(int hint, int value)
Sets the specified window hint to the desired value.
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.
void glfwFocusWindow(GLFWwindow *window)
Brings the specified window to front and sets input focus.
GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun cbfun)
Sets the size callback for the specified window.
void glfwDefaultWindowHints(void)
Resets all window hints to their default values.
void(* GLFWwindowiconifyfun)(GLFWwindow *, int)
The function signature for window iconify/restore callbacks.
Definition: glfw3.h:921
void(* GLFWwindowsizefun)(GLFWwindow *, int, int)
The function signature for window resize callbacks.
Definition: glfw3.h:854
GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun cbfun)
Sets the close callback for the specified window.
GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun cbfun)
Sets the iconify callback for the specified window.
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
Sets the size limits of the specified window.
int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
Returns an attribute of the specified window.
void glfwDestroyWindow(GLFWwindow *window)
Destroys the specified window and its context.
void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
Sets the icon for the specified window.
void * glfwGetWindowUserPointer(GLFWwindow *window)
Returns the user pointer of the specified window.
void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the client area of the specified window.
void(* GLFWwindowposfun)(GLFWwindow *, int, int)
The function signature for window position callbacks.
Definition: glfw3.h:836
Gamma ramp.
Definition: glfw3.h:1170
unsigned short * red
Definition: glfw3.h:1173
unsigned short * blue
Definition: glfw3.h:1179
unsigned int size
Definition: glfw3.h:1182
unsigned short * green
Definition: glfw3.h:1176
Image data.
Definition: glfw3.h:1194
int height
Definition: glfw3.h:1200
unsigned char * pixels
Definition: glfw3.h:1203
int width
Definition: glfw3.h:1197
Video mode type.
Definition: glfw3.h:1137
int greenBits
Definition: glfw3.h:1149
int redBits
Definition: glfw3.h:1146
int width
Definition: glfw3.h:1140
int refreshRate
Definition: glfw3.h:1155
int height
Definition: glfw3.h:1143
int blueBits
Definition: glfw3.h:1152