news.dox 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. /*!
  2. @page news Release notes
  3. @section news_33 Release notes for 3.3
  4. @subsection news_33_geterror Error query
  5. GLFW now supports querying the last error code for the calling thread and its
  6. human-readable description with @ref glfwGetError.
  7. @see @ref error_handling
  8. @subsection news_33_gamepad SDL_GameControllerDB support and gamepad input
  9. GLFW now supports remapping of gamepads and controllers to a 360-like controller
  10. layout with @ref glfwJoystickIsGamepad, @ref glfwGetJoystickGUID, @ref
  11. glfwGetGamepadName, @ref glfwGetGamepadState and @ref glfwUpdateGamepadMappings,
  12. and the input state struct @ref GLFWgamepadstate.
  13. @sa @ref gamepad
  14. @subsection news_33_attention User attention request
  15. GLFW now supports requesting user attention to a specific window (on macOS to
  16. the application as a whole) with @ref glfwRequestWindowAttention.
  17. @see @ref window_attention
  18. @subsection news_33_maximize Window maximization callback
  19. GLFW now supports notifying the application that the window has been maximized
  20. @ref glfwSetWindowMaximizeCallback.
  21. @see @ref window_maximize
  22. @subsection news_33_keyscancode Platform-specific key scancode query
  23. GLFW now supports querying the platform dependent scancode of any physical key
  24. with @ref glfwGetKeyScancode.
  25. @see @ref input_key
  26. @subsection news_33_setwindowattrib Support for updating window attributes
  27. GLFW now supports changing the [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
  28. [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
  29. [GLFW_FLOATING](@ref GLFW_FLOATING_attrib) and
  30. [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) attributes for existing
  31. windows with @ref glfwSetWindowAttrib.
  32. @see @ref window_attribs
  33. @subsection news_33_inithint Support for initialization hints
  34. GLFW now supports setting library initialization hints with @ref glfwInitHint
  35. or @ref glfwInitHintString. These must be set before initialization to take
  36. effect.
  37. @see @ref init_hints
  38. @subsection news_33_platformhints Support for platform specific hints
  39. GLFW now supports platform specific init and window hints to control system
  40. features that are only available on a single platform.
  41. @see @ref init_hints_osx
  42. @see @ref window_hints_osx
  43. @subsection news_33_joyhats Support for joystick hats
  44. GLFW now supports querying the hats (or POVs or D-pads) of a joystick with @ref
  45. glfwGetJoystickHats. Hats are by default also exposed as buttons, but this can
  46. be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS init hint.
  47. @see @ref joystick_hat
  48. @subsection news_33_centercursor Cursor centering window hint
  49. GLFW now supports controlling whether the cursor is centered over newly created
  50. full screen windows with the [GLFW_CENTER_CURSOR](@ref GLFW_CENTER_CURSOR_hint)
  51. window hint. It is enabled by default.
  52. @subsection news_33_rawmotion Support for raw mouse motion
  53. GLFW now uses raw (unscaled and unaccelerated) mouse motion in disabled cursor
  54. mode on platforms where this is available, specifically Windows and X11.
  55. @subsection news_33_moltenvk Support for Vulkan on macOS via MoltenVK
  56. GLFW now supports the `VK_MVK_macos_surface` window surface creation extension
  57. provided by [MoltenVK](https://moltengl.com/moltenvk/).
  58. @see @ref vulkan_guide
  59. @subsection news_33_osmesa OSMesa backend for headless software rendering
  60. GLFW now supports creating offscreen OpenGL contexts using
  61. [OSMesa](https://www.mesa3d.org/osmesa.html) by setting
  62. [GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) to
  63. `GLFW_OSMESA_CONTEXT_API`.
  64. There is also a new null backend that uses OSMesa as its native context
  65. creation API, intended for automated testing. This backend does not provide
  66. input.
  67. @section news_32 Release notes for 3.2
  68. @subsection news_32_vulkan Support for Vulkan
  69. GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported,
  70. @ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref
  71. glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface.
  72. Vulkan header inclusion can be selected with
  73. @ref GLFW_INCLUDE_VULKAN.
  74. @subsection news_32_setwindowmonitor Window mode switching
  75. GLFW now supports switching between windowed and full screen modes and updating
  76. the monitor and desired resolution and refresh rate of full screen windows with
  77. @ref glfwSetWindowMonitor.
  78. @subsection news_32_maximize Window maxmimization support
  79. GLFW now supports window maximization with @ref glfwMaximizeWindow and the
  80. @ref GLFW_MAXIMIZED window hint and attribute.
  81. @subsection news_32_focus Window input focus control
  82. GLFW now supports giving windows input focus with @ref glfwFocusWindow.
  83. @subsection news_32_sizelimits Window size limit support
  84. GLFW now supports setting both absolute and relative window size limits with
  85. @ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
  86. @subsection news_32_keyname Localized key names
  87. GLFW now supports querying the localized name of printable keys with @ref
  88. glfwGetKeyName, either by key token or by scancode.
  89. @subsection news_32_waittimeout Wait for events with timeout
  90. GLFW now supports waiting for events for a set amount of time with @ref
  91. glfwWaitEventsTimeout.
  92. @subsection news_32_icon Window icon support
  93. GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
  94. @subsection news_32_timer Raw timer access
  95. GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
  96. glfwGetTimerFrequency.
  97. @subsection news_32_joystick Joystick connection callback
  98. GLFW now supports notifying when a joystick has been connected or disconnected
  99. with @ref glfwSetJoystickCallback.
  100. @subsection news_32_noapi Context-less windows
  101. GLFW now supports creating windows without a OpenGL or OpenGL ES context by
  102. setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`.
  103. @subsection news_32_contextapi Run-time context creation API selection
  104. GLFW now supports selecting and querying the context creation API at run-time
  105. with the @ref GLFW_CONTEXT_CREATION_API hint and attribute.
  106. @subsection news_32_noerror Error-free context creation
  107. GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do
  108. not emit errors with the @ref GLFW_CONTEXT_NO_ERROR hint, provided the machine
  109. supports the `GL_KHR_no_error` extension.
  110. @subsection news_32_cmake CMake config-file package support
  111. GLFW now supports being used as a
  112. [config-file package](@ref build_link_cmake_package) from other projects for
  113. easy linking with the library and its dependencies.
  114. @section news_31 Release notes for 3.1
  115. These are the release highlights. For a full list of changes see the
  116. [version history](http://www.glfw.org/changelog.html).
  117. @subsection news_31_cursor Custom mouse cursor images
  118. GLFW now supports creating and setting both custom cursor images and standard
  119. cursor shapes. They are created with @ref glfwCreateCursor or @ref
  120. glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref
  121. glfwDestroyCursor.
  122. @see @ref cursor_object
  123. @subsection news_31_drop Path drop event
  124. GLFW now provides a callback for receiving the paths of files and directories
  125. dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback.
  126. @see @ref path_drop
  127. @subsection news_31_emptyevent Main thread wake-up
  128. GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty
  129. event from another thread to the main thread event queue, causing @ref
  130. glfwWaitEvents to return.
  131. @see @ref events
  132. @subsection news_31_framesize Window frame size query
  133. GLFW now supports querying the size, on each side, of the frame around the
  134. client area of a window, with @ref glfwGetWindowFrameSize.
  135. @see [Window size](@ref window_size)
  136. @subsection news_31_autoiconify Simultaneous multi-monitor rendering
  137. GLFW now supports disabling auto-iconification of full screen windows with
  138. the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint. This is
  139. intended for people building multi-monitor installations, where you need windows
  140. to stay in full screen despite losing input focus.
  141. @subsection news_31_floating Floating windows
  142. GLFW now supports floating windows, also called topmost or always on top, for
  143. easier debugging with the @ref GLFW_FLOATING window hint and attribute.
  144. @subsection news_31_focused Initially unfocused windows
  145. GLFW now supports preventing a windowed mode window from gaining input focus on
  146. creation, with the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint.
  147. @subsection news_31_direct Direct access for window attributes and cursor position
  148. GLFW now queries the window input focus, visibility and iconification attributes
  149. and the cursor position directly instead of returning cached data.
  150. @subsection news_31_charmods Character with modifiers callback
  151. GLFW now provides a callback for character events with modifier key bits. The
  152. callback is set with @ref glfwSetCharModsCallback. Unlike the regular character
  153. callback, this will report character events that will not result in a character
  154. being input, for example if the Control key is held down.
  155. @see @ref input_char
  156. @subsection news_31_single Single buffered framebuffers
  157. GLFW now supports the creation of single buffered windows, with the @ref
  158. GLFW_DOUBLEBUFFER hint.
  159. @subsection news_31_glext Macro for including extension header
  160. GLFW now includes the extension header appropriate for the chosen OpenGL or
  161. OpenGL ES header when @ref GLFW_INCLUDE_GLEXT is defined. GLFW does not provide
  162. these headers. They must be provided by your development environment or your
  163. OpenGL or OpenGL ES SDK.
  164. @subsection news_31_release Context release behaviors
  165. GLFW now supports controlling and querying whether the pipeline is flushed when
  166. a context is made non-current, with the @ref GLFW_CONTEXT_RELEASE_BEHAVIOR hint
  167. and attribute, provided the machine supports the `GL_KHR_context_flush_control`
  168. extension.
  169. @subsection news_31_wayland (Experimental) Wayland support
  170. GLFW now has an _experimental_ Wayland display protocol backend that can be
  171. selected on Linux with a CMake option.
  172. @subsection news_31_mir (Experimental) Mir support
  173. GLFW now has an _experimental_ Mir display server backend that can be selected
  174. on Linux with a CMake option.
  175. @section news_30 Release notes for 3.0
  176. These are the release highlights. For a full list of changes see the
  177. [version history](http://www.glfw.org/changelog.html).
  178. @subsection news_30_cmake CMake build system
  179. GLFW now uses the CMake build system instead of the various makefiles and
  180. project files used by earlier versions. CMake is available for all platforms
  181. supported by GLFW, is present in most package systems and can generate
  182. makefiles and/or project files for most popular development environments.
  183. For more information on how to use CMake, see the
  184. [CMake manual](http://cmake.org/cmake/help/documentation.html).
  185. @subsection news_30_multiwnd Multi-window support
  186. GLFW now supports the creation of multiple windows, each with their own OpenGL
  187. or OpenGL ES context, and all window functions now take a window handle. Event
  188. callbacks are now per-window and are provided with the handle of the window that
  189. received the event. The @ref glfwMakeContextCurrent function has been added to
  190. select which context is current on a given thread.
  191. @subsection news_30_multimon Multi-monitor support
  192. GLFW now explicitly supports multiple monitors. They can be enumerated with
  193. @ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
  194. glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
  195. and specified at window creation to make the newly created window full screen on
  196. that specific monitor.
  197. @subsection news_30_unicode Unicode support
  198. All string arguments to GLFW functions and all strings returned by GLFW now use
  199. the UTF-8 encoding. This includes the window title, error string, clipboard
  200. text, monitor and joystick names as well as the extension function arguments (as
  201. ASCII is a subset of UTF-8).
  202. @subsection news_30_clipboard Clipboard text I/O
  203. GLFW now supports reading and writing plain text to and from the system
  204. clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString
  205. functions.
  206. @subsection news_30_gamma Gamma ramp support
  207. GLFW now supports setting and reading back the gamma ramp of monitors, with the
  208. @ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref
  209. glfwSetGamma, which generates a ramp from a gamma value and then sets it.
  210. @subsection news_30_gles OpenGL ES support
  211. GLFW now supports the creation of OpenGL ES contexts, by setting the
  212. [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_OPENGL_ES_API`, where
  213. creation of such contexts are supported. Note that GLFW _does not implement_
  214. OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern
  215. Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and
  216. WGL APIs, while AMD provides an EGL implementation instead.
  217. @subsection news_30_egl (Experimental) EGL support
  218. GLFW now has an experimental EGL context creation back end that can be selected
  219. through CMake options.
  220. @subsection news_30_hidpi High-DPI support
  221. GLFW now supports high-DPI monitors on both Windows and macOS, giving windows
  222. full resolution framebuffers where other UI elements are scaled up. To achieve
  223. this, @ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have
  224. been added. These work with pixels, while the rest of the GLFW API works with
  225. screen coordinates. This is important as OpenGL uses pixels, not screen
  226. coordinates.
  227. @subsection news_30_error Error callback
  228. GLFW now has an error callback, which can provide your application with much
  229. more detailed diagnostics than was previously possible. The callback is passed
  230. an error code and a description string.
  231. @subsection news_30_wndptr Per-window user pointer
  232. Each window now has a user-defined pointer, retrieved with @ref
  233. glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it
  234. easier to integrate GLFW into C++ code.
  235. @subsection news_30_iconifyfun Window iconification callback
  236. Each window now has a callback for iconification and restoration events,
  237. which is set with @ref glfwSetWindowIconifyCallback.
  238. @subsection news_30_wndposfun Window position callback
  239. Each window now has a callback for position events, which is set with @ref
  240. glfwSetWindowPosCallback.
  241. @subsection news_30_wndpos Window position query
  242. The position of a window can now be retrieved using @ref glfwGetWindowPos.
  243. @subsection news_30_focusfun Window focus callback
  244. Each windows now has a callback for focus events, which is set with @ref
  245. glfwSetWindowFocusCallback.
  246. @subsection news_30_enterleave Cursor enter/leave callback
  247. Each window now has a callback for when the mouse cursor enters or leaves its
  248. client area, which is set with @ref glfwSetCursorEnterCallback.
  249. @subsection news_30_wndtitle Initial window title
  250. The title of a window is now specified at creation time, as one of the arguments
  251. to @ref glfwCreateWindow.
  252. @subsection news_30_hidden Hidden windows
  253. Windows can now be hidden with @ref glfwHideWindow, shown using @ref
  254. glfwShowWindow and created initially hidden with the @ref GLFW_VISIBLE window
  255. hint and attribute. This allows for off-screen rendering in a way compatible
  256. with most drivers, as well as moving a window to a specific position before
  257. showing it.
  258. @subsection news_30_undecorated Undecorated windows
  259. Windowed mode windows can now be created without decorations, e.g. things like
  260. a frame, a title bar, with the @ref GLFW_DECORATED window hint and attribute.
  261. This allows for the creation of things like splash screens.
  262. @subsection news_30_keymods Modifier key bit masks
  263. [Modifier key bit mask](@ref mods) parameters have been added to the
  264. [mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks.
  265. @subsection news_30_scancode Platform-specific scancodes
  266. A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys
  267. that don't have a [key token](@ref keys) still get passed on with the key
  268. parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines
  269. and are intended to be used for key bindings.
  270. @subsection news_30_jsname Joystick names
  271. The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
  272. @subsection news_30_doxygen Doxygen documentation
  273. You are reading it.
  274. */