mirror of
https://github.com/glfw/glfw.git
synced 2024-11-25 11:35:11 +00:00
569 lines
19 KiB
Plaintext
569 lines
19 KiB
Plaintext
/*!
|
||
|
||
@page news Release notes
|
||
|
||
@section news_33 Release notes for 3.3
|
||
|
||
@subsection news_33_gamepad SDL_GameControllerDB support and gamepad input
|
||
|
||
GLFW now supports remapping of gamepads and controllers to a 360-like controller
|
||
layout with @ref glfwJoystickIsGamepad, @ref glfwGetJoystickGUID, @ref
|
||
glfwGetGamepadName, @ref glfwGetGamepadState and @ref glfwUpdateGamepadMappings,
|
||
and the input state struct @ref GLFWgamepadstate.
|
||
|
||
@sa @ref gamepad
|
||
|
||
|
||
@subsection news_33_joyhats Support for joystick hats
|
||
|
||
GLFW now supports querying the hats (or POVs or D-pads) of a joystick with @ref
|
||
glfwGetJoystickHats. Hats are by default also exposed as buttons, but this can
|
||
be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS init hint.
|
||
|
||
@see @ref joystick_hat
|
||
|
||
|
||
@subsection news_33_contentscale Content scale queries for DPI-aware rendering
|
||
|
||
GLFW now supports querying the window and monitor content scale, i.e. the ratio
|
||
between the 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 and X11 where this is necessary.
|
||
|
||
@see @ref window_scale
|
||
|
||
|
||
@subsection news_33_moltenvk Support for Vulkan on macOS via MoltenVK
|
||
|
||
GLFW now supports the `VK_MVK_macos_surface` window surface creation extension
|
||
provided by MoltenVK in the [LunarG Vulkan SDK](https://vulkan.lunarg.com/).
|
||
|
||
@see @ref vulkan_guide
|
||
|
||
|
||
@subsection news_33_setwindowattrib 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) and
|
||
[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) attributes for existing
|
||
windows with @ref glfwSetWindowAttrib.
|
||
|
||
@see @ref window_attribs
|
||
|
||
|
||
@subsection news_33_rawmotion 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. Call @ref glfwRawMouseMotionSupported to check if the current machine
|
||
supports raw mouse motion.
|
||
|
||
|
||
@subsection news_33_geterror Error query
|
||
|
||
GLFW now supports querying the last error code for the calling thread and its
|
||
human-readable description with @ref glfwGetError.
|
||
|
||
@see @ref error_handling
|
||
|
||
|
||
@subsection news_33_inithint Support for initialization hints
|
||
|
||
GLFW now supports setting library initialization hints with @ref glfwInitHint.
|
||
These must be set before initialization to take effect.
|
||
|
||
@see @ref init_hints
|
||
|
||
|
||
@subsection news_33_platformhints Support for platform specific hints
|
||
|
||
GLFW now supports platform specific init and window hints to control system
|
||
features that are only available on a single platform.
|
||
|
||
@see @ref init_hints_osx
|
||
@see @ref window_hints_osx
|
||
|
||
|
||
@subsection news_33_attention User attention request
|
||
|
||
GLFW now supports requesting user attention to a specific window (on macOS to
|
||
the application as a whole) with @ref glfwRequestWindowAttention.
|
||
|
||
@see @ref window_attention
|
||
|
||
|
||
@subsection news_33_maximize Window maximization callback
|
||
|
||
GLFW now supports notifying the application that the window has been maximized
|
||
@ref glfwSetWindowMaximizeCallback.
|
||
|
||
@see @ref window_maximize
|
||
|
||
|
||
@subsection news_33_workarea Support for 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.
|
||
|
||
@see @ref monitor_workarea
|
||
|
||
|
||
@subsection news_33_transparent Support for 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.
|
||
|
||
|
||
@subsection news_33_keyscancode Platform-specific key scancode query
|
||
|
||
GLFW now supports querying the platform dependent scancode of any physical key
|
||
with @ref glfwGetKeyScancode.
|
||
|
||
@see @ref input_key
|
||
|
||
|
||
@subsection news_33_centercursor 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.
|
||
|
||
|
||
@subsection news_33_hover 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.
|
||
|
||
|
||
@subsection news_33_focusonshow GLFW_FOCUS_ON_SHOW window hint and attribute
|
||
|
||
GLFW now supports the [GLFW_FOCUS_ON_SHOW](@ref GLFW_DECORATED_hint) window hint
|
||
and attribute for controlling input focus when calling @ref glfwShowWindow
|
||
|
||
@see @ref window_hide
|
||
|
||
|
||
@subsection news_33_userptr 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.
|
||
|
||
|
||
@subsection news_33_primary X11 primary selection access
|
||
|
||
GLFW now supports querying and setting the X11 primary selection via the native
|
||
access functions @ref glfwGetX11SelectionString and @ref
|
||
glfwSetX11SelectionString.
|
||
|
||
|
||
@subsection news_33_osmesa OSMesa backend for headless software rendering
|
||
|
||
GLFW now supports creating offscreen 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`.
|
||
|
||
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 news_33_mir_removal Experimental Mir support has been removed
|
||
|
||
As per the release of Mir 1.0, the recommended API is now Wayland, the
|
||
experimental Mir display server backend introduced in GLFW 3.1 has thus been
|
||
removed. To use the experimental Wayland backend, pass -DGLFW_USE_WAYLAND=ON
|
||
to cmake where you previously passed the now-removed -DGLFW_USE_MIR=ON.
|
||
|
||
|
||
@section news_32 Release notes for 3.2
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection news_32_maximize Window maxmimization support
|
||
|
||
GLFW now supports window maximization with @ref glfwMaximizeWindow and the
|
||
@ref GLFW_MAXIMIZED window hint and attribute.
|
||
|
||
|
||
@subsection news_32_focus Window input focus control
|
||
|
||
GLFW now supports giving windows input focus with @ref glfwFocusWindow.
|
||
|
||
|
||
@subsection news_32_sizelimits Window size limit support
|
||
|
||
GLFW now supports setting both absolute and relative window size limits with
|
||
@ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection news_32_waittimeout Wait for events with timeout
|
||
|
||
GLFW now supports waiting for events for a set amount of time with @ref
|
||
glfwWaitEventsTimeout.
|
||
|
||
|
||
@subsection news_32_icon Window icon support
|
||
|
||
GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
|
||
|
||
|
||
@subsection news_32_timer Raw timer access
|
||
|
||
GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
|
||
glfwGetTimerFrequency.
|
||
|
||
|
||
@subsection news_32_joystick Joystick connection callback
|
||
|
||
GLFW now supports notifying when a joystick has been connected or disconnected
|
||
with @ref glfwSetJoystickCallback.
|
||
|
||
|
||
@subsection 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`.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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 highlights. For a full list of changes see the
|
||
[version history](https://www.glfw.org/changelog.html).
|
||
|
||
|
||
@subsection 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
|
||
|
||
|
||
@subsection 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
|
||
|
||
|
||
@subsection 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
|
||
|
||
|
||
@subsection 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)
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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
|
||
|
||
|
||
@subsection news_31_single Single buffered framebuffers
|
||
|
||
GLFW now supports the creation of single buffered windows, with the @ref
|
||
GLFW_DOUBLEBUFFER hint.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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 highlights. For a full list of changes see the
|
||
[version history](https://www.glfw.org/changelog.html).
|
||
|
||
|
||
@subsection 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).
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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).
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection news_30_egl (Experimental) EGL support
|
||
|
||
GLFW now has an experimental EGL context creation back end that can be selected
|
||
through CMake options.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection news_30_iconifyfun Window iconification callback
|
||
|
||
Each window now has a callback for iconification and restoration events,
|
||
which is set with @ref glfwSetWindowIconifyCallback.
|
||
|
||
|
||
@subsection news_30_wndposfun Window position callback
|
||
|
||
Each window now has a callback for position events, which is set with @ref
|
||
glfwSetWindowPosCallback.
|
||
|
||
|
||
@subsection news_30_wndpos Window position query
|
||
|
||
The position of a window can now be retrieved using @ref glfwGetWindowPos.
|
||
|
||
|
||
@subsection news_30_focusfun Window focus callback
|
||
|
||
Each windows now has a callback for focus events, which is set with @ref
|
||
glfwSetWindowFocusCallback.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection 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.
|
||
|
||
|
||
@subsection news_30_jsname Joystick names
|
||
|
||
The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
|
||
|
||
|
||
@subsection news_30_doxygen Doxygen documentation
|
||
|
||
You are reading it.
|
||
|
||
*/
|