Loading...
Searching...
No Matches
glfw3.h
Go to the documentation of this file.
1/*************************************************************************
2 * GLFW 3.5 - www.glfw.org
3 * A library for OpenGL, window and input
4 *------------------------------------------------------------------------
5 * Copyright (c) 2002-2006 Marcus Geelnard
6 * Copyright (c) 2006-2019 Camilla Löwy <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
33extern "C" {
34#endif
35
36
37/*************************************************************************
38 * Doxygen documentation
39 *************************************************************************/
40
89/*************************************************************************
90 * Compiler- and platform-specific preprocessor work
91 *************************************************************************/
92
93/* If we are we on Windows, we want a single define for it.
94 */
95#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
96 #define _WIN32
97#endif /* _WIN32 */
98
99/* Include because most Windows GLU headers need wchar_t and
100 * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.
101 * Include it unconditionally to avoid surprising side-effects.
102 */
103#include <stddef.h>
104
105/* Include because it is needed by Vulkan and related functions.
106 * Include it unconditionally to avoid surprising side-effects.
107 */
108#include <stdint.h>
109
110#if defined(GLFW_INCLUDE_VULKAN)
111 #include <vulkan/vulkan.h>
112#endif /* Vulkan header */
113
114/* The Vulkan header may have indirectly included windows.h (because of
115 * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.
116 */
117
118/* It is customary to use APIENTRY for OpenGL function pointer declarations on
119 * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.
120 */
121#if !defined(APIENTRY)
122 #if defined(_WIN32)
123 #define APIENTRY __stdcall
124 #else
125 #define APIENTRY
126 #endif
127 #define GLFW_APIENTRY_DEFINED
128#endif /* APIENTRY */
129
130/* Some Windows OpenGL headers need this.
131 */
132#if !defined(WINGDIAPI) && defined(_WIN32)
133 #define WINGDIAPI __declspec(dllimport)
134 #define GLFW_WINGDIAPI_DEFINED
135#endif /* WINGDIAPI */
136
137/* Some Windows GLU headers need this.
138 */
139#if !defined(CALLBACK) && defined(_WIN32)
140 #define CALLBACK __stdcall
141 #define GLFW_CALLBACK_DEFINED
142#endif /* CALLBACK */
143
144/* Include the chosen OpenGL or OpenGL ES headers.
145 */
146#if defined(GLFW_INCLUDE_ES1)
147
148 #include <GLES/gl.h>
149 #if defined(GLFW_INCLUDE_GLEXT)
150 #include <GLES/glext.h>
151 #endif
152
153#elif defined(GLFW_INCLUDE_ES2)
154
155 #include <GLES2/gl2.h>
156 #if defined(GLFW_INCLUDE_GLEXT)
157 #include <GLES2/gl2ext.h>
158 #endif
159
160#elif defined(GLFW_INCLUDE_ES3)
161
162 #include <GLES3/gl3.h>
163 #if defined(GLFW_INCLUDE_GLEXT)
164 #include <GLES2/gl2ext.h>
165 #endif
166
167#elif defined(GLFW_INCLUDE_ES31)
168
169 #include <GLES3/gl31.h>
170 #if defined(GLFW_INCLUDE_GLEXT)
171 #include <GLES2/gl2ext.h>
172 #endif
173
174#elif defined(GLFW_INCLUDE_ES32)
175
176 #include <GLES3/gl32.h>
177 #if defined(GLFW_INCLUDE_GLEXT)
178 #include <GLES2/gl2ext.h>
179 #endif
180
181#elif defined(GLFW_INCLUDE_GLCOREARB)
182
183 #if defined(__APPLE__)
184
185 #include <OpenGL/gl3.h>
186 #if defined(GLFW_INCLUDE_GLEXT)
187 #include <OpenGL/gl3ext.h>
188 #endif /*GLFW_INCLUDE_GLEXT*/
189
190 #else /*__APPLE__*/
191
192 #include <GL/glcorearb.h>
193 #if defined(GLFW_INCLUDE_GLEXT)
194 #include <GL/glext.h>
195 #endif
196
197 #endif /*__APPLE__*/
198
199#elif defined(GLFW_INCLUDE_GLU)
200
201 #if defined(__APPLE__)
202
203 #if defined(GLFW_INCLUDE_GLU)
204 #include <OpenGL/glu.h>
205 #endif
206
207 #else /*__APPLE__*/
208
209 #if defined(GLFW_INCLUDE_GLU)
210 #include <GL/glu.h>
211 #endif
212
213 #endif /*__APPLE__*/
214
215#elif !defined(GLFW_INCLUDE_NONE) && \
216 !defined(__gl_h_) && \
217 !defined(__gles1_gl_h_) && \
218 !defined(__gles2_gl2_h_) && \
219 !defined(__gles2_gl3_h_) && \
220 !defined(__gles2_gl31_h_) && \
221 !defined(__gles2_gl32_h_) && \
222 !defined(__gl_glcorearb_h_) && \
223 !defined(__gl2_h_) /*legacy*/ && \
224 !defined(__gl3_h_) /*legacy*/ && \
225 !defined(__gl31_h_) /*legacy*/ && \
226 !defined(__gl32_h_) /*legacy*/ && \
227 !defined(__glcorearb_h_) /*legacy*/ && \
228 !defined(__GL_H__) /*non-standard*/ && \
229 !defined(__gltypes_h_) /*non-standard*/ && \
230 !defined(__glee_h_) /*non-standard*/
231
232 #if defined(__APPLE__)
233
234 #if !defined(GLFW_INCLUDE_GLEXT)
235 #define GL_GLEXT_LEGACY
236 #endif
237 #include <OpenGL/gl.h>
238
239 #else /*__APPLE__*/
240
241 #include <GL/gl.h>
242 #if defined(GLFW_INCLUDE_GLEXT)
243 #include <GL/glext.h>
244 #endif
245
246 #endif /*__APPLE__*/
247
248#endif /* OpenGL and OpenGL ES headers */
249
250#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
251 /* GLFW_DLL must be defined by applications that are linking against the DLL
252 * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW
253 * configuration header when compiling the DLL version of the library.
254 */
255 #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
256#endif
257
258/* GLFWAPI is used to declare public API functions for export
259 * from the DLL / shared library / dynamic library.
260 */
261#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
262 /* We are building GLFW as a Win32 DLL */
263 #define GLFWAPI __declspec(dllexport)
264#elif defined(_WIN32) && defined(GLFW_DLL)
265 /* We are calling a GLFW Win32 DLL */
266 #define GLFWAPI __declspec(dllimport)
267#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
268 /* We are building GLFW as a Unix shared library */
269 #define GLFWAPI __attribute__((visibility("default")))
270#else
271 #define GLFWAPI
272#endif
273
274
275/*************************************************************************
276 * GLFW API tokens
277 *************************************************************************/
278
287#define GLFW_VERSION_MAJOR 3
294#define GLFW_VERSION_MINOR 5
301#define GLFW_VERSION_REVISION 0
312#define GLFW_TRUE 1
321#define GLFW_FALSE 0
322
331#define GLFW_RELEASE 0
338#define GLFW_PRESS 1
345#define GLFW_REPEAT 2
355#define GLFW_HAT_CENTERED 0
356#define GLFW_HAT_UP 1
357#define GLFW_HAT_RIGHT 2
358#define GLFW_HAT_DOWN 4
359#define GLFW_HAT_LEFT 8
360#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)
361#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
362#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)
363#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
364
367#define GLFW_KEY_UNKNOWN -1
368
395/* Printable keys */
396#define GLFW_KEY_SPACE 32
397#define GLFW_KEY_APOSTROPHE 39 /* ' */
398#define GLFW_KEY_COMMA 44 /* , */
399#define GLFW_KEY_MINUS 45 /* - */
400#define GLFW_KEY_PERIOD 46 /* . */
401#define GLFW_KEY_SLASH 47 /* / */
402#define GLFW_KEY_0 48
403#define GLFW_KEY_1 49
404#define GLFW_KEY_2 50
405#define GLFW_KEY_3 51
406#define GLFW_KEY_4 52
407#define GLFW_KEY_5 53
408#define GLFW_KEY_6 54
409#define GLFW_KEY_7 55
410#define GLFW_KEY_8 56
411#define GLFW_KEY_9 57
412#define GLFW_KEY_SEMICOLON 59 /* ; */
413#define GLFW_KEY_EQUAL 61 /* = */
414#define GLFW_KEY_A 65
415#define GLFW_KEY_B 66
416#define GLFW_KEY_C 67
417#define GLFW_KEY_D 68
418#define GLFW_KEY_E 69
419#define GLFW_KEY_F 70
420#define GLFW_KEY_G 71
421#define GLFW_KEY_H 72
422#define GLFW_KEY_I 73
423#define GLFW_KEY_J 74
424#define GLFW_KEY_K 75
425#define GLFW_KEY_L 76
426#define GLFW_KEY_M 77
427#define GLFW_KEY_N 78
428#define GLFW_KEY_O 79
429#define GLFW_KEY_P 80
430#define GLFW_KEY_Q 81
431#define GLFW_KEY_R 82
432#define GLFW_KEY_S 83
433#define GLFW_KEY_T 84
434#define GLFW_KEY_U 85
435#define GLFW_KEY_V 86
436#define GLFW_KEY_W 87
437#define GLFW_KEY_X 88
438#define GLFW_KEY_Y 89
439#define GLFW_KEY_Z 90
440#define GLFW_KEY_LEFT_BRACKET 91 /* [ */
441#define GLFW_KEY_BACKSLASH 92 /* \ */
442#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */
443#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
444#define GLFW_KEY_WORLD_1 161 /* non-US #1 */
445#define GLFW_KEY_WORLD_2 162 /* non-US #2 */
446
447/* Function keys */
448#define GLFW_KEY_ESCAPE 256
449#define GLFW_KEY_ENTER 257
450#define GLFW_KEY_TAB 258
451#define GLFW_KEY_BACKSPACE 259
452#define GLFW_KEY_INSERT 260
453#define GLFW_KEY_DELETE 261
454#define GLFW_KEY_RIGHT 262
455#define GLFW_KEY_LEFT 263
456#define GLFW_KEY_DOWN 264
457#define GLFW_KEY_UP 265
458#define GLFW_KEY_PAGE_UP 266
459#define GLFW_KEY_PAGE_DOWN 267
460#define GLFW_KEY_HOME 268
461#define GLFW_KEY_END 269
462#define GLFW_KEY_CAPS_LOCK 280
463#define GLFW_KEY_SCROLL_LOCK 281
464#define GLFW_KEY_NUM_LOCK 282
465#define GLFW_KEY_PRINT_SCREEN 283
466#define GLFW_KEY_PAUSE 284
467#define GLFW_KEY_F1 290
468#define GLFW_KEY_F2 291
469#define GLFW_KEY_F3 292
470#define GLFW_KEY_F4 293
471#define GLFW_KEY_F5 294
472#define GLFW_KEY_F6 295
473#define GLFW_KEY_F7 296
474#define GLFW_KEY_F8 297
475#define GLFW_KEY_F9 298
476#define GLFW_KEY_F10 299
477#define GLFW_KEY_F11 300
478#define GLFW_KEY_F12 301
479#define GLFW_KEY_F13 302
480#define GLFW_KEY_F14 303
481#define GLFW_KEY_F15 304
482#define GLFW_KEY_F16 305
483#define GLFW_KEY_F17 306
484#define GLFW_KEY_F18 307
485#define GLFW_KEY_F19 308
486#define GLFW_KEY_F20 309
487#define GLFW_KEY_F21 310
488#define GLFW_KEY_F22 311
489#define GLFW_KEY_F23 312
490#define GLFW_KEY_F24 313
491#define GLFW_KEY_F25 314
492#define GLFW_KEY_KP_0 320
493#define GLFW_KEY_KP_1 321
494#define GLFW_KEY_KP_2 322
495#define GLFW_KEY_KP_3 323
496#define GLFW_KEY_KP_4 324
497#define GLFW_KEY_KP_5 325
498#define GLFW_KEY_KP_6 326
499#define GLFW_KEY_KP_7 327
500#define GLFW_KEY_KP_8 328
501#define GLFW_KEY_KP_9 329
502#define GLFW_KEY_KP_DECIMAL 330
503#define GLFW_KEY_KP_DIVIDE 331
504#define GLFW_KEY_KP_MULTIPLY 332
505#define GLFW_KEY_KP_SUBTRACT 333
506#define GLFW_KEY_KP_ADD 334
507#define GLFW_KEY_KP_ENTER 335
508#define GLFW_KEY_KP_EQUAL 336
509#define GLFW_KEY_LEFT_SHIFT 340
510#define GLFW_KEY_LEFT_CONTROL 341
511#define GLFW_KEY_LEFT_ALT 342
512#define GLFW_KEY_LEFT_SUPER 343
513#define GLFW_KEY_RIGHT_SHIFT 344
514#define GLFW_KEY_RIGHT_CONTROL 345
515#define GLFW_KEY_RIGHT_ALT 346
516#define GLFW_KEY_RIGHT_SUPER 347
517#define GLFW_KEY_MENU 348
518
519#define GLFW_KEY_LAST GLFW_KEY_MENU
520
535#define GLFW_MOD_SHIFT 0x0001
540#define GLFW_MOD_CONTROL 0x0002
545#define GLFW_MOD_ALT 0x0004
550#define GLFW_MOD_SUPER 0x0008
556#define GLFW_MOD_CAPS_LOCK 0x0010
562#define GLFW_MOD_NUM_LOCK 0x0020
563
573#define GLFW_MOUSE_BUTTON_1 0
574#define GLFW_MOUSE_BUTTON_2 1
575#define GLFW_MOUSE_BUTTON_3 2
576#define GLFW_MOUSE_BUTTON_4 3
577#define GLFW_MOUSE_BUTTON_5 4
578#define GLFW_MOUSE_BUTTON_6 5
579#define GLFW_MOUSE_BUTTON_7 6
580#define GLFW_MOUSE_BUTTON_8 7
581#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
582#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
583#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
584#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
594#define GLFW_JOYSTICK_1 0
595#define GLFW_JOYSTICK_2 1
596#define GLFW_JOYSTICK_3 2
597#define GLFW_JOYSTICK_4 3
598#define GLFW_JOYSTICK_5 4
599#define GLFW_JOYSTICK_6 5
600#define GLFW_JOYSTICK_7 6
601#define GLFW_JOYSTICK_8 7
602#define GLFW_JOYSTICK_9 8
603#define GLFW_JOYSTICK_10 9
604#define GLFW_JOYSTICK_11 10
605#define GLFW_JOYSTICK_12 11
606#define GLFW_JOYSTICK_13 12
607#define GLFW_JOYSTICK_14 13
608#define GLFW_JOYSTICK_15 14
609#define GLFW_JOYSTICK_16 15
610#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
620#define GLFW_GAMEPAD_BUTTON_A 0
621#define GLFW_GAMEPAD_BUTTON_B 1
622#define GLFW_GAMEPAD_BUTTON_X 2
623#define GLFW_GAMEPAD_BUTTON_Y 3
624#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4
625#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5
626#define GLFW_GAMEPAD_BUTTON_BACK 6
627#define GLFW_GAMEPAD_BUTTON_START 7
628#define GLFW_GAMEPAD_BUTTON_GUIDE 8
629#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9
630#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10
631#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11
632#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12
633#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13
634#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14
635#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT
636
637#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A
638#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B
639#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X
640#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y
650#define GLFW_GAMEPAD_AXIS_LEFT_X 0
651#define GLFW_GAMEPAD_AXIS_LEFT_Y 1
652#define GLFW_GAMEPAD_AXIS_RIGHT_X 2
653#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3
654#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4
655#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5
656#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
672#define GLFW_NO_ERROR 0
681#define GLFW_NOT_INITIALIZED 0x00010001
691#define GLFW_NO_CURRENT_CONTEXT 0x00010002
699#define GLFW_INVALID_ENUM 0x00010003
710#define GLFW_INVALID_VALUE 0x00010004
718#define GLFW_OUT_OF_MEMORY 0x00010005
734#define GLFW_API_UNAVAILABLE 0x00010006
751#define GLFW_VERSION_UNAVAILABLE 0x00010007
762#define GLFW_PLATFORM_ERROR 0x00010008
781#define GLFW_FORMAT_UNAVAILABLE 0x00010009
789#define GLFW_NO_WINDOW_CONTEXT 0x0001000A
800#define GLFW_CURSOR_UNAVAILABLE 0x0001000B
814#define GLFW_FEATURE_UNAVAILABLE 0x0001000C
827#define GLFW_FEATURE_UNIMPLEMENTED 0x0001000D
849#define GLFW_PLATFORM_UNAVAILABLE 0x0001000E
859#define GLFW_FOCUSED 0x00020001
864#define GLFW_ICONIFIED 0x00020002
870#define GLFW_RESIZABLE 0x00020003
876#define GLFW_VISIBLE 0x00020004
882#define GLFW_DECORATED 0x00020005
888#define GLFW_AUTO_ICONIFY 0x00020006
894#define GLFW_FLOATING 0x00020007
900#define GLFW_MAXIMIZED 0x00020008
905#define GLFW_CENTER_CURSOR 0x00020009
912#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A
917#define GLFW_HOVERED 0x0002000B
923#define GLFW_FOCUS_ON_SHOW 0x0002000C
924
930#define GLFW_MOUSE_PASSTHROUGH 0x0002000D
931
936#define GLFW_POSITION_X 0x0002000E
937
942#define GLFW_POSITION_Y 0x0002000F
943
948#define GLFW_RED_BITS 0x00021001
953#define GLFW_GREEN_BITS 0x00021002
958#define GLFW_BLUE_BITS 0x00021003
963#define GLFW_ALPHA_BITS 0x00021004
968#define GLFW_DEPTH_BITS 0x00021005
973#define GLFW_STENCIL_BITS 0x00021006
978#define GLFW_ACCUM_RED_BITS 0x00021007
983#define GLFW_ACCUM_GREEN_BITS 0x00021008
988#define GLFW_ACCUM_BLUE_BITS 0x00021009
993#define GLFW_ACCUM_ALPHA_BITS 0x0002100A
998#define GLFW_AUX_BUFFERS 0x0002100B
1003#define GLFW_STEREO 0x0002100C
1008#define GLFW_SAMPLES 0x0002100D
1013#define GLFW_SRGB_CAPABLE 0x0002100E
1018#define GLFW_REFRESH_RATE 0x0002100F
1024#define GLFW_DOUBLEBUFFER 0x00021010
1025
1031#define GLFW_CLIENT_API 0x00022001
1037#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
1043#define GLFW_CONTEXT_VERSION_MINOR 0x00022003
1049#define GLFW_CONTEXT_REVISION 0x00022004
1055#define GLFW_CONTEXT_ROBUSTNESS 0x00022005
1061#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
1067#define GLFW_CONTEXT_DEBUG 0x00022007
1072#define GLFW_OPENGL_DEBUG_CONTEXT GLFW_CONTEXT_DEBUG
1078#define GLFW_OPENGL_PROFILE 0x00022008
1084#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
1090#define GLFW_CONTEXT_NO_ERROR 0x0002200A
1096#define GLFW_CONTEXT_CREATION_API 0x0002200B
1100#define GLFW_SCALE_TO_MONITOR 0x0002200C
1104#define GLFW_SCALE_FRAMEBUFFER 0x0002200D
1111#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001
1115#define GLFW_COCOA_FRAME_NAME 0x00023002
1119#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
1123#define GLFW_X11_CLASS_NAME 0x00024001
1127#define GLFW_X11_INSTANCE_NAME 0x00024002
1128#define GLFW_WIN32_KEYBOARD_MENU 0x00025001
1131#define GLFW_WIN32_SHOWDEFAULT 0x00025002
1137#define GLFW_WAYLAND_APP_ID 0x00026001
1140#define GLFW_NO_API 0
1141#define GLFW_OPENGL_API 0x00030001
1142#define GLFW_OPENGL_ES_API 0x00030002
1143
1144#define GLFW_NO_ROBUSTNESS 0
1145#define GLFW_NO_RESET_NOTIFICATION 0x00031001
1146#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
1147
1148#define GLFW_OPENGL_ANY_PROFILE 0
1149#define GLFW_OPENGL_CORE_PROFILE 0x00032001
1150#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
1151
1152#define GLFW_CURSOR 0x00033001
1153#define GLFW_STICKY_KEYS 0x00033002
1154#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
1155#define GLFW_LOCK_KEY_MODS 0x00033004
1156#define GLFW_RAW_MOUSE_MOTION 0x00033005
1157#define GLFW_UNLIMITED_MOUSE_BUTTONS 0x00033006
1158
1159#define GLFW_CURSOR_NORMAL 0x00034001
1160#define GLFW_CURSOR_HIDDEN 0x00034002
1161#define GLFW_CURSOR_DISABLED 0x00034003
1162#define GLFW_CURSOR_CAPTURED 0x00034004
1163
1164#define GLFW_ANY_RELEASE_BEHAVIOR 0
1165#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
1166#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
1167
1168#define GLFW_NATIVE_CONTEXT_API 0x00036001
1169#define GLFW_EGL_CONTEXT_API 0x00036002
1170#define GLFW_OSMESA_CONTEXT_API 0x00036003
1171
1172#define GLFW_ANGLE_PLATFORM_TYPE_NONE 0x00037001
1173#define GLFW_ANGLE_PLATFORM_TYPE_OPENGL 0x00037002
1174#define GLFW_ANGLE_PLATFORM_TYPE_OPENGLES 0x00037003
1175#define GLFW_ANGLE_PLATFORM_TYPE_D3D9 0x00037004
1176#define GLFW_ANGLE_PLATFORM_TYPE_D3D11 0x00037005
1177#define GLFW_ANGLE_PLATFORM_TYPE_VULKAN 0x00037007
1178#define GLFW_ANGLE_PLATFORM_TYPE_METAL 0x00037008
1179
1180#define GLFW_WAYLAND_PREFER_LIBDECOR 0x00038001
1181#define GLFW_WAYLAND_DISABLE_LIBDECOR 0x00038002
1182
1183#define GLFW_ANY_POSITION 0x80000000
1184
1198#define GLFW_ARROW_CURSOR 0x00036001
1203#define GLFW_IBEAM_CURSOR 0x00036002
1208#define GLFW_CROSSHAIR_CURSOR 0x00036003
1213#define GLFW_POINTING_HAND_CURSOR 0x00036004
1219#define GLFW_RESIZE_EW_CURSOR 0x00036005
1225#define GLFW_RESIZE_NS_CURSOR 0x00036006
1240#define GLFW_RESIZE_NWSE_CURSOR 0x00036007
1255#define GLFW_RESIZE_NESW_CURSOR 0x00036008
1261#define GLFW_RESIZE_ALL_CURSOR 0x00036009
1273#define GLFW_NOT_ALLOWED_CURSOR 0x0003600A
1278#define GLFW_HRESIZE_CURSOR GLFW_RESIZE_EW_CURSOR
1283#define GLFW_VRESIZE_CURSOR GLFW_RESIZE_NS_CURSOR
1288#define GLFW_HAND_CURSOR GLFW_POINTING_HAND_CURSOR
1291#define GLFW_CONNECTED 0x00040001
1292#define GLFW_DISCONNECTED 0x00040002
1293
1300#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001
1305#define GLFW_ANGLE_PLATFORM_TYPE 0x00050002
1310#define GLFW_PLATFORM 0x00050003
1315#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001
1320#define GLFW_COCOA_MENUBAR 0x00051002
1325#define GLFW_X11_XCB_VULKAN_SURFACE 0x00052001
1330#define GLFW_WAYLAND_LIBDECOR 0x00053001
1339#define GLFW_ANY_PLATFORM 0x00060000
1340#define GLFW_PLATFORM_WIN32 0x00060001
1341#define GLFW_PLATFORM_COCOA 0x00060002
1342#define GLFW_PLATFORM_WAYLAND 0x00060003
1343#define GLFW_PLATFORM_X11 0x00060004
1344#define GLFW_PLATFORM_NULL 0x00060005
1347#define GLFW_DONT_CARE -1
1348
1349
1350/*************************************************************************
1351 * GLFW API types
1352 *************************************************************************/
1353
1366typedef void (*GLFWglproc)(void);
1367
1380typedef void (*GLFWvkproc)(void);
1381
1393
1404typedef struct GLFWwindow GLFWwindow;
1405
1416typedef struct GLFWcursor GLFWcursor;
1417
1469typedef void* (* GLFWallocatefun)(size_t size, void* user);
1470
1525typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
1526
1567typedef void (* GLFWdeallocatefun)(void* block, void* user);
1568
1591typedef void (* GLFWerrorfun)(int error_code, const char* description);
1592
1614typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos);
1615
1636typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height);
1637
1656typedef void (* GLFWwindowclosefun)(GLFWwindow* window);
1657
1676typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window);
1677
1697typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused);
1698
1718typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified);
1719
1739typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized);
1740
1760typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height);
1761
1781typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale);
1782
1807typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods);
1808
1830typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos);
1831
1851typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered);
1852
1872typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset);
1873
1898typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods);
1899
1919typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint);
1920
1946typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods);
1947
1970typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]);
1971
1991typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event);
1992
2012typedef void (* GLFWjoystickfun)(int jid, int event);
2013
2048
2061typedef struct GLFWgammaramp
2062{
2065 unsigned short* red;
2068 unsigned short* green;
2071 unsigned short* blue;
2074 unsigned int size;
2076
2090typedef struct GLFWimage
2091{
2100 unsigned char* pixels;
2102
2114typedef struct GLFWgamepadstate
2115{
2119 unsigned char buttons[15];
2123 float axes[6];
2125
2157
2158
2159/*************************************************************************
2160 * GLFW API functions
2161 *************************************************************************/
2162
2221GLFWAPI int glfwInit(void);
2222
2255GLFWAPI void glfwTerminate(void);
2256
2287GLFWAPI void glfwInitHint(int hint, int value);
2288
2318GLFWAPI void glfwInitAllocator(const GLFWallocator* allocator);
2319
2320#if defined(VK_VERSION_1_0)
2321
2364GLFWAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader);
2365
2366#endif /*VK_VERSION_1_0*/
2367
2393GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
2394
2427GLFWAPI const char* glfwGetVersionString(void);
2428
2458GLFWAPI int glfwGetError(const char** description);
2459
2505
2525GLFWAPI int glfwGetPlatform(void);
2526
2549GLFWAPI int glfwPlatformSupported(int platform);
2550
2578GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
2579
2603
2627GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
2628
2658GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
2659
2693GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
2694
2728GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);
2729
2754GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
2755
2780GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer);
2781
2805
2835
2868GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
2869
2897
2929GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
2930
2960
3000GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
3001
3019GLFWAPI void glfwDefaultWindowHints(void);
3020
3054GLFWAPI void glfwWindowHint(int hint, int value);
3055
3092GLFWAPI void glfwWindowHintString(int hint, const char* value);
3093
3236GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
3237
3265GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
3266
3286
3307GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
3308
3339GLFWAPI const char* glfwGetWindowTitle(GLFWwindow* window);
3340
3365GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
3366
3414GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
3415
3446GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
3447
3481GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
3482
3511GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
3512
3554GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
3555
3597GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
3598
3635GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
3636
3664GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
3665
3701GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
3702
3734GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);
3735
3761GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window);
3762
3793GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity);
3794
3825GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
3826
3852GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
3853
3877GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
3878
3909GLFWAPI void glfwShowWindow(GLFWwindow* window);
3910
3931GLFWAPI void glfwHideWindow(GLFWwindow* window);
3932
3970GLFWAPI void glfwFocusWindow(GLFWwindow* window);
3971
3998
4020
4075GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
4076
4112GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
4113
4154GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);
4155
4177GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
4178
4199
4234
4266
4306
4342
4377
4407
4437
4467
4498
4535GLFWAPI void glfwPollEvents(void);
4536
4580GLFWAPI void glfwWaitEvents(void);
4581
4629GLFWAPI void glfwWaitEventsTimeout(double timeout);
4630
4649GLFWAPI void glfwPostEmptyEvent(void);
4650
4674GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
4675
4744GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
4745
4774
4841GLFWAPI const char* glfwGetKeyName(int key, int scancode);
4842
4868GLFWAPI int glfwGetKeyScancode(int key);
4869
4907GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
4908
4939GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
4940
4977GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
4978
5017GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
5018
5055GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
5056
5104
5130GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
5131
5157GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
5158
5208
5251
5293
5335
5367
5398
5432
5467
5490GLFWAPI int glfwJoystickPresent(int jid);
5491
5523GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count);
5524
5564GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count);
5565
5621GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count);
5622
5652GLFWAPI const char* glfwGetJoystickName(int jid);
5653
5693GLFWAPI const char* glfwGetJoystickGUID(int jid);
5694
5719GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer);
5720
5743GLFWAPI void* glfwGetJoystickUserPointer(int jid);
5744
5771GLFWAPI int glfwJoystickIsGamepad(int jid);
5772
5808
5841GLFWAPI int glfwUpdateGamepadMappings(const char* string);
5842
5873GLFWAPI const char* glfwGetGamepadName(int jid);
5874
5911GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state);
5912
5941GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
5942
5976GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
5977
6006GLFWAPI double glfwGetTime(void);
6007
6036GLFWAPI void glfwSetTime(double time);
6037
6058GLFWAPI uint64_t glfwGetTimerValue(void);
6059
6078GLFWAPI uint64_t glfwGetTimerFrequency(void);
6079
6124
6145
6178GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
6179
6224GLFWAPI void glfwSwapInterval(int interval);
6225
6262GLFWAPI int glfwExtensionSupported(const char* extension);
6263
6304GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
6305
6330GLFWAPI int glfwVulkanSupported(void);
6331
6374GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
6375
6376#if defined(VK_VERSION_1_0)
6377
6417GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
6418
6454GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
6455
6524GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
6525
6526#endif /*VK_VERSION_1_0*/
6527
6528
6529/*************************************************************************
6530 * Global definition cleanup
6531 *************************************************************************/
6532
6533/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
6534
6535#ifdef GLFW_WINGDIAPI_DEFINED
6536 #undef WINGDIAPI
6537 #undef GLFW_WINGDIAPI_DEFINED
6538#endif
6539
6540#ifdef GLFW_CALLBACK_DEFINED
6541 #undef CALLBACK
6542 #undef GLFW_CALLBACK_DEFINED
6543#endif
6544
6545/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally
6546 * defined by some gl.h variants (OpenBSD) so define it after if needed.
6547 */
6548#ifndef GLAPIENTRY
6549 #define GLAPIENTRY APIENTRY
6550 #define GLFW_GLAPIENTRY_DEFINED
6551#endif
6552
6553/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
6554
6555
6556#ifdef __cplusplus
6557}
6558#endif
6559
6560#endif /* _glfw3_h_ */
6561
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:1366
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.
void glfwInitHint(int hint, int value)
Sets the specified init hint to the desired value.
struct GLFWallocator GLFWallocator
Custom heap memory allocator.
int glfwInit(void)
Initializes the GLFW library.
void *(* GLFWreallocatefun)(void *block, size_t size, void *user)
The function pointer type for memory reallocation callbacks.
Definition glfw3.h:1525
void *(* GLFWallocatefun)(size_t size, void *user)
The function pointer type for memory allocation callbacks.
Definition glfw3.h:1469
int glfwGetPlatform(void)
Returns the currently selected platform.
void(* GLFWdeallocatefun)(void *block, void *user)
The function pointer type for memory deallocation callbacks.
Definition glfw3.h:1567
void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader)
Sets the desired Vulkan vkGetInstanceProcAddr function.
void(* GLFWerrorfun)(int error_code, const char *description)
The function pointer type for error callbacks.
Definition glfw3.h:1591
int glfwPlatformSupported(int platform)
Returns whether the library includes support for the specified platform.
int glfwGetError(const char **description)
Returns and clears the last error for the calling thread.
void glfwInitAllocator(const GLFWallocator *allocator)
Sets the init allocator to the desired value.
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
void glfwTerminate(void)
Terminates the GLFW library.
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)
Sets the error callback.
void(* GLFWmousebuttonfun)(GLFWwindow *window, int button, int action, int mods)
The function pointer type for mouse button callbacks.
Definition glfw3.h:1807
void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)
Retrieves the position of the cursor relative to the content area of the window.
void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)
Sets the position of the cursor, relative to the content area of the window.
const unsigned char * glfwGetJoystickHats(int jid, int *count)
Returns the state of all hats of the specified joystick.
uint64_t glfwGetTimerValue(void)
Returns the current value of the raw timer.
GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun callback)
Sets the Unicode character with modifiers callback.
void * glfwGetJoystickUserPointer(int jid)
Returns the user pointer of the specified joystick.
void(* GLFWcharfun)(GLFWwindow *window, unsigned int codepoint)
The function pointer type for Unicode character callbacks.
Definition glfw3.h:1919
GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)
Sets the key callback.
GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)
Sets the joystick configuration callback.
uint64_t glfwGetTimerFrequency(void)
Returns the frequency, in Hz, of the raw timer.
GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)
Creates a custom cursor.
GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)
Sets the scroll callback.
void(* GLFWkeyfun)(GLFWwindow *window, int key, int scancode, int action, int mods)
The function pointer type for keyboard key callbacks.
Definition glfw3.h:1898
const unsigned char * glfwGetJoystickButtons(int jid, int *count)
Returns the state of all buttons of the specified joystick.
struct GLFWgamepadstate GLFWgamepadstate
Gamepad input state.
const char * glfwGetJoystickGUID(int jid)
Returns the SDL compatible GUID of the specified joystick.
int glfwGetKeyScancode(int key)
Returns the platform-specific scancode of the specified key.
GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)
Sets the mouse button callback.
void glfwSetJoystickUserPointer(int jid, void *pointer)
Sets the user pointer of the specified joystick.
const char * glfwGetClipboardString(GLFWwindow *window)
Returns the contents of the clipboard as a string.
void glfwDestroyCursor(GLFWcursor *cursor)
Destroys a cursor.
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition glfw3.h:1416
const char * glfwGetGamepadName(int jid)
Returns the human-readable gamepad name for the specified joystick.
void(* GLFWjoystickfun)(int jid, int event)
The function pointer type for joystick configuration callbacks.
Definition glfw3.h:2012
double glfwGetTime(void)
Returns the GLFW time.
void glfwSetInputMode(GLFWwindow *window, int mode, int value)
Sets an input option for the specified window.
void(* GLFWcursorenterfun)(GLFWwindow *window, int entered)
The function pointer type for cursor enter/leave callbacks.
Definition glfw3.h:1851
void(* GLFWdropfun)(GLFWwindow *window, int path_count, const char *paths[])
The function pointer type for path drop callbacks.
Definition glfw3.h:1970
GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)
Sets the Unicode character callback.
GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)
Sets the path drop callback.
void glfwSetClipboardString(GLFWwindow *window, const char *string)
Sets the clipboard to the specified string.
int glfwGetMouseButton(GLFWwindow *window, int button)
Returns the last reported state of a mouse button for the specified window.
GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)
Sets the cursor position callback.
void(* GLFWcharmodsfun)(GLFWwindow *window, unsigned int codepoint, int mods)
The function pointer type for Unicode character with modifiers callbacks.
Definition glfw3.h:1946
const char * glfwGetJoystickName(int jid)
Returns the name of the specified joystick.
int glfwJoystickIsGamepad(int jid)
Returns whether the specified joystick has a gamepad mapping.
GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)
Sets the cursor enter/leave callback.
void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)
Sets the cursor for the window.
void(* GLFWcursorposfun)(GLFWwindow *window, double xpos, double ypos)
The function pointer type for cursor position callbacks.
Definition glfw3.h:1830
int glfwGetGamepadState(int jid, GLFWgamepadstate *state)
Retrieves the state of the specified joystick remapped as a gamepad.
int glfwGetKey(GLFWwindow *window, int key)
Returns the last reported state of a keyboard key for the specified window.
int glfwRawMouseMotionSupported(void)
Returns whether raw mouse motion is supported.
const char * glfwGetKeyName(int key, int scancode)
Returns the layout-specific name of the specified printable key.
const float * glfwGetJoystickAxes(int jid, int *count)
Returns the values of all axes of the specified joystick.
int glfwJoystickPresent(int jid)
Returns whether the specified joystick is present.
int glfwUpdateGamepadMappings(const char *string)
Adds the specified SDL_GameControllerDB gamepad mappings.
GLFWcursor * glfwCreateStandardCursor(int shape)
Creates a cursor with a standard shape.
void glfwSetTime(double time)
Sets the GLFW time.
int glfwGetInputMode(GLFWwindow *window, int mode)
Returns the value of an input option for the specified window.
void(* GLFWscrollfun)(GLFWwindow *window, double xoffset, double yoffset)
The function pointer type for scroll callbacks.
Definition glfw3.h:1872
void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
Returns the position of the monitor's viewport on the virtual screen.
void * glfwGetMonitorUserPointer(GLFWmonitor *monitor)
Returns the user pointer of the specified monitor.
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.
void glfwSetMonitorUserPointer(GLFWmonitor *monitor, void *pointer)
Sets the user pointer of the specified monitor.
GLFWmonitor ** glfwGetMonitors(int *count)
Returns the currently connected monitors.
void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)
Retrieves the work area of the monitor.
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:1392
struct GLFWvidmode GLFWvidmode
Video mode type.
struct GLFWgammaramp GLFWgammaramp
Gamma ramp.
void(* GLFWmonitorfun)(GLFWmonitor *monitor, int event)
The function pointer type for monitor configuration callbacks.
Definition glfw3.h:1991
GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)
Sets the monitor configuration callback.
const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
Returns the current mode of the specified monitor.
GLFWmonitor * glfwGetPrimaryMonitor(void)
Returns the primary monitor.
const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
Returns the available video modes for the specified monitor.
void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)
Retrieves the content scale 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 and an ICD have been found.
void(* GLFWvkproc)(void)
Vulkan API function pointer type.
Definition glfw3.h:1380
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.
GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)
Sets the position callback for the specified window.
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 content area of the specified window.
void glfwIconifyWindow(GLFWwindow *window)
Iconifies the specified window.
GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)
Sets the refresh callback for the specified window.
int glfwWindowShouldClose(GLFWwindow *window)
Checks the close flag of the specified window.
void glfwRequestWindowAttention(GLFWwindow *window)
Requests user attention to the specified window.
void(* GLFWwindowmaximizefun)(GLFWwindow *window, int maximized)
The function pointer type for window maximize callbacks.
Definition glfw3.h:1739
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
void(* GLFWwindowiconifyfun)(GLFWwindow *window, int iconified)
The function pointer type for window iconify callbacks.
Definition glfw3.h:1718
void glfwSetWindowSize(GLFWwindow *window, int width, int height)
Sets the size of the content area of the specified window.
void glfwPollEvents(void)
Processes all pending events.
struct GLFWwindow GLFWwindow
Opaque window object.
Definition glfw3.h:1404
void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)
Sets the user pointer of the specified window.
void glfwMaximizeWindow(GLFWwindow *window)
Maximizes the specified window.
void(* GLFWwindowrefreshfun)(GLFWwindow *window)
The function pointer type for window content refresh callbacks.
Definition glfw3.h:1676
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 glfwWaitEvents(void)
Waits until events are queued and processes them.
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 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 content area of the specified window.
void(* GLFWwindowcontentscalefun)(GLFWwindow *window, float xscale, float yscale)
The function pointer type for window content scale callbacks.
Definition glfw3.h:1781
struct GLFWimage GLFWimage
Image data.
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.
void glfwWindowHintString(int hint, const char *value)
Sets the specified window hint to the desired value.
void glfwDefaultWindowHints(void)
Resets all window hints to their default values.
GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)
Sets the framebuffer resize callback for the specified window.
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
void(* GLFWwindowfocusfun)(GLFWwindow *window, int focused)
The function pointer type for window focus callbacks.
Definition glfw3.h:1697
void(* GLFWwindowposfun)(GLFWwindow *window, int xpos, int ypos)
The function pointer type for window position callbacks.
Definition glfw3.h:1614
void(* GLFWwindowclosefun)(GLFWwindow *window)
The function pointer type for window close callbacks.
Definition glfw3.h:1656
GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)
Sets the focus callback for the specified window.
void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
Sets the size limits of the specified window.
void glfwSetWindowOpacity(GLFWwindow *window, float opacity)
Sets the opacity of the whole window.
const char * glfwGetWindowTitle(GLFWwindow *window)
Returns the title of the specified window.
GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)
Sets the iconify callback for the specified window.
GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)
Sets the maximize callback for 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 glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)
Sets an attribute of the specified window.
float glfwGetWindowOpacity(GLFWwindow *window)
Returns the opacity of the whole window.
GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)
Sets the size callback for the specified window.
GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)
Sets the close callback for the specified window.
void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
Sets the icon for the specified window.
void(* GLFWframebuffersizefun)(GLFWwindow *window, int width, int height)
The function pointer type for framebuffer size callbacks.
Definition glfw3.h:1760
void * glfwGetWindowUserPointer(GLFWwindow *window)
Returns the user pointer of the specified window.
void(* GLFWwindowsizefun)(GLFWwindow *window, int width, int height)
The function pointer type for window size callbacks.
Definition glfw3.h:1636
void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the content area of the specified window.
GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)
Sets the window content scale callback for the specified window.
void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)
Retrieves the content scale for the specified window.
Custom heap memory allocator.
Definition glfw3.h:2139
GLFWallocatefun allocate
Definition glfw3.h:2143
GLFWdeallocatefun deallocate
Definition glfw3.h:2151
GLFWreallocatefun reallocate
Definition glfw3.h:2147
void * user
Definition glfw3.h:2155
Gamepad input state.
Definition glfw3.h:2115
unsigned char buttons[15]
Definition glfw3.h:2119
float axes[6]
Definition glfw3.h:2123
Gamma ramp.
Definition glfw3.h:2062
unsigned short * red
Definition glfw3.h:2065
unsigned short * blue
Definition glfw3.h:2071
unsigned int size
Definition glfw3.h:2074
unsigned short * green
Definition glfw3.h:2068
Image data.
Definition glfw3.h:2091
int height
Definition glfw3.h:2097
unsigned char * pixels
Definition glfw3.h:2100
int width
Definition glfw3.h:2094
Video mode type.
Definition glfw3.h:2028
int greenBits
Definition glfw3.h:2040
int redBits
Definition glfw3.h:2037
int width
Definition glfw3.h:2031
int refreshRate
Definition glfw3.h:2046
int height
Definition glfw3.h:2034
int blueBits
Definition glfw3.h:2043