| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876 |
- /*!
- @page news Release notes
- @tableofcontents
- @section news_33 Release notes for version 3.3
- These are the release notes for version 3.3. For a more detailed view including
- all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
- Please review the caveats, deprecations and removals if your project was written
- against an earlier version of GLFW 3.
- @subsection features_33 New features in version 3.3
- @subsubsection gamepad_33 Gamepad input via SDL_GameControllerDB
- GLFW can now remap game controllers to a standard Xbox-like layout using
- a built-in copy of SDL_GameControllerDB. Call @ref glfwJoystickIsGamepad to
- check if a joystick has a mapping, @ref glfwGetGamepadState to retrieve its
- input state, @ref glfwUpdateGamepadMappings to add newer mappings and @ref
- glfwGetGamepadName and @ref glfwGetJoystickGUID for mapping related information.
- For more information see @ref gamepad.
- @subsubsection moltenvk_33 Support for Vulkan on macOS via MoltenVK
- GLFW now supports [MoltenVK](https://moltengl.com/moltenvk/), a Vulkan
- implementation on top of the Metal API, and its `VK_MVK_macos_surface` window
- surface creation extension. MoltenVK is included in the [macOS Vulkan
- SDK](https://vulkan.lunarg.com/).
- For more information see @ref vulkan_guide.
- @subsubsection content_scale_33 Content scale queries for DPI-aware rendering
- GLFW now provides content scales for windows and monitors, i.e. the ratio
- between their current DPI and the platform's default DPI, with @ref
- glfwGetWindowContentScale and @ref glfwGetMonitorContentScale.
- Changes of the content scale of a window can be received with the window content
- scale callback, set with @ref glfwSetWindowContentScaleCallback.
- The @ref GLFW_SCALE_TO_MONITOR window hint enables automatic resizing of a
- window by the content scale of the monitor it is placed, on platforms like
- Windows where this is necessary. This takes effect both on creation and when
- the window is moved between monitors. It is related to but different from
- [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
- For more information see @ref window_scale.
- @subsubsection setwindowattrib_33 Support for updating window attributes
- GLFW now supports changing the [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
- [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
- [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
- [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
- [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) attributes for existing
- windows with @ref glfwSetWindowAttrib.
- For more information see @ref window_attribs.
- @subsubsection raw_motion_33 Support for raw mouse motion
- GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled
- cursor mode with the [GLFW_RAW_MOUSE_MOTION](@ref GLFW_RAW_MOUSE_MOTION) input
- mode. Raw mouse motion input is not yet implemented on macOS. Call @ref
- glfwRawMouseMotionSupported to check if GLFW can provide raw mouse motion on the
- current system.
- For more information see @ref raw_mouse_motion.
- @subsubsection joysticks_33 Joystick hats
- GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with
- @ref glfwGetJoystickHats. For compatibility, hats are also exposed as buttons.
- This can be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS initialization
- hint.
- For more information see @ref joystick_hat.
- @subsubsection geterror_33 Error query
- GLFW now supports querying the last error code for the calling thread and its
- human-readable description with @ref glfwGetError. This can be used instead of
- or together with the error callback.
- For more information see @ref error_handling.
- @subsubsection init_hints_33 Support for initialization hints
- GLFW now supports setting library initialization hints with @ref glfwInitHint.
- These must be set before initialization to take effect. Some of these hints are
- platform specific but are safe to set on any platform.
- For more information see @ref init_hints.
- @subsubsection attention_33 User attention request
- GLFW now supports requesting user attention with @ref
- glfwRequestWindowAttention. Where possible this calls attention to the
- specified window. On platforms like macOS it calls attention to the whole
- application.
- For more information see @ref window_attention.
- @subsubsection maximize_33 Window maximization callback
- GLFW now supports notifying the application that the window has been maximized
- @ref glfwSetWindowMaximizeCallback. This is called both when the window was
- maximized by the user and when it was done with @ref glfwMaximizeWindow.
- For more information see @ref window_maximize.
- @subsubsection workarea_33 Query for the monitor work area
- GLFW now supports querying the work area of a monitor, i.e. the area not
- occupied by task bars or global menu bars, with @ref glfwGetMonitorWorkarea. On
- platforms that lack this concept, the whole area of the monitor is returned.
- For more information see @ref monitor_workarea.
- @subsubsection transparency_33 Transparent windows and framebuffers
- GLFW now supports the creation of windows with transparent framebuffers on
- systems with desktop compositing enabled with the @ref
- GLFW_TRANSPARENT_FRAMEBUFFER window hint and attribute. This hint must be set
- before window creation and leaves any window decorations opaque.
- GLFW now also supports whole window transparency with @ref glfwGetWindowOpacity
- and @ref glfwSetWindowOpacity. This value controls the opacity of the whole
- window including decorations and unlike framebuffer transparency can be changed
- at any time after window creation.
- For more information see @ref window_transparency.
- @subsubsection key_scancode_33 Query for the scancode of a key
- GLFW now supports querying the platform dependent scancode of any physical key
- with @ref glfwGetKeyScancode.
- For more information see @ref input_key.
- @subsubsection center_cursor_33 Cursor centering window hint
- GLFW now supports controlling whether the cursor is centered over newly created
- full screen windows with the [GLFW_CENTER_CURSOR](@ref GLFW_CENTER_CURSOR_hint)
- window hint. It is enabled by default.
- @subsubsection cursor_hover_33 Mouse cursor hover window attribute
- GLFW now supports polling whether the cursor is hovering over the window content
- area with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute. This
- attribute corresponds to the [cursor enter/leave](@ref cursor_enter) event.
- @subsubsection focusonshow_33 Window hint and attribute for input focus on show
- GLFW now has the [GLFW_FOCUS_ON_SHOW](@ref GLFW_DECORATED_hint) window hint and
- attribute for controlling whether a window gets input focus when shown. It is
- enabled by default. It applies both when creating an visible window with @ref
- glfwCreateWindow and when showing it with @ref glfwShowWindow.
- This is a workaround for GLFW 3.0 lacking @ref glfwFocusWindow and will be
- corrected in the next major version.
- For more information see @ref window_hide.
- @subsubsection device_userptr_33 Monitor and joystick user pointers
- GLFW now supports setting and querying user pointers for connected monitors and
- joysticks with @ref glfwSetMonitorUserPointer, @ref glfwGetMonitorUserPointer,
- @ref glfwSetJoystickUserPointer and @ref glfwGetJoystickUserPointer.
- For more information see @ref monitor_userptr and @ref joystick_userptr.
- @subsubsection macos_nib_33 macOS menu bar from nib file
- GLFW will now load a `MainMenu.nib` file if found in the `Contents/Resources`
- directory of the application bundle, as a way to replace the GLFW menu bar
- without recompiling GLFW. This behavior can be disabled with the
- [GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint) initialization hint.
- @subsubsection glext_33 Support for more context creation extensions
- The context hint @ref GLFW_SRGB_CAPABLE now supports OpenGL ES via
- `WGL_EXT_colorspace`, the context hint @ref GLFW_CONTEXT_NO_ERROR now supports
- `WGL_ARB_create_context_no_error` and `GLX_ARB_create_context_no_error`, the
- context hint @ref GLFW_CONTEXT_RELEASE_BEHAVIOR now supports
- `EGL_KHR_context_flush_control` and @ref glfwGetProcAddress now supports
- `EGL_KHR_get_all_proc_addresses`.
- @subsubsection osmesa_33 OSMesa off-screen context creation support
- GLFW now supports creating off-screen OpenGL contexts using
- [OSMesa](https://www.mesa3d.org/osmesa.html) by setting
- [GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) to
- `GLFW_OSMESA_CONTEXT_API`. Native access function have been added to retrieve
- the OSMesa color and depth buffers.
- There is also a new null backend that uses OSMesa as its native context
- creation API, intended for automated testing. This backend does not provide
- input.
- @subsection caveats_33 Caveats for version 3.3
- @subsubsection joystick_layout_33 Layout of joysticks have changed
- The way joystick elements are arranged have changed to match SDL2 in order to
- support SDL_GameControllerDB mappings. The layout of joysticks may
- change again if required for compatibility with SDL2. If you need a known and
- stable layout for game controllers, see if you can switch to @ref gamepad.
- Existing code that depends on a specific joystick layout will likely have to be
- updated.
- @subsubsection wait_events_33 No window required to wait for events
- The @ref glfwWaitEvents and @ref glfwWaitEventsTimeout functions no longer need
- a window to be created to wait for events. Before version 3.3 these functions
- would return immediately if there were no user-created windows. On platforms
- where only windows can receive events, an internal helper window is used.
- Existing code that depends on the earlier behavior will likely have to be
- updated.
- @subsubsection gamma_ramp_size_33 Gamma ramp size of 256 may be rejected
- The documentation for versions before 3.3 stated that a gamma ramp size of 256
- would always be accepted. This was never the case on X11 and could lead to
- artifacts on macOS. The @ref glfwSetGamma function has been updated to always
- generate a ramp of the correct size.
- Existing code that hardcodes a size of 256 should be updated to use the size of
- the current ramp of a monitor when setting a new ramp for that monitor.
- @subsubsection xinput_deadzone_33 Windows XInput deadzone removed
- GLFW no longer applies any deadzone to the input state received from the XInput
- API. This was never done for any other platform joystick API so this change
- makes the behavior more consistent but you will need to apply your own deadzone
- if desired.
- @subsubsection x11_clipboard_33 X11 clipboard transfer limits
- GLFW now supports reading clipboard text via the `INCR` method, which removes
- the limit on how much text can be read with @ref glfwGetClipboardString.
- However, writing via this method is not yet supported, so you may not be able to
- write a very large string with @ref glfwSetClipboardString even if you read it
- from the clipboard earlier.
- The exact size limit for writing to the clipboard is negotiated with each
- receiving application but is at least several tens of kilobytes. Note that only
- the read limit has changed. Any string that could be written before still can
- be.
- @subsubsection x11_linking_33 X11 extension libraries are loaded dynamically
- GLFW now loads all X11 extension libraries at initialization. The only X11
- library you need to link against is `libX11`. The header files for the
- extension libraries are still required for compilation.
- Existing projects and makefiles that link GLFW directly against the extension
- libraries should still build correctly but will add these libraries as load-time
- dependencies.
- @subsubsection cmake_version_33 CMake 3.0 or later is required
- The minimum CMake version has been raised from 2.8.12 to 3.0. This is only
- a requirement of the GLFW CMake files. The GLFW source files do not depend on
- CMake.
- @subsubsection caveat_fbtransparency_33 Framebuffer transparency requires DWM transparency
- GLFW no longer supports framebuffer transparency enabled via @ref
- GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off
- (the Transparency setting under Personalization > Window Color).
- @subsubsection emptyevents_33 Empty events on X11 no longer roundtrip to server
- Starting with GLFW 3.3.7, events posted with @ref glfwPostEmptyEvent now use a separate
- unnamed pipe instead of sending an X11 client event to the helper window.
- @subsection deprecations_33 Deprecations in version 3.3
- @subsubsection charmods_callback_33 Character with modifiers callback
- The character with modifiers callback set with @ref glfwSetCharModsCallback has
- been deprecated and should if possible not be used.
- Existing code should still work but further bug fixes will likely not be made.
- The callback will be removed in the next major version.
- @subsubsection clipboard_window_33 Window parameter to clipboard functions
- The window parameter of the clipboard functions @ref glfwGetClipboardString and
- @ref glfwSetClipboardString has been deprecated and is no longer used on any
- platform. On platforms where the clipboard must be owned by a specific window,
- an internal helper window is used.
- Existing code should still work unless it depends on a specific window owning
- the clipboard. New code may pass `NULL` as the window argument. The parameter
- will be removed in a future release.
- @subsection removals_33 Removals in 3.3
- @subsubsection macos_options_33 macOS specific CMake options and macros
- The `GLFW_USE_RETINA`, `GLFW_USE_CHDIR` and `GLFW_USE_MENUBAR` CMake options and
- the `_GLFW_USE_RETINA`, `_GLFW_USE_CHDIR` and `_GLFW_USE_MENUBAR` compile-time
- macros have been removed.
- These options and macros are replaced by the window hint
- [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
- and the init hints
- [GLFW_COCOA_CHDIR_RESOURCES](@ref GLFW_COCOA_CHDIR_RESOURCES_hint) and
- [GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint).
- Existing projects and makefiles that set these options or define these macros
- during compilation of GLFW will still build but it will have no effect and the
- default behaviors will be used.
- @subsubsection vulkan_sdk_33 LunarG Vulkan SDK dependency
- The GLFW test programs that previously depended on the LunarG Vulkan SDK now
- instead uses a Vulkan loader generated by
- [glad2](https://github.com/Dav1dde/glad). This means the GLFW CMake files no
- longer look for the Vulkan SDK.
- Existing CMake projects that depended on the Vulkan SDK cache variables from
- GLFW will need to call `find_package(Vulkan)` themselves. CMake 3.7 and later
- already comes with a
- [Vulkan find module](https://cmake.org/cmake/help/latest/module/FindVulkan.html)
- similar to the one GLFW previously included.
- @subsubsection lib_suffix_33 CMake option LIB_SUFFIX
- The `LIB_SUFFIX` CMake option has been removed. GLFW now uses the
- GNUInstallDirs CMake package to handle platform specific details like the
- library directory suffix and the `LIB_SUFFIX` CMake option has been removed.
- Existing projects and makefiles that set the `LIB_SUFFIX` option will use the
- suffix chosen by the GNUInstallDirs package and the option will be ignored.
- @subsubsection wl_shell_33 Support for the wl_shell protocol
- Support for the wl_shell protocol has been removed and GLFW now only supports
- the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell
- then GLFW will fail to initialize.
- @subsubsection mir_removed_33 Mir support
- The experimental Mir support has been completely removed as the Mir project has
- implemented support for the Wayland protocol and is recommending that
- applications use that instead.
- Existing projects and makefiles that select Mir when compiling GLFW will fail.
- Use Wayland or X11 instead.
- @subsection symbols_33 New symbols in version 3.3
- @subsubsection functions_33 New functions in version 3.3
- - @ref glfwInitHint
- - @ref glfwGetError
- - @ref glfwGetMonitorWorkarea
- - @ref glfwGetMonitorContentScale
- - @ref glfwGetMonitorUserPointer
- - @ref glfwSetMonitorUserPointer
- - @ref glfwWindowHintString
- - @ref glfwGetWindowContentScale
- - @ref glfwGetWindowOpacity
- - @ref glfwSetWindowOpacity
- - @ref glfwRequestWindowAttention
- - @ref glfwSetWindowAttrib
- - @ref glfwSetWindowMaximizeCallback
- - @ref glfwSetWindowContentScaleCallback
- - @ref glfwRawMouseMotionSupported
- - @ref glfwGetKeyScancode
- - @ref glfwGetJoystickHats
- - @ref glfwGetJoystickGUID
- - @ref glfwGetJoystickUserPointer
- - @ref glfwSetJoystickUserPointer
- - @ref glfwJoystickIsGamepad
- - @ref glfwUpdateGamepadMappings
- - @ref glfwGetGamepadName
- - @ref glfwGetGamepadState
- @subsubsection types_33 New types in version 3.3
- - @ref GLFWwindowmaximizefun
- - @ref GLFWwindowcontentscalefun
- - @ref GLFWgamepadstate
- @subsubsection constants_33 New constants in version 3.3
- - @ref GLFW_NO_ERROR
- - @ref GLFW_JOYSTICK_HAT_BUTTONS
- - @ref GLFW_COCOA_CHDIR_RESOURCES
- - @ref GLFW_COCOA_MENUBAR
- - @ref GLFW_CENTER_CURSOR
- - @ref GLFW_TRANSPARENT_FRAMEBUFFER
- - @ref GLFW_HOVERED
- - @ref GLFW_FOCUS_ON_SHOW
- - @ref GLFW_SCALE_TO_MONITOR
- - @ref GLFW_COCOA_RETINA_FRAMEBUFFER
- - @ref GLFW_COCOA_FRAME_NAME
- - @ref GLFW_COCOA_GRAPHICS_SWITCHING
- - @ref GLFW_X11_CLASS_NAME
- - @ref GLFW_X11_INSTANCE_NAME
- - @ref GLFW_OSMESA_CONTEXT_API
- - @ref GLFW_HAT_CENTERED
- - @ref GLFW_HAT_UP
- - @ref GLFW_HAT_RIGHT
- - @ref GLFW_HAT_DOWN
- - @ref GLFW_HAT_LEFT
- - @ref GLFW_HAT_RIGHT_UP
- - @ref GLFW_HAT_RIGHT_DOWN
- - @ref GLFW_HAT_LEFT_UP
- - @ref GLFW_HAT_LEFT_DOWN
- - @ref GLFW_MOD_CAPS_LOCK
- - @ref GLFW_MOD_NUM_LOCK
- - @ref GLFW_LOCK_KEY_MODS
- - @ref GLFW_RAW_MOUSE_MOTION
- - @ref GLFW_GAMEPAD_BUTTON_A
- - @ref GLFW_GAMEPAD_BUTTON_B
- - @ref GLFW_GAMEPAD_BUTTON_X
- - @ref GLFW_GAMEPAD_BUTTON_Y
- - @ref GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
- - @ref GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
- - @ref GLFW_GAMEPAD_BUTTON_BACK
- - @ref GLFW_GAMEPAD_BUTTON_START
- - @ref GLFW_GAMEPAD_BUTTON_GUIDE
- - @ref GLFW_GAMEPAD_BUTTON_LEFT_THUMB
- - @ref GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
- - @ref GLFW_GAMEPAD_BUTTON_DPAD_UP
- - @ref GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
- - @ref GLFW_GAMEPAD_BUTTON_DPAD_DOWN
- - @ref GLFW_GAMEPAD_BUTTON_DPAD_LEFT
- - @ref GLFW_GAMEPAD_BUTTON_LAST
- - @ref GLFW_GAMEPAD_BUTTON_CROSS
- - @ref GLFW_GAMEPAD_BUTTON_CIRCLE
- - @ref GLFW_GAMEPAD_BUTTON_SQUARE
- - @ref GLFW_GAMEPAD_BUTTON_TRIANGLE
- - @ref GLFW_GAMEPAD_AXIS_LEFT_X
- - @ref GLFW_GAMEPAD_AXIS_LEFT_Y
- - @ref GLFW_GAMEPAD_AXIS_RIGHT_X
- - @ref GLFW_GAMEPAD_AXIS_RIGHT_Y
- - @ref GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
- - @ref GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
- - @ref GLFW_GAMEPAD_AXIS_LAST
- @section news_32 Release notes for 3.2
- These are the release notes for version 3.2. For a more detailed view including
- all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
- @subsection features_32 New features in version 3.2
- @subsubsection news_32_vulkan Support for Vulkan
- GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported,
- @ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref
- glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface.
- Vulkan header inclusion can be selected with
- @ref GLFW_INCLUDE_VULKAN.
- @subsubsection news_32_setwindowmonitor Window mode switching
- GLFW now supports switching between windowed and full screen modes and updating
- the monitor and desired resolution and refresh rate of full screen windows with
- @ref glfwSetWindowMonitor.
- @subsubsection news_32_maximize Window maxmimization support
- GLFW now supports window maximization with @ref glfwMaximizeWindow and the
- @ref GLFW_MAXIMIZED window hint and attribute.
- @subsubsection news_32_focus Window input focus control
- GLFW now supports giving windows input focus with @ref glfwFocusWindow.
- @subsubsection news_32_sizelimits Window size limit support
- GLFW now supports setting both absolute and relative window size limits with
- @ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
- @subsubsection news_32_keyname Localized key names
- GLFW now supports querying the localized name of printable keys with @ref
- glfwGetKeyName, either by key token or by scancode.
- @subsubsection news_32_waittimeout Wait for events with timeout
- GLFW now supports waiting for events for a set amount of time with @ref
- glfwWaitEventsTimeout.
- @subsubsection news_32_icon Window icon support
- GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
- @subsubsection news_32_timer Raw timer access
- GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
- glfwGetTimerFrequency.
- @subsubsection news_32_joystick Joystick connection callback
- GLFW now supports notifying when a joystick has been connected or disconnected
- with @ref glfwSetJoystickCallback.
- @subsubsection news_32_noapi Context-less windows
- GLFW now supports creating windows without a OpenGL or OpenGL ES context by
- setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`.
- @subsubsection news_32_contextapi Run-time context creation API selection
- GLFW now supports selecting and querying the context creation API at run-time
- with the @ref GLFW_CONTEXT_CREATION_API hint and attribute.
- @subsubsection news_32_noerror Error-free context creation
- GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do
- not emit errors with the @ref GLFW_CONTEXT_NO_ERROR hint, provided the machine
- supports the `GL_KHR_no_error` extension.
- @subsubsection news_32_cmake CMake config-file package support
- GLFW now supports being used as a
- [config-file package](@ref build_link_cmake_package) from other projects for
- easy linking with the library and its dependencies.
- @section news_31 Release notes for 3.1
- These are the release notes for version 3.1. For a more detailed view including
- all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
- @subsection features_31 New features in version 3.1
- @subsubsection news_31_cursor Custom mouse cursor images
- GLFW now supports creating and setting both custom cursor images and standard
- cursor shapes. They are created with @ref glfwCreateCursor or @ref
- glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref
- glfwDestroyCursor.
- @see @ref cursor_object
- @subsubsection news_31_drop Path drop event
- GLFW now provides a callback for receiving the paths of files and directories
- dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback.
- @see @ref path_drop
- @subsubsection news_31_emptyevent Main thread wake-up
- GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty
- event from another thread to the main thread event queue, causing @ref
- glfwWaitEvents to return.
- @see @ref events
- @subsubsection news_31_framesize Window frame size query
- GLFW now supports querying the size, on each side, of the frame around the
- content area of a window, with @ref glfwGetWindowFrameSize.
- @see [Window size](@ref window_size)
- @subsubsection news_31_autoiconify Simultaneous multi-monitor rendering
- GLFW now supports disabling auto-iconification of full screen windows with
- the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint. This is
- intended for people building multi-monitor installations, where you need windows
- to stay in full screen despite losing input focus.
- @subsubsection news_31_floating Floating windows
- GLFW now supports floating windows, also called topmost or always on top, for
- easier debugging with the @ref GLFW_FLOATING window hint and attribute.
- @subsubsection news_31_focused Initially unfocused windows
- GLFW now supports preventing a windowed mode window from gaining input focus on
- creation, with the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint.
- @subsubsection news_31_direct Direct access for window attributes and cursor position
- GLFW now queries the window input focus, visibility and iconification attributes
- and the cursor position directly instead of returning cached data.
- @subsubsection news_31_charmods Character with modifiers callback
- GLFW now provides a callback for character events with modifier key bits. The
- callback is set with @ref glfwSetCharModsCallback. Unlike the regular character
- callback, this will report character events that will not result in a character
- being input, for example if the Control key is held down.
- @see @ref input_char
- @subsubsection news_31_single Single buffered framebuffers
- GLFW now supports the creation of single buffered windows, with the @ref
- GLFW_DOUBLEBUFFER hint.
- @subsubsection news_31_glext Macro for including extension header
- GLFW now includes the extension header appropriate for the chosen OpenGL or
- OpenGL ES header when @ref GLFW_INCLUDE_GLEXT is defined. GLFW does not provide
- these headers. They must be provided by your development environment or your
- OpenGL or OpenGL ES SDK.
- @subsubsection news_31_release Context release behaviors
- GLFW now supports controlling and querying whether the pipeline is flushed when
- a context is made non-current, with the @ref GLFW_CONTEXT_RELEASE_BEHAVIOR hint
- and attribute, provided the machine supports the `GL_KHR_context_flush_control`
- extension.
- @subsubsection news_31_wayland (Experimental) Wayland support
- GLFW now has an _experimental_ Wayland display protocol backend that can be
- selected on Linux with a CMake option.
- @subsubsection news_31_mir (Experimental) Mir support
- GLFW now has an _experimental_ Mir display server backend that can be selected
- on Linux with a CMake option.
- @section news_30 Release notes for 3.0
- These are the release notes for version 3.0. For a more detailed view including
- all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
- @subsection features_30 New features in version 3.0
- @subsubsection news_30_cmake CMake build system
- GLFW now uses the CMake build system instead of the various makefiles and
- project files used by earlier versions. CMake is available for all platforms
- supported by GLFW, is present in most package systems and can generate
- makefiles and/or project files for most popular development environments.
- For more information on how to use CMake, see the
- [CMake manual](https://cmake.org/cmake/help/documentation.html).
- @subsubsection news_30_multiwnd Multi-window support
- GLFW now supports the creation of multiple windows, each with their own OpenGL
- or OpenGL ES context, and all window functions now take a window handle. Event
- callbacks are now per-window and are provided with the handle of the window that
- received the event. The @ref glfwMakeContextCurrent function has been added to
- select which context is current on a given thread.
- @subsubsection news_30_multimon Multi-monitor support
- GLFW now explicitly supports multiple monitors. They can be enumerated with
- @ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
- glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
- and specified at window creation to make the newly created window full screen on
- that specific monitor.
- @subsubsection news_30_unicode Unicode support
- All string arguments to GLFW functions and all strings returned by GLFW now use
- the UTF-8 encoding. This includes the window title, error string, clipboard
- text, monitor and joystick names as well as the extension function arguments (as
- ASCII is a subset of UTF-8).
- @subsubsection news_30_clipboard Clipboard text I/O
- GLFW now supports reading and writing plain text to and from the system
- clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString
- functions.
- @subsubsection news_30_gamma Gamma ramp support
- GLFW now supports setting and reading back the gamma ramp of monitors, with the
- @ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref
- glfwSetGamma, which generates a ramp from a gamma value and then sets it.
- @subsubsection news_30_gles OpenGL ES support
- GLFW now supports the creation of OpenGL ES contexts, by setting the
- [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_OPENGL_ES_API`, where
- creation of such contexts are supported. Note that GLFW _does not implement_
- OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern
- Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and
- WGL APIs, while AMD provides an EGL implementation instead.
- @subsubsection news_30_egl (Experimental) EGL support
- GLFW now has an experimental EGL context creation back end that can be selected
- through CMake options.
- @subsubsection news_30_hidpi High-DPI support
- GLFW now supports high-DPI monitors on both Windows and macOS, giving windows
- full resolution framebuffers where other UI elements are scaled up. To achieve
- this, @ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have
- been added. These work with pixels, while the rest of the GLFW API works with
- screen coordinates. This is important as OpenGL uses pixels, not screen
- coordinates.
- @subsubsection news_30_error Error callback
- GLFW now has an error callback, which can provide your application with much
- more detailed diagnostics than was previously possible. The callback is passed
- an error code and a description string.
- @subsubsection news_30_wndptr Per-window user pointer
- Each window now has a user-defined pointer, retrieved with @ref
- glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it
- easier to integrate GLFW into C++ code.
- @subsubsection news_30_iconifyfun Window iconification callback
- Each window now has a callback for iconification and restoration events,
- which is set with @ref glfwSetWindowIconifyCallback.
- @subsubsection news_30_wndposfun Window position callback
- Each window now has a callback for position events, which is set with @ref
- glfwSetWindowPosCallback.
- @subsubsection news_30_wndpos Window position query
- The position of a window can now be retrieved using @ref glfwGetWindowPos.
- @subsubsection news_30_focusfun Window focus callback
- Each windows now has a callback for focus events, which is set with @ref
- glfwSetWindowFocusCallback.
- @subsubsection news_30_enterleave Cursor enter/leave callback
- Each window now has a callback for when the mouse cursor enters or leaves its
- content area, which is set with @ref glfwSetCursorEnterCallback.
- @subsubsection news_30_wndtitle Initial window title
- The title of a window is now specified at creation time, as one of the arguments
- to @ref glfwCreateWindow.
- @subsubsection news_30_hidden Hidden windows
- Windows can now be hidden with @ref glfwHideWindow, shown using @ref
- glfwShowWindow and created initially hidden with the @ref GLFW_VISIBLE window
- hint and attribute. This allows for off-screen rendering in a way compatible
- with most drivers, as well as moving a window to a specific position before
- showing it.
- @subsubsection news_30_undecorated Undecorated windows
- Windowed mode windows can now be created without decorations, e.g. things like
- a frame, a title bar, with the @ref GLFW_DECORATED window hint and attribute.
- This allows for the creation of things like splash screens.
- @subsubsection news_30_keymods Modifier key bit masks
- [Modifier key bit mask](@ref mods) parameters have been added to the
- [mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks.
- @subsubsection news_30_scancode Platform-specific scancodes
- A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys
- that don't have a [key token](@ref keys) still get passed on with the key
- parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines
- and are intended to be used for key bindings.
- @subsubsection news_30_jsname Joystick names
- The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
- @subsubsection news_30_doxygen Doxygen documentation
- You are reading it.
- */
|