news.dox 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. /*!
  2. @page news Release notes
  3. @tableofcontents
  4. @section news_33 Release notes for version 3.3
  5. These are the release notes for version 3.3. For a more detailed view including
  6. all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
  7. Please review the caveats, deprecations and removals if your project was written
  8. against an earlier version of GLFW 3.
  9. @subsection features_33 New features in version 3.3
  10. @subsubsection gamepad_33 Gamepad input via SDL_GameControllerDB
  11. GLFW can now remap game controllers to a standard Xbox-like layout using
  12. a built-in copy of SDL_GameControllerDB. Call @ref glfwJoystickIsGamepad to
  13. check if a joystick has a mapping, @ref glfwGetGamepadState to retrieve its
  14. input state, @ref glfwUpdateGamepadMappings to add newer mappings and @ref
  15. glfwGetGamepadName and @ref glfwGetJoystickGUID for mapping related information.
  16. For more information see @ref gamepad.
  17. @subsubsection moltenvk_33 Support for Vulkan on macOS via MoltenVK
  18. GLFW now supports [MoltenVK](https://moltengl.com/moltenvk/), a Vulkan
  19. implementation on top of the Metal API, and its `VK_MVK_macos_surface` window
  20. surface creation extension. MoltenVK is included in the [macOS Vulkan
  21. SDK](https://vulkan.lunarg.com/).
  22. For more information see @ref vulkan_guide.
  23. @subsubsection content_scale_33 Content scale queries for DPI-aware rendering
  24. GLFW now provides content scales for windows and monitors, i.e. the ratio
  25. between their current DPI and the platform's default DPI, with @ref
  26. glfwGetWindowContentScale and @ref glfwGetMonitorContentScale.
  27. Changes of the content scale of a window can be received with the window content
  28. scale callback, set with @ref glfwSetWindowContentScaleCallback.
  29. The @ref GLFW_SCALE_TO_MONITOR window hint enables automatic resizing of a
  30. window by the content scale of the monitor it is placed, on platforms like
  31. Windows where this is necessary. This takes effect both on creation and when
  32. the window is moved between monitors. It is related to but different from
  33. [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
  34. For more information see @ref window_scale.
  35. @subsubsection setwindowattrib_33 Support for updating window attributes
  36. GLFW now supports changing the [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
  37. [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
  38. [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
  39. [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
  40. [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) attributes for existing
  41. windows with @ref glfwSetWindowAttrib.
  42. For more information see @ref window_attribs.
  43. @subsubsection raw_motion_33 Support for raw mouse motion
  44. GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled
  45. cursor mode with the [GLFW_RAW_MOUSE_MOTION](@ref GLFW_RAW_MOUSE_MOTION) input
  46. mode. Raw mouse motion input is not yet implemented on macOS. Call @ref
  47. glfwRawMouseMotionSupported to check if GLFW can provide raw mouse motion on the
  48. current system.
  49. For more information see @ref raw_mouse_motion.
  50. @subsubsection joysticks_33 Joystick hats
  51. GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with
  52. @ref glfwGetJoystickHats. For compatibility, hats are also exposed as buttons.
  53. This can be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS initialization
  54. hint.
  55. For more information see @ref joystick_hat.
  56. @subsubsection geterror_33 Error query
  57. GLFW now supports querying the last error code for the calling thread and its
  58. human-readable description with @ref glfwGetError. This can be used instead of
  59. or together with the error callback.
  60. For more information see @ref error_handling.
  61. @subsubsection init_hints_33 Support for initialization hints
  62. GLFW now supports setting library initialization hints with @ref glfwInitHint.
  63. These must be set before initialization to take effect. Some of these hints are
  64. platform specific but are safe to set on any platform.
  65. For more information see @ref init_hints.
  66. @subsubsection attention_33 User attention request
  67. GLFW now supports requesting user attention with @ref
  68. glfwRequestWindowAttention. Where possible this calls attention to the
  69. specified window. On platforms like macOS it calls attention to the whole
  70. application.
  71. For more information see @ref window_attention.
  72. @subsubsection maximize_33 Window maximization callback
  73. GLFW now supports notifying the application that the window has been maximized
  74. @ref glfwSetWindowMaximizeCallback. This is called both when the window was
  75. maximized by the user and when it was done with @ref glfwMaximizeWindow.
  76. For more information see @ref window_maximize.
  77. @subsubsection workarea_33 Query for the monitor work area
  78. GLFW now supports querying the work area of a monitor, i.e. the area not
  79. occupied by task bars or global menu bars, with @ref glfwGetMonitorWorkarea. On
  80. platforms that lack this concept, the whole area of the monitor is returned.
  81. For more information see @ref monitor_workarea.
  82. @subsubsection transparency_33 Transparent windows and framebuffers
  83. GLFW now supports the creation of windows with transparent framebuffers on
  84. systems with desktop compositing enabled with the @ref
  85. GLFW_TRANSPARENT_FRAMEBUFFER window hint and attribute. This hint must be set
  86. before window creation and leaves any window decorations opaque.
  87. GLFW now also supports whole window transparency with @ref glfwGetWindowOpacity
  88. and @ref glfwSetWindowOpacity. This value controls the opacity of the whole
  89. window including decorations and unlike framebuffer transparency can be changed
  90. at any time after window creation.
  91. For more information see @ref window_transparency.
  92. @subsubsection key_scancode_33 Query for the scancode of a key
  93. GLFW now supports querying the platform dependent scancode of any physical key
  94. with @ref glfwGetKeyScancode.
  95. For more information see @ref input_key.
  96. @subsubsection center_cursor_33 Cursor centering window hint
  97. GLFW now supports controlling whether the cursor is centered over newly created
  98. full screen windows with the [GLFW_CENTER_CURSOR](@ref GLFW_CENTER_CURSOR_hint)
  99. window hint. It is enabled by default.
  100. @subsubsection cursor_hover_33 Mouse cursor hover window attribute
  101. GLFW now supports polling whether the cursor is hovering over the window content
  102. area with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute. This
  103. attribute corresponds to the [cursor enter/leave](@ref cursor_enter) event.
  104. @subsubsection focusonshow_33 Window hint and attribute for input focus on show
  105. GLFW now has the [GLFW_FOCUS_ON_SHOW](@ref GLFW_DECORATED_hint) window hint and
  106. attribute for controlling whether a window gets input focus when shown. It is
  107. enabled by default. It applies both when creating an visible window with @ref
  108. glfwCreateWindow and when showing it with @ref glfwShowWindow.
  109. This is a workaround for GLFW 3.0 lacking @ref glfwFocusWindow and will be
  110. corrected in the next major version.
  111. For more information see @ref window_hide.
  112. @subsubsection device_userptr_33 Monitor and joystick user pointers
  113. GLFW now supports setting and querying user pointers for connected monitors and
  114. joysticks with @ref glfwSetMonitorUserPointer, @ref glfwGetMonitorUserPointer,
  115. @ref glfwSetJoystickUserPointer and @ref glfwGetJoystickUserPointer.
  116. For more information see @ref monitor_userptr and @ref joystick_userptr.
  117. @subsubsection macos_nib_33 macOS menu bar from nib file
  118. GLFW will now load a `MainMenu.nib` file if found in the `Contents/Resources`
  119. directory of the application bundle, as a way to replace the GLFW menu bar
  120. without recompiling GLFW. This behavior can be disabled with the
  121. [GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint) initialization hint.
  122. @subsubsection glext_33 Support for more context creation extensions
  123. The context hint @ref GLFW_SRGB_CAPABLE now supports OpenGL ES via
  124. `WGL_EXT_colorspace`, the context hint @ref GLFW_CONTEXT_NO_ERROR now supports
  125. `WGL_ARB_create_context_no_error` and `GLX_ARB_create_context_no_error`, the
  126. context hint @ref GLFW_CONTEXT_RELEASE_BEHAVIOR now supports
  127. `EGL_KHR_context_flush_control` and @ref glfwGetProcAddress now supports
  128. `EGL_KHR_get_all_proc_addresses`.
  129. @subsubsection osmesa_33 OSMesa off-screen context creation support
  130. GLFW now supports creating off-screen OpenGL contexts using
  131. [OSMesa](https://www.mesa3d.org/osmesa.html) by setting
  132. [GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) to
  133. `GLFW_OSMESA_CONTEXT_API`. Native access function have been added to retrieve
  134. the OSMesa color and depth buffers.
  135. There is also a new null backend that uses OSMesa as its native context
  136. creation API, intended for automated testing. This backend does not provide
  137. input.
  138. @subsection caveats_33 Caveats for version 3.3
  139. @subsubsection joystick_layout_33 Layout of joysticks have changed
  140. The way joystick elements are arranged have changed to match SDL2 in order to
  141. support SDL_GameControllerDB mappings. The layout of joysticks may
  142. change again if required for compatibility with SDL2. If you need a known and
  143. stable layout for game controllers, see if you can switch to @ref gamepad.
  144. Existing code that depends on a specific joystick layout will likely have to be
  145. updated.
  146. @subsubsection wait_events_33 No window required to wait for events
  147. The @ref glfwWaitEvents and @ref glfwWaitEventsTimeout functions no longer need
  148. a window to be created to wait for events. Before version 3.3 these functions
  149. would return immediately if there were no user-created windows. On platforms
  150. where only windows can receive events, an internal helper window is used.
  151. Existing code that depends on the earlier behavior will likely have to be
  152. updated.
  153. @subsubsection gamma_ramp_size_33 Gamma ramp size of 256 may be rejected
  154. The documentation for versions before 3.3 stated that a gamma ramp size of 256
  155. would always be accepted. This was never the case on X11 and could lead to
  156. artifacts on macOS. The @ref glfwSetGamma function has been updated to always
  157. generate a ramp of the correct size.
  158. Existing code that hardcodes a size of 256 should be updated to use the size of
  159. the current ramp of a monitor when setting a new ramp for that monitor.
  160. @subsubsection xinput_deadzone_33 Windows XInput deadzone removed
  161. GLFW no longer applies any deadzone to the input state received from the XInput
  162. API. This was never done for any other platform joystick API so this change
  163. makes the behavior more consistent but you will need to apply your own deadzone
  164. if desired.
  165. @subsubsection x11_clipboard_33 X11 clipboard transfer limits
  166. GLFW now supports reading clipboard text via the `INCR` method, which removes
  167. the limit on how much text can be read with @ref glfwGetClipboardString.
  168. However, writing via this method is not yet supported, so you may not be able to
  169. write a very large string with @ref glfwSetClipboardString even if you read it
  170. from the clipboard earlier.
  171. The exact size limit for writing to the clipboard is negotiated with each
  172. receiving application but is at least several tens of kilobytes. Note that only
  173. the read limit has changed. Any string that could be written before still can
  174. be.
  175. @subsubsection x11_linking_33 X11 extension libraries are loaded dynamically
  176. GLFW now loads all X11 extension libraries at initialization. The only X11
  177. library you need to link against is `libX11`. The header files for the
  178. extension libraries are still required for compilation.
  179. Existing projects and makefiles that link GLFW directly against the extension
  180. libraries should still build correctly but will add these libraries as load-time
  181. dependencies.
  182. @subsubsection cmake_version_33 CMake 3.0 or later is required
  183. The minimum CMake version has been raised from 2.8.12 to 3.0. This is only
  184. a requirement of the GLFW CMake files. The GLFW source files do not depend on
  185. CMake.
  186. @subsubsection caveat_fbtransparency_33 Framebuffer transparency requires DWM transparency
  187. GLFW no longer supports framebuffer transparency enabled via @ref
  188. GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off
  189. (the Transparency setting under Personalization > Window Color).
  190. @subsubsection emptyevents_33 Empty events on X11 no longer roundtrip to server
  191. Starting with GLFW 3.3.7, events posted with @ref glfwPostEmptyEvent now use a separate
  192. unnamed pipe instead of sending an X11 client event to the helper window.
  193. @subsection deprecations_33 Deprecations in version 3.3
  194. @subsubsection charmods_callback_33 Character with modifiers callback
  195. The character with modifiers callback set with @ref glfwSetCharModsCallback has
  196. been deprecated and should if possible not be used.
  197. Existing code should still work but further bug fixes will likely not be made.
  198. The callback will be removed in the next major version.
  199. @subsubsection clipboard_window_33 Window parameter to clipboard functions
  200. The window parameter of the clipboard functions @ref glfwGetClipboardString and
  201. @ref glfwSetClipboardString has been deprecated and is no longer used on any
  202. platform. On platforms where the clipboard must be owned by a specific window,
  203. an internal helper window is used.
  204. Existing code should still work unless it depends on a specific window owning
  205. the clipboard. New code may pass `NULL` as the window argument. The parameter
  206. will be removed in a future release.
  207. @subsection removals_33 Removals in 3.3
  208. @subsubsection macos_options_33 macOS specific CMake options and macros
  209. The `GLFW_USE_RETINA`, `GLFW_USE_CHDIR` and `GLFW_USE_MENUBAR` CMake options and
  210. the `_GLFW_USE_RETINA`, `_GLFW_USE_CHDIR` and `_GLFW_USE_MENUBAR` compile-time
  211. macros have been removed.
  212. These options and macros are replaced by the window hint
  213. [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
  214. and the init hints
  215. [GLFW_COCOA_CHDIR_RESOURCES](@ref GLFW_COCOA_CHDIR_RESOURCES_hint) and
  216. [GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint).
  217. Existing projects and makefiles that set these options or define these macros
  218. during compilation of GLFW will still build but it will have no effect and the
  219. default behaviors will be used.
  220. @subsubsection vulkan_sdk_33 LunarG Vulkan SDK dependency
  221. The GLFW test programs that previously depended on the LunarG Vulkan SDK now
  222. instead uses a Vulkan loader generated by
  223. [glad2](https://github.com/Dav1dde/glad). This means the GLFW CMake files no
  224. longer look for the Vulkan SDK.
  225. Existing CMake projects that depended on the Vulkan SDK cache variables from
  226. GLFW will need to call `find_package(Vulkan)` themselves. CMake 3.7 and later
  227. already comes with a
  228. [Vulkan find module](https://cmake.org/cmake/help/latest/module/FindVulkan.html)
  229. similar to the one GLFW previously included.
  230. @subsubsection lib_suffix_33 CMake option LIB_SUFFIX
  231. The `LIB_SUFFIX` CMake option has been removed. GLFW now uses the
  232. GNUInstallDirs CMake package to handle platform specific details like the
  233. library directory suffix and the `LIB_SUFFIX` CMake option has been removed.
  234. Existing projects and makefiles that set the `LIB_SUFFIX` option will use the
  235. suffix chosen by the GNUInstallDirs package and the option will be ignored.
  236. @subsubsection wl_shell_33 Support for the wl_shell protocol
  237. Support for the wl_shell protocol has been removed and GLFW now only supports
  238. the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell
  239. then GLFW will fail to initialize.
  240. @subsubsection mir_removed_33 Mir support
  241. The experimental Mir support has been completely removed as the Mir project has
  242. implemented support for the Wayland protocol and is recommending that
  243. applications use that instead.
  244. Existing projects and makefiles that select Mir when compiling GLFW will fail.
  245. Use Wayland or X11 instead.
  246. @subsection symbols_33 New symbols in version 3.3
  247. @subsubsection functions_33 New functions in version 3.3
  248. - @ref glfwInitHint
  249. - @ref glfwGetError
  250. - @ref glfwGetMonitorWorkarea
  251. - @ref glfwGetMonitorContentScale
  252. - @ref glfwGetMonitorUserPointer
  253. - @ref glfwSetMonitorUserPointer
  254. - @ref glfwWindowHintString
  255. - @ref glfwGetWindowContentScale
  256. - @ref glfwGetWindowOpacity
  257. - @ref glfwSetWindowOpacity
  258. - @ref glfwRequestWindowAttention
  259. - @ref glfwSetWindowAttrib
  260. - @ref glfwSetWindowMaximizeCallback
  261. - @ref glfwSetWindowContentScaleCallback
  262. - @ref glfwRawMouseMotionSupported
  263. - @ref glfwGetKeyScancode
  264. - @ref glfwGetJoystickHats
  265. - @ref glfwGetJoystickGUID
  266. - @ref glfwGetJoystickUserPointer
  267. - @ref glfwSetJoystickUserPointer
  268. - @ref glfwJoystickIsGamepad
  269. - @ref glfwUpdateGamepadMappings
  270. - @ref glfwGetGamepadName
  271. - @ref glfwGetGamepadState
  272. @subsubsection types_33 New types in version 3.3
  273. - @ref GLFWwindowmaximizefun
  274. - @ref GLFWwindowcontentscalefun
  275. - @ref GLFWgamepadstate
  276. @subsubsection constants_33 New constants in version 3.3
  277. - @ref GLFW_NO_ERROR
  278. - @ref GLFW_JOYSTICK_HAT_BUTTONS
  279. - @ref GLFW_COCOA_CHDIR_RESOURCES
  280. - @ref GLFW_COCOA_MENUBAR
  281. - @ref GLFW_CENTER_CURSOR
  282. - @ref GLFW_TRANSPARENT_FRAMEBUFFER
  283. - @ref GLFW_HOVERED
  284. - @ref GLFW_FOCUS_ON_SHOW
  285. - @ref GLFW_SCALE_TO_MONITOR
  286. - @ref GLFW_COCOA_RETINA_FRAMEBUFFER
  287. - @ref GLFW_COCOA_FRAME_NAME
  288. - @ref GLFW_COCOA_GRAPHICS_SWITCHING
  289. - @ref GLFW_X11_CLASS_NAME
  290. - @ref GLFW_X11_INSTANCE_NAME
  291. - @ref GLFW_OSMESA_CONTEXT_API
  292. - @ref GLFW_HAT_CENTERED
  293. - @ref GLFW_HAT_UP
  294. - @ref GLFW_HAT_RIGHT
  295. - @ref GLFW_HAT_DOWN
  296. - @ref GLFW_HAT_LEFT
  297. - @ref GLFW_HAT_RIGHT_UP
  298. - @ref GLFW_HAT_RIGHT_DOWN
  299. - @ref GLFW_HAT_LEFT_UP
  300. - @ref GLFW_HAT_LEFT_DOWN
  301. - @ref GLFW_MOD_CAPS_LOCK
  302. - @ref GLFW_MOD_NUM_LOCK
  303. - @ref GLFW_LOCK_KEY_MODS
  304. - @ref GLFW_RAW_MOUSE_MOTION
  305. - @ref GLFW_GAMEPAD_BUTTON_A
  306. - @ref GLFW_GAMEPAD_BUTTON_B
  307. - @ref GLFW_GAMEPAD_BUTTON_X
  308. - @ref GLFW_GAMEPAD_BUTTON_Y
  309. - @ref GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
  310. - @ref GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
  311. - @ref GLFW_GAMEPAD_BUTTON_BACK
  312. - @ref GLFW_GAMEPAD_BUTTON_START
  313. - @ref GLFW_GAMEPAD_BUTTON_GUIDE
  314. - @ref GLFW_GAMEPAD_BUTTON_LEFT_THUMB
  315. - @ref GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
  316. - @ref GLFW_GAMEPAD_BUTTON_DPAD_UP
  317. - @ref GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
  318. - @ref GLFW_GAMEPAD_BUTTON_DPAD_DOWN
  319. - @ref GLFW_GAMEPAD_BUTTON_DPAD_LEFT
  320. - @ref GLFW_GAMEPAD_BUTTON_LAST
  321. - @ref GLFW_GAMEPAD_BUTTON_CROSS
  322. - @ref GLFW_GAMEPAD_BUTTON_CIRCLE
  323. - @ref GLFW_GAMEPAD_BUTTON_SQUARE
  324. - @ref GLFW_GAMEPAD_BUTTON_TRIANGLE
  325. - @ref GLFW_GAMEPAD_AXIS_LEFT_X
  326. - @ref GLFW_GAMEPAD_AXIS_LEFT_Y
  327. - @ref GLFW_GAMEPAD_AXIS_RIGHT_X
  328. - @ref GLFW_GAMEPAD_AXIS_RIGHT_Y
  329. - @ref GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
  330. - @ref GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
  331. - @ref GLFW_GAMEPAD_AXIS_LAST
  332. @section news_32 Release notes for 3.2
  333. These are the release notes for version 3.2. For a more detailed view including
  334. all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
  335. @subsection features_32 New features in version 3.2
  336. @subsubsection news_32_vulkan Support for Vulkan
  337. GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported,
  338. @ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref
  339. glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface.
  340. Vulkan header inclusion can be selected with
  341. @ref GLFW_INCLUDE_VULKAN.
  342. @subsubsection news_32_setwindowmonitor Window mode switching
  343. GLFW now supports switching between windowed and full screen modes and updating
  344. the monitor and desired resolution and refresh rate of full screen windows with
  345. @ref glfwSetWindowMonitor.
  346. @subsubsection news_32_maximize Window maxmimization support
  347. GLFW now supports window maximization with @ref glfwMaximizeWindow and the
  348. @ref GLFW_MAXIMIZED window hint and attribute.
  349. @subsubsection news_32_focus Window input focus control
  350. GLFW now supports giving windows input focus with @ref glfwFocusWindow.
  351. @subsubsection news_32_sizelimits Window size limit support
  352. GLFW now supports setting both absolute and relative window size limits with
  353. @ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
  354. @subsubsection news_32_keyname Localized key names
  355. GLFW now supports querying the localized name of printable keys with @ref
  356. glfwGetKeyName, either by key token or by scancode.
  357. @subsubsection news_32_waittimeout Wait for events with timeout
  358. GLFW now supports waiting for events for a set amount of time with @ref
  359. glfwWaitEventsTimeout.
  360. @subsubsection news_32_icon Window icon support
  361. GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
  362. @subsubsection news_32_timer Raw timer access
  363. GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
  364. glfwGetTimerFrequency.
  365. @subsubsection news_32_joystick Joystick connection callback
  366. GLFW now supports notifying when a joystick has been connected or disconnected
  367. with @ref glfwSetJoystickCallback.
  368. @subsubsection news_32_noapi Context-less windows
  369. GLFW now supports creating windows without a OpenGL or OpenGL ES context by
  370. setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`.
  371. @subsubsection news_32_contextapi Run-time context creation API selection
  372. GLFW now supports selecting and querying the context creation API at run-time
  373. with the @ref GLFW_CONTEXT_CREATION_API hint and attribute.
  374. @subsubsection news_32_noerror Error-free context creation
  375. GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do
  376. not emit errors with the @ref GLFW_CONTEXT_NO_ERROR hint, provided the machine
  377. supports the `GL_KHR_no_error` extension.
  378. @subsubsection news_32_cmake CMake config-file package support
  379. GLFW now supports being used as a
  380. [config-file package](@ref build_link_cmake_package) from other projects for
  381. easy linking with the library and its dependencies.
  382. @section news_31 Release notes for 3.1
  383. These are the release notes for version 3.1. For a more detailed view including
  384. all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
  385. @subsection features_31 New features in version 3.1
  386. @subsubsection news_31_cursor Custom mouse cursor images
  387. GLFW now supports creating and setting both custom cursor images and standard
  388. cursor shapes. They are created with @ref glfwCreateCursor or @ref
  389. glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref
  390. glfwDestroyCursor.
  391. @see @ref cursor_object
  392. @subsubsection news_31_drop Path drop event
  393. GLFW now provides a callback for receiving the paths of files and directories
  394. dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback.
  395. @see @ref path_drop
  396. @subsubsection news_31_emptyevent Main thread wake-up
  397. GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty
  398. event from another thread to the main thread event queue, causing @ref
  399. glfwWaitEvents to return.
  400. @see @ref events
  401. @subsubsection news_31_framesize Window frame size query
  402. GLFW now supports querying the size, on each side, of the frame around the
  403. content area of a window, with @ref glfwGetWindowFrameSize.
  404. @see [Window size](@ref window_size)
  405. @subsubsection news_31_autoiconify Simultaneous multi-monitor rendering
  406. GLFW now supports disabling auto-iconification of full screen windows with
  407. the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint. This is
  408. intended for people building multi-monitor installations, where you need windows
  409. to stay in full screen despite losing input focus.
  410. @subsubsection news_31_floating Floating windows
  411. GLFW now supports floating windows, also called topmost or always on top, for
  412. easier debugging with the @ref GLFW_FLOATING window hint and attribute.
  413. @subsubsection news_31_focused Initially unfocused windows
  414. GLFW now supports preventing a windowed mode window from gaining input focus on
  415. creation, with the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint.
  416. @subsubsection news_31_direct Direct access for window attributes and cursor position
  417. GLFW now queries the window input focus, visibility and iconification attributes
  418. and the cursor position directly instead of returning cached data.
  419. @subsubsection news_31_charmods Character with modifiers callback
  420. GLFW now provides a callback for character events with modifier key bits. The
  421. callback is set with @ref glfwSetCharModsCallback. Unlike the regular character
  422. callback, this will report character events that will not result in a character
  423. being input, for example if the Control key is held down.
  424. @see @ref input_char
  425. @subsubsection news_31_single Single buffered framebuffers
  426. GLFW now supports the creation of single buffered windows, with the @ref
  427. GLFW_DOUBLEBUFFER hint.
  428. @subsubsection news_31_glext Macro for including extension header
  429. GLFW now includes the extension header appropriate for the chosen OpenGL or
  430. OpenGL ES header when @ref GLFW_INCLUDE_GLEXT is defined. GLFW does not provide
  431. these headers. They must be provided by your development environment or your
  432. OpenGL or OpenGL ES SDK.
  433. @subsubsection news_31_release Context release behaviors
  434. GLFW now supports controlling and querying whether the pipeline is flushed when
  435. a context is made non-current, with the @ref GLFW_CONTEXT_RELEASE_BEHAVIOR hint
  436. and attribute, provided the machine supports the `GL_KHR_context_flush_control`
  437. extension.
  438. @subsubsection news_31_wayland (Experimental) Wayland support
  439. GLFW now has an _experimental_ Wayland display protocol backend that can be
  440. selected on Linux with a CMake option.
  441. @subsubsection news_31_mir (Experimental) Mir support
  442. GLFW now has an _experimental_ Mir display server backend that can be selected
  443. on Linux with a CMake option.
  444. @section news_30 Release notes for 3.0
  445. These are the release notes for version 3.0. For a more detailed view including
  446. all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
  447. @subsection features_30 New features in version 3.0
  448. @subsubsection news_30_cmake CMake build system
  449. GLFW now uses the CMake build system instead of the various makefiles and
  450. project files used by earlier versions. CMake is available for all platforms
  451. supported by GLFW, is present in most package systems and can generate
  452. makefiles and/or project files for most popular development environments.
  453. For more information on how to use CMake, see the
  454. [CMake manual](https://cmake.org/cmake/help/documentation.html).
  455. @subsubsection news_30_multiwnd Multi-window support
  456. GLFW now supports the creation of multiple windows, each with their own OpenGL
  457. or OpenGL ES context, and all window functions now take a window handle. Event
  458. callbacks are now per-window and are provided with the handle of the window that
  459. received the event. The @ref glfwMakeContextCurrent function has been added to
  460. select which context is current on a given thread.
  461. @subsubsection news_30_multimon Multi-monitor support
  462. GLFW now explicitly supports multiple monitors. They can be enumerated with
  463. @ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
  464. glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
  465. and specified at window creation to make the newly created window full screen on
  466. that specific monitor.
  467. @subsubsection news_30_unicode Unicode support
  468. All string arguments to GLFW functions and all strings returned by GLFW now use
  469. the UTF-8 encoding. This includes the window title, error string, clipboard
  470. text, monitor and joystick names as well as the extension function arguments (as
  471. ASCII is a subset of UTF-8).
  472. @subsubsection news_30_clipboard Clipboard text I/O
  473. GLFW now supports reading and writing plain text to and from the system
  474. clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString
  475. functions.
  476. @subsubsection news_30_gamma Gamma ramp support
  477. GLFW now supports setting and reading back the gamma ramp of monitors, with the
  478. @ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref
  479. glfwSetGamma, which generates a ramp from a gamma value and then sets it.
  480. @subsubsection news_30_gles OpenGL ES support
  481. GLFW now supports the creation of OpenGL ES contexts, by setting the
  482. [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_OPENGL_ES_API`, where
  483. creation of such contexts are supported. Note that GLFW _does not implement_
  484. OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern
  485. Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and
  486. WGL APIs, while AMD provides an EGL implementation instead.
  487. @subsubsection news_30_egl (Experimental) EGL support
  488. GLFW now has an experimental EGL context creation back end that can be selected
  489. through CMake options.
  490. @subsubsection news_30_hidpi High-DPI support
  491. GLFW now supports high-DPI monitors on both Windows and macOS, giving windows
  492. full resolution framebuffers where other UI elements are scaled up. To achieve
  493. this, @ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have
  494. been added. These work with pixels, while the rest of the GLFW API works with
  495. screen coordinates. This is important as OpenGL uses pixels, not screen
  496. coordinates.
  497. @subsubsection news_30_error Error callback
  498. GLFW now has an error callback, which can provide your application with much
  499. more detailed diagnostics than was previously possible. The callback is passed
  500. an error code and a description string.
  501. @subsubsection news_30_wndptr Per-window user pointer
  502. Each window now has a user-defined pointer, retrieved with @ref
  503. glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it
  504. easier to integrate GLFW into C++ code.
  505. @subsubsection news_30_iconifyfun Window iconification callback
  506. Each window now has a callback for iconification and restoration events,
  507. which is set with @ref glfwSetWindowIconifyCallback.
  508. @subsubsection news_30_wndposfun Window position callback
  509. Each window now has a callback for position events, which is set with @ref
  510. glfwSetWindowPosCallback.
  511. @subsubsection news_30_wndpos Window position query
  512. The position of a window can now be retrieved using @ref glfwGetWindowPos.
  513. @subsubsection news_30_focusfun Window focus callback
  514. Each windows now has a callback for focus events, which is set with @ref
  515. glfwSetWindowFocusCallback.
  516. @subsubsection news_30_enterleave Cursor enter/leave callback
  517. Each window now has a callback for when the mouse cursor enters or leaves its
  518. content area, which is set with @ref glfwSetCursorEnterCallback.
  519. @subsubsection news_30_wndtitle Initial window title
  520. The title of a window is now specified at creation time, as one of the arguments
  521. to @ref glfwCreateWindow.
  522. @subsubsection news_30_hidden Hidden windows
  523. Windows can now be hidden with @ref glfwHideWindow, shown using @ref
  524. glfwShowWindow and created initially hidden with the @ref GLFW_VISIBLE window
  525. hint and attribute. This allows for off-screen rendering in a way compatible
  526. with most drivers, as well as moving a window to a specific position before
  527. showing it.
  528. @subsubsection news_30_undecorated Undecorated windows
  529. Windowed mode windows can now be created without decorations, e.g. things like
  530. a frame, a title bar, with the @ref GLFW_DECORATED window hint and attribute.
  531. This allows for the creation of things like splash screens.
  532. @subsubsection news_30_keymods Modifier key bit masks
  533. [Modifier key bit mask](@ref mods) parameters have been added to the
  534. [mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks.
  535. @subsubsection news_30_scancode Platform-specific scancodes
  536. A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys
  537. that don't have a [key token](@ref keys) still get passed on with the key
  538. parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines
  539. and are intended to be used for key bindings.
  540. @subsubsection news_30_jsname Joystick names
  541. The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
  542. @subsubsection news_30_doxygen Doxygen documentation
  543. You are reading it.
  544. */