glfw3.h
Go to the documentation of this file.
1 /*************************************************************************
2  * GLFW 3.2 - www.glfw.org
3  * A library for OpenGL, window and input
4  *------------------------------------------------------------------------
5  * Copyright (c) 2002-2006 Marcus Geelnard
6  * Copyright (c) 2006-2016 Camilla Berglund <elmindreda@glfw.org>
7  *
8  * This software is provided 'as-is', without any express or implied
9  * warranty. In no event will the authors be held liable for any damages
10  * arising from the use of this software.
11  *
12  * Permission is granted to anyone to use this software for any purpose,
13  * including commercial applications, and to alter it and redistribute it
14  * freely, subject to the following restrictions:
15  *
16  * 1. The origin of this software must not be misrepresented; you must not
17  * claim that you wrote the original software. If you use this software
18  * in a product, an acknowledgment in the product documentation would
19  * be appreciated but is not required.
20  *
21  * 2. Altered source versions must be plainly marked as such, and must not
22  * be misrepresented as being the original software.
23  *
24  * 3. This notice may not be removed or altered from any source
25  * distribution.
26  *
27  *************************************************************************/
28 
29 #ifndef _glfw3_h_
30 #define _glfw3_h_
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 
37 /*************************************************************************
38  * Doxygen documentation
39  *************************************************************************/
40 
83 /*************************************************************************
84  * Compiler- and platform-specific preprocessor work
85  *************************************************************************/
86 
87 /* If we are we on Windows, we want a single define for it.
88  */
89 #if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
90  #define _WIN32
91 #endif /* _WIN32 */
92 
93 /* It is customary to use APIENTRY for OpenGL function pointer declarations on
94  * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.
95  */
96 #ifndef APIENTRY
97  #ifdef _WIN32
98  #define APIENTRY __stdcall
99  #else
100  #define APIENTRY
101  #endif
102 #endif /* APIENTRY */
103 
104 /* Some Windows OpenGL headers need this.
105  */
106 #if !defined(WINGDIAPI) && defined(_WIN32)
107  #define WINGDIAPI __declspec(dllimport)
108  #define GLFW_WINGDIAPI_DEFINED
109 #endif /* WINGDIAPI */
110 
111 /* Some Windows GLU headers need this.
112  */
113 #if !defined(CALLBACK) && defined(_WIN32)
114  #define CALLBACK __stdcall
115  #define GLFW_CALLBACK_DEFINED
116 #endif /* CALLBACK */
117 
118 /* Include because most Windows GLU headers need wchar_t and
119  * the OS X OpenGL header blocks the definition of ptrdiff_t by glext.h.
120  * Include it unconditionally to avoid surprising side-effects.
121  */
122 #include <stddef.h>
123 
124 /* Include because it is needed by Vulkan and related functions.
125  */
126 #include <stdint.h>
127 
128 /* Include the chosen client API headers.
129  */
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>
135  #endif
136  #elif !defined(GLFW_INCLUDE_NONE)
137  #if !defined(GLFW_INCLUDE_GLEXT)
138  #define GL_GLEXT_LEGACY
139  #endif
140  #include <OpenGL/gl.h>
141  #endif
142  #if defined(GLFW_INCLUDE_GLU)
143  #include <OpenGL/glu.h>
144  #endif
145 #else
146  #if defined(GLFW_INCLUDE_GLCOREARB)
147  #include <GL/glcorearb.h>
148  #elif defined(GLFW_INCLUDE_ES1)
149  #include <GLES/gl.h>
150  #if defined(GLFW_INCLUDE_GLEXT)
151  #include <GLES/glext.h>
152  #endif
153  #elif defined(GLFW_INCLUDE_ES2)
154  #include <GLES2/gl2.h>
155  #if defined(GLFW_INCLUDE_GLEXT)
156  #include <GLES2/gl2ext.h>
157  #endif
158  #elif defined(GLFW_INCLUDE_ES3)
159  #include <GLES3/gl3.h>
160  #if defined(GLFW_INCLUDE_GLEXT)
161  #include <GLES2/gl2ext.h>
162  #endif
163  #elif defined(GLFW_INCLUDE_ES31)
164  #include <GLES3/gl31.h>
165  #if defined(GLFW_INCLUDE_GLEXT)
166  #include <GLES2/gl2ext.h>
167  #endif
168  #elif defined(GLFW_INCLUDE_VULKAN)
169  #include <vulkan/vulkan.h>
170  #elif !defined(GLFW_INCLUDE_NONE)
171  #include <GL/gl.h>
172  #if defined(GLFW_INCLUDE_GLEXT)
173  #include <GL/glext.h>
174  #endif
175  #endif
176  #if defined(GLFW_INCLUDE_GLU)
177  #include <GL/glu.h>
178  #endif
179 #endif
180 
181 #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
182  /* GLFW_DLL must be defined by applications that are linking against the DLL
183  * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW
184  * configuration header when compiling the DLL version of the library.
185  */
186  #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
187 #endif
188 
189 /* GLFWAPI is used to declare public API functions for export
190  * from the DLL / shared library / dynamic library.
191  */
192 #if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
193  /* We are building GLFW as a Win32 DLL */
194  #define GLFWAPI __declspec(dllexport)
195 #elif defined(_WIN32) && defined(GLFW_DLL)
196  /* We are calling GLFW as a Win32 DLL */
197  #define GLFWAPI __declspec(dllimport)
198 #elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
199  /* We are building GLFW as a shared / dynamic library */
200  #define GLFWAPI __attribute__((visibility("default")))
201 #else
202  /* We are building or calling GLFW as a static library */
203  #define GLFWAPI
204 #endif
205 
206 
207 /*************************************************************************
208  * GLFW API tokens
209  *************************************************************************/
210 
218 #define GLFW_VERSION_MAJOR 3
219 
225 #define GLFW_VERSION_MINOR 2
226 
232 #define GLFW_VERSION_REVISION 1
233 
243 #define GLFW_TRUE 1
244 
250 #define GLFW_FALSE 0
251 
261 #define GLFW_RELEASE 0
262 
268 #define GLFW_PRESS 1
269 
275 #define GLFW_REPEAT 2
276 
301 /* The unknown key */
302 #define GLFW_KEY_UNKNOWN -1
303 
304 /* Printable keys */
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 /* / */
311 #define GLFW_KEY_0 48
312 #define GLFW_KEY_1 49
313 #define GLFW_KEY_2 50
314 #define GLFW_KEY_3 51
315 #define GLFW_KEY_4 52
316 #define GLFW_KEY_5 53
317 #define GLFW_KEY_6 54
318 #define GLFW_KEY_7 55
319 #define GLFW_KEY_8 56
320 #define GLFW_KEY_9 57
321 #define GLFW_KEY_SEMICOLON 59 /* ; */
322 #define GLFW_KEY_EQUAL 61 /* = */
323 #define GLFW_KEY_A 65
324 #define GLFW_KEY_B 66
325 #define GLFW_KEY_C 67
326 #define GLFW_KEY_D 68
327 #define GLFW_KEY_E 69
328 #define GLFW_KEY_F 70
329 #define GLFW_KEY_G 71
330 #define GLFW_KEY_H 72
331 #define GLFW_KEY_I 73
332 #define GLFW_KEY_J 74
333 #define GLFW_KEY_K 75
334 #define GLFW_KEY_L 76
335 #define GLFW_KEY_M 77
336 #define GLFW_KEY_N 78
337 #define GLFW_KEY_O 79
338 #define GLFW_KEY_P 80
339 #define GLFW_KEY_Q 81
340 #define GLFW_KEY_R 82
341 #define GLFW_KEY_S 83
342 #define GLFW_KEY_T 84
343 #define GLFW_KEY_U 85
344 #define GLFW_KEY_V 86
345 #define GLFW_KEY_W 87
346 #define GLFW_KEY_X 88
347 #define GLFW_KEY_Y 89
348 #define GLFW_KEY_Z 90
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 /* non-US #1 */
354 #define GLFW_KEY_WORLD_2 162 /* non-US #2 */
355 
356 /* Function keys */
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
427 
428 #define GLFW_KEY_LAST GLFW_KEY_MENU
429 
441 #define GLFW_MOD_SHIFT 0x0001
442 
444 #define GLFW_MOD_CONTROL 0x0002
445 
447 #define GLFW_MOD_ALT 0x0004
448 
450 #define GLFW_MOD_SUPER 0x0008
451 
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
472 
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
497 
513 #define GLFW_NOT_INITIALIZED 0x00010001
523 #define GLFW_NO_CURRENT_CONTEXT 0x00010002
524 
532 #define GLFW_INVALID_ENUM 0x00010003
533 
543 #define GLFW_INVALID_VALUE 0x00010004
544 
551 #define GLFW_OUT_OF_MEMORY 0x00010005
552 
567 #define GLFW_API_UNAVAILABLE 0x00010006
568 
584 #define GLFW_VERSION_UNAVAILABLE 0x00010007
585 
595 #define GLFW_PLATFORM_ERROR 0x00010008
596 
614 #define GLFW_FORMAT_UNAVAILABLE 0x00010009
615 
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
633 
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
663 #define GLFW_NO_API 0
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
702 
706 #define GLFW_IBEAM_CURSOR 0x00036002
707 
711 #define GLFW_CROSSHAIR_CURSOR 0x00036003
712 
716 #define GLFW_HAND_CURSOR 0x00036004
717 
721 #define GLFW_HRESIZE_CURSOR 0x00036005
722 
726 #define GLFW_VRESIZE_CURSOR 0x00036006
727 
729 #define GLFW_CONNECTED 0x00040001
730 #define GLFW_DISCONNECTED 0x00040002
732 #define GLFW_DONT_CARE -1
733 
734 
735 /*************************************************************************
736  * GLFW API types
737  *************************************************************************/
738 
751 typedef void (*GLFWglproc)(void);
752 
765 typedef void (*GLFWvkproc)(void);
766 
777 typedef struct GLFWmonitor GLFWmonitor;
778 
789 typedef struct GLFWwindow GLFWwindow;
790 
801 typedef struct GLFWcursor GLFWcursor;
802 
817 typedef void (* GLFWerrorfun)(int,const char*);
818 
836 typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
837 
854 typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
855 
870 typedef void (* GLFWwindowclosefun)(GLFWwindow*);
871 
886 typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
887 
903 typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
904 
921 typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
922 
939 typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int);
940 
960 typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int);
961 
979 typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
980 
996 typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
997 
1013 typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
1014 
1034 typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);
1035 
1051 typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
1052 
1072 typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int);
1073 
1089 typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**);
1090 
1105 typedef void (* GLFWmonitorfun)(GLFWmonitor*,int);
1106 
1122 typedef void (* GLFWjoystickfun)(int,int);
1123 
1136 typedef struct GLFWvidmode
1137 {
1140  int width;
1143  int height;
1146  int redBits;
1149  int greenBits;
1152  int blueBits;
1155  int refreshRate;
1157 
1169 typedef struct GLFWgammaramp
1170 {
1173  unsigned short* red;
1176  unsigned short* green;
1179  unsigned short* blue;
1182  unsigned int size;
1184 
1193 typedef struct GLFWimage
1194 {
1197  int width;
1200  int height;
1203  unsigned char* pixels;
1204 } GLFWimage;
1205 
1206 
1207 /*************************************************************************
1208  * GLFW API functions
1209  *************************************************************************/
1243 GLFWAPI int glfwInit(void);
1244 
1275 GLFWAPI void glfwTerminate(void);
1276 
1302 GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
1303 
1333 GLFWAPI const char* glfwGetVersionString(void);
1334 
1368 
1396 GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
1397 
1420 GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void);
1421 
1445 GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
1446 
1479 GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
1480 
1505 GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
1506 
1529 
1561 GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
1562 
1589 GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
1590 
1611 GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
1612 
1637 GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
1638 
1667 GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
1668 
1685 GLFWAPI void glfwDefaultWindowHints(void);
1686 
1713 GLFWAPI void glfwWindowHint(int hint, int value);
1714 
1834 GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
1835 
1863 GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
1864 
1883 GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
1884 
1905 GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
1906 
1930 GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
1931 
1969 GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
1970 
1997 GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
1998 
2028 GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
2029 
2058 GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
2059 
2098 GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
2099 
2138 GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
2139 
2176 GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
2177 
2205 GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
2206 
2242 GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
2243 
2269 GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
2270 
2296 GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
2297 
2321 GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
2322 
2343 GLFWAPI void glfwShowWindow(GLFWwindow* window);
2344 
2365 GLFWAPI void glfwHideWindow(GLFWwindow* window);
2366 
2393 GLFWAPI void glfwFocusWindow(GLFWwindow* window);
2394 
2415 GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);
2416 
2464 GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
2465 
2497 GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
2498 
2520 GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
2521 
2541 GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);
2542 
2566 
2591 
2624 
2653 
2681 
2704 
2727 
2761 GLFWAPI void glfwPollEvents(void);
2762 
2806 GLFWAPI void glfwWaitEvents(void);
2807 
2852 GLFWAPI void glfwWaitEventsTimeout(double timeout);
2853 
2876 GLFWAPI void glfwPostEmptyEvent(void);
2877 
2899 GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
2900 
2947 GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
2948 
3004 GLFWAPI const char* glfwGetKeyName(int key, int scancode);
3005 
3044 GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
3045 
3073 GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
3074 
3111 GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
3112 
3148 GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
3149 
3188 GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
3189 
3213 GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape);
3214 
3237 GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
3238 
3264 GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
3265 
3307 GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun);
3308 
3345 GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun);
3346 
3379 
3409 
3434 
3458 
3485 
3512 GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun);
3513 
3532 GLFWAPI int glfwJoystickPresent(int joy);
3533 
3566 GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count);
3567 
3601 GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count);
3602 
3633 GLFWAPI const char* glfwGetJoystickName(int joy);
3634 
3657 
3681 GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
3682 
3711 GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
3712 
3738 GLFWAPI double glfwGetTime(void);
3739 
3765 GLFWAPI void glfwSetTime(double time);
3766 
3787 GLFWAPI uint64_t glfwGetTimerValue(void);
3788 
3807 GLFWAPI uint64_t glfwGetTimerFrequency(void);
3808 
3841 GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
3842 
3862 GLFWAPI GLFWwindow* glfwGetCurrentContext(void);
3863 
3896 GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
3897 
3943 GLFWAPI void glfwSwapInterval(int interval);
3944 
3981 GLFWAPI int glfwExtensionSupported(const char* extension);
3982 
4023 GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
4024 
4049 GLFWAPI int glfwVulkanSupported(void);
4050 
4093 GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
4094 
4095 #if defined(VK_VERSION_1_0)
4096 
4136 GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
4137 
4169 GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
4170 
4219 GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
4220 
4221 #endif /*VK_VERSION_1_0*/
4222 
4223 
4224 /*************************************************************************
4225  * Global definition cleanup
4226  *************************************************************************/
4227 
4228 /* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
4229 
4230 #ifdef GLFW_WINGDIAPI_DEFINED
4231  #undef WINGDIAPI
4232  #undef GLFW_WINGDIAPI_DEFINED
4233 #endif
4234 
4235 #ifdef GLFW_CALLBACK_DEFINED
4236  #undef CALLBACK
4237  #undef GLFW_CALLBACK_DEFINED
4238 #endif
4239 
4240 /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
4241 
4242 
4243 #ifdef __cplusplus
4244 }
4245 #endif
4246 
4247 #endif /* _glfw3_h_ */
4248 
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
int redBits
Definition: glfw3.h:1156
void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the client area of the specified window.
void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
Sets the size limits of the specified window.
void(* GLFWwindowiconifyfun)(GLFWwindow *, int)
The function signature for window iconify/restore callbacks.
Definition: glfw3.h:931
int glfwGetInputMode(GLFWwindow *window, int mode)
Returns the value of an input option for the specified window.
int height
Definition: glfw3.h:1153
GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun cbfun)
Sets the refresh callback for the specified window.
GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun cbfun)
Sets the position callback for the specified window.
void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)
Retrieves the position of the client area of the specified window.
void(* GLFWcharmodsfun)(GLFWwindow *, unsigned int, int)
The function signature for Unicode character with modifiers callbacks.
Definition: glfw3.h:1082
int blueBits
Definition: glfw3.h:1162
unsigned char * pixels
Definition: glfw3.h:1213
void(* GLFWmonitorfun)(GLFWmonitor *, int)
The function signature for monitor configuration callbacks.
Definition: glfw3.h:1115
void * glfwGetWindowUserPointer(GLFWwindow *window)
Returns the user pointer of the specified window.
const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
Returns the available video modes for the specified monitor.
const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)
Returns the current gamma ramp for the specified monitor.
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition: glfw3.h:811
void glfwIconifyWindow(GLFWwindow *window)
Iconifies the specified window.
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun)
Sets the error callback.
double glfwGetTime(void)
Returns the value of the GLFW timer.
GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun cbfun)
Sets the iconify callback for the specified window.
void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)
Sets the position of the cursor, relative to the client area of the window.
int width
Definition: glfw3.h:1150
const char * glfwGetVersionString(void)
Returns a string describing the compile-time configuration.
GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun cbfun)
Sets the size callback for the specified window.
const char * glfwGetJoystickName(int joy)
Returns the name of the specified joystick.
void glfwWaitEvents(void)
Waits until events are queued and processes them.
int height
Definition: glfw3.h:1210
GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun cbfun)
Sets the key callback.
const char * glfwGetClipboardString(GLFWwindow *window)
Returns the contents of the clipboard as a string.
void(* GLFWdropfun)(GLFWwindow *, int, const char **)
The function signature for file drop callbacks.
Definition: glfw3.h:1099
GLFWglproc glfwGetProcAddress(const char *procname)
Returns the address of the specified function for the current context.
const char * glfwGetKeyName(int key, int scancode)
Returns the localized name of the specified printable key.
void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)
Retrieves the position of the cursor relative to the client area of the window.
void glfwMaximizeWindow(GLFWwindow *window)
Maximizes the specified window.
void(* GLFWkeyfun)(GLFWwindow *, int, int, int, int)
The function signature for keyboard key callbacks.
Definition: glfw3.h:1044
int refreshRate
Definition: glfw3.h:1165
unsigned short * red
Definition: glfw3.h:1183
void(* GLFWmousebuttonfun)(GLFWwindow *, int, int, int)
The function signature for mouse button callbacks.
Definition: glfw3.h:970
VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
Creates a Vulkan surface for the specified window.
GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun cbfun)
Sets the file drop callback.
void(* GLFWcharfun)(GLFWwindow *, unsigned int)
The function signature for Unicode character callbacks.
Definition: glfw3.h:1061
void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)
Sets the cursor for the window.
const unsigned char * glfwGetJoystickButtons(int joy, int *count)
Returns the state of all buttons of the specified joystick.
GLFWmonitor ** glfwGetMonitors(int *count)
Returns the currently connected monitors.
void glfwDestroyWindow(GLFWwindow *window)
Destroys the specified window and its context.
GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun cbfun)
Sets the cursor position callback.
unsigned short * green
Definition: glfw3.h:1186
GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun cbfun)
Sets the Unicode character callback.
void(* GLFWvkproc)(void)
Vulkan API function pointer type.
Definition: glfw3.h:775
void glfwSetWindowTitle(GLFWwindow *window, const char *title)
Sets the title of the specified window.
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:787
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:799
void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)
Returns the physical size of the monitor.
void glfwShowWindow(GLFWwindow *window)
Makes the specified window visible.
void glfwSetWindowSize(GLFWwindow *window, int width, int height)
Sets the size of the client area of the specified window.
int greenBits
Definition: glfw3.h:1159
const float * glfwGetJoystickAxes(int joy, int *count)
Returns the values of all axes of the specified joystick.
GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)
Creates a custom cursor.
void glfwDestroyCursor(GLFWcursor *cursor)
Destroys a cursor.
void glfwSwapBuffers(GLFWwindow *window)
Swaps the front and back buffers of the specified window.
void glfwSetGamma(GLFWmonitor *monitor, float gamma)
Generates a gamma ramp and sets it for the specified monitor.
void glfwSetInputMode(GLFWwindow *window, int mode, int value)
Sets an input option for the specified window.
const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
Returns the current mode of the specified monitor.
void glfwSetClipboardString(GLFWwindow *window, const char *string)
Sets the clipboard to the specified string.
void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)
Retrieves the size of the frame of the window.
void(* GLFWcursorposfun)(GLFWwindow *, double, double)
The function signature for cursor position callbacks.
Definition: glfw3.h:989
void glfwRestoreWindow(GLFWwindow *window)
Restores the specified window.
int glfwGetMouseButton(GLFWwindow *window, int button)
Returns the last reported state of a mouse button for the specified window.
void(* GLFWwindowsizefun)(GLFWwindow *, int, int)
The function signature for window resize callbacks.
Definition: glfw3.h:864
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 glfwSetTime(double time)
Sets the GLFW timer.
void glfwFocusWindow(GLFWwindow *window)
Brings the specified window to front and sets input focus.
struct GLFWgammaramp GLFWgammaramp
Gamma ramp.
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
unsigned int size
Definition: glfw3.h:1192
void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)
Sets the user pointer of the specified window.
void glfwSetWindowShouldClose(GLFWwindow *window, int value)
Sets the close flag of the specified window.
GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)
Returns the address of the specified Vulkan instance function.
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
void glfwWaitEventsTimeout(double timeout)
Waits with timeout until events are queued and processes them.
GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun cbfun)
Sets the framebuffer resize callback for the specified window.
void(* GLFWframebuffersizefun)(GLFWwindow *, int, int)
The function signature for framebuffer resize callbacks.
Definition: glfw3.h:949
int glfwJoystickPresent(int joy)
Returns whether the specified joystick is present.
GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun)
Sets the joystick configuration callback.
int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
Returns whether the specified queue family can present images.
void(* GLFWwindowposfun)(GLFWwindow *, int, int)
The function signature for window position callbacks.
Definition: glfw3.h:846
void glfwPollEvents(void)
Processes all pending events.
uint64_t glfwGetTimerValue(void)
Returns the current value of the raw timer.
void glfwHideWindow(GLFWwindow *window)
Hides the specified window.
GLFWwindow * glfwGetCurrentContext(void)
Returns the window whose context is current on the calling thread.
void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)
Sets the current gamma ramp for the specified monitor.
uint64_t glfwGetTimerFrequency(void)
Returns the frequency, in Hz, of the raw timer.
GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun cbfun)
Sets the cursor enter/exit callback.
int width
Definition: glfw3.h:1207
GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)
Returns the monitor that the window uses for full screen mode.
GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun cbfun)
Sets the mouse button callback.
GLFWmonitor * glfwGetPrimaryMonitor(void)
Returns the primary monitor.
int glfwGetKey(GLFWwindow *window, int key)
Returns the last reported state of a keyboard key for the specified window.
void glfwMakeContextCurrent(GLFWwindow *window)
Makes the context of the specified window current for the calling thread.
Gamma ramp.
Definition: glfw3.h:1179
GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun cbfun)
Sets the close callback for the specified window.
void(* GLFWjoystickfun)(int, int)
The function signature for joystick configuration callbacks.
Definition: glfw3.h:1132
GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun cbfun)
Sets the scroll callback.
unsigned short * blue
Definition: glfw3.h:1189
Video mode type.
Definition: glfw3.h:1146
int glfwVulkanSupported(void)
Returns whether the Vulkan loader has been found.
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)
Sets the position of the client area of the specified window.
int glfwExtensionSupported(const char *extension)
Returns whether the specified extension is available.
void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the framebuffer of the specified window.
void(* GLFWwindowclosefun)(GLFWwindow *)
The function signature for window close callbacks.
Definition: glfw3.h:880
void glfwWindowHint(int hint, int value)
Sets the specified window hint to the desired value.
GLFWcursor * glfwCreateStandardCursor(int shape)
Creates a cursor with a standard shape.
void glfwSwapInterval(int interval)
Sets the swap interval for the current context.
GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun cbfun)
Sets the Unicode character with modifiers callback.
const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
Returns the Vulkan instance extensions required by GLFW.
void(* GLFWcursorenterfun)(GLFWwindow *, int)
The function signature for cursor enter/leave callbacks.
Definition: glfw3.h:1006
int glfwInit(void)
Initializes the GLFW library.
Image data.
Definition: glfw3.h:1203
void(* GLFWscrollfun)(GLFWwindow *, double, double)
The function signature for scroll callbacks.
Definition: glfw3.h:1023
void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
Returns the position of the monitor&#39;s viewport on the virtual screen.
struct GLFWvidmode GLFWvidmode
Video mode type.
void glfwDefaultWindowHints(void)
Resets all window hints to their default values.
GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun cbfun)
Sets the focus callback for the specified window.
void glfwTerminate(void)
Terminates the GLFW library.
void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
Sets the icon for the specified window.
struct GLFWimage GLFWimage
Image data.
GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun)
Sets the monitor configuration callback.
void(* GLFWwindowrefreshfun)(GLFWwindow *)
The function signature for window content refresh callbacks.
Definition: glfw3.h:896
void(* GLFWglproc)(void)
Client API function pointer type.
Definition: glfw3.h:761
const char * glfwGetMonitorName(GLFWmonitor *monitor)
Returns the name of the specified monitor.
void(* GLFWerrorfun)(int, const char *)
The function signature for error callbacks.
Definition: glfw3.h:827
void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)
Sets the aspect ratio of the specified window.
int glfwWindowShouldClose(GLFWwindow *window)
Checks the close flag of the specified window.
int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
Returns an attribute of the specified window.
void(* GLFWwindowfocusfun)(GLFWwindow *, int)
The function signature for window focus/defocus callbacks.
Definition: glfw3.h:913