<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GLFW: New features</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="extra.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
	<div class="glfwheader">
		<a href="http://www.glfw.org/" id="glfwhome">GLFW</a>
		<ul class="glfwnavbar">
			<li><a href="http://www.glfw.org/documentation.html">Documentation</a></li>
			<li><a href="http://www.glfw.org/download.html">Download</a></li>
			<li><a href="http://www.glfw.org/media.html">Media</a></li>
			<li><a href="http://www.glfw.org/community.html">Community</a></li>
		</ul>
	</div>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">New features </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="news_32"></a>
New features in 3.2</h1>
<h2><a class="anchor" id="news_32_vulkan"></a>
Support for Vulkan</h2>
<p>GLFW now supports basic integration with Vulkan with <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>, <a class="el" href="group__vulkan.html#ga1abcbe61033958f22f63ef82008874b1">glfwGetRequiredInstanceExtensions</a>, <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>, <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> and <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>. Vulkan header inclusion can be selected with <a class="el" href="build_guide.html#build_macros">GLFW_INCLUDE_VULKAN</a>.</p>
<h2><a class="anchor" id="news_32_setwindowmonitor"></a>
Window mode switching</h2>
<p>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 <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>.</p>
<h2><a class="anchor" id="news_32_maximize"></a>
Window maxmimization support</h2>
<p>GLFW now supports window maximization with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> and the <a class="el" href="window_guide.html#window_attribs_wnd">GLFW_MAXIMIZED</a> window hint and attribute.</p>
<h2><a class="anchor" id="news_32_focus"></a>
Window input focus control</h2>
<p>GLFW now supports giving windows input focus with <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>.</p>
<h2><a class="anchor" id="news_32_sizelimits"></a>
Window size limit support</h2>
<p>GLFW now supports setting both absolute and relative window size limits with <a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> and <a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>.</p>
<h2><a class="anchor" id="news_32_keyname"></a>
Localized key names</h2>
<p>GLFW now supports querying the localized name of printable keys with <a class="el" href="group__input.html#ga237a182e5ec0b21ce64543f3b5e7e2be">glfwGetKeyName</a>, either by key token or by scancode.</p>
<h2><a class="anchor" id="news_32_waittimeout"></a>
Wait for events with timeout</h2>
<p>GLFW now supports waiting for events for a set amount of time with <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>.</p>
<h2><a class="anchor" id="news_32_icon"></a>
Window icon support</h2>
<p>GLFW now supports setting the icon of windows with <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</p>
<h2><a class="anchor" id="news_32_timer"></a>
Raw timer access</h2>
<p>GLFW now supports raw timer values with <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> and <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
<h2><a class="anchor" id="news_32_joystick"></a>
Joystick connection callback</h2>
<p>GLFW now supports notifying when a joystick has been connected or disconnected with <a class="el" href="group__input.html#gab1dc8379f1b82bb660a6b9c9fa06ca07">glfwSetJoystickCallback</a>.</p>
<h2><a class="anchor" id="news_32_noapi"></a>
Context-less windows</h2>
<p>GLFW now supports creating windows without a OpenGL or OpenGL ES context with <a class="el" href="window_guide.html#window_hints_ctx">GLFW_NO_API</a>.</p>
<h2><a class="anchor" id="news_32_contextapi"></a>
Run-time context creation API selection</h2>
<p>GLFW now supports selecting the context creation API at run-time with the <a class="el" href="window_guide.html#window_hints_ctx">GLFW_CONTEXT_CREATION_API</a> window hint value.</p>
<h2><a class="anchor" id="news_32_noerror"></a>
Error-free context creation</h2>
<p>GLFW now supports creating OpenGL and OpenGL ES contexts that do not emit errors with the <a class="el" href="window_guide.html#window_hints_ctx">GLFW_CONTEXT_NO_ERROR</a> window hint, provided the machine supports the <code>GL_KHR_no_error</code> extension.</p>
<h2><a class="anchor" id="news_32_cmake"></a>
CMake config-file package support</h2>
<p>GLFW now supports being used as a <a class="el" href="build_guide.html#build_link_cmake_package">config-file package</a> from other projects for easy linking with the library and its dependencies.</p>
<h1><a class="anchor" id="news_31"></a>
New features in 3.1</h1>
<p>These are the release highlights. For a full list of changes see the <a href="http://www.glfw.org/changelog.html">version history</a>.</p>
<h2><a class="anchor" id="news_31_cursor"></a>
Custom mouse cursor images</h2>
<p>GLFW now supports creating and setting both custom cursor images and standard cursor shapes. They are created with <a class="el" href="group__input.html#gafca356935e10135016aa49ffa464c355">glfwCreateCursor</a> or <a class="el" href="group__input.html#gaa65f416d03ebbbb5b8db71a489fcb894">glfwCreateStandardCursor</a>, set with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> and destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
<h2><a class="anchor" id="news_31_drop"></a>
Path drop event</h2>
<p>GLFW now provides a callback for receiving the paths of files and directories dropped onto GLFW windows. The callback is set with <a class="el" href="group__input.html#ga41291bf15dd3ff564b3143aa6dc74a4b">glfwSetDropCallback</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a></dd></dl>
<h2><a class="anchor" id="news_31_emptyevent"></a>
Main thread wake-up</h2>
<p>GLFW now provides the <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> function for posting an empty event from another thread to the main thread event queue, causing <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> to return.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a></dd></dl>
<h2><a class="anchor" id="news_31_framesize"></a>
Window frame size query</h2>
<p>GLFW now supports querying the size, on each side, of the frame around the client area of a window, with <a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
<h2><a class="anchor" id="news_31_autoiconify"></a>
Simultaneous multi-monitor rendering</h2>
<p>GLFW now supports disabling auto-iconification of full screen windows with the <a class="el" href="window_guide.html#window_hints_wnd">GLFW_AUTO_ICONIFY</a> window hint. This is intended for people building multi-monitor installations, where you need windows to stay in full screen despite losing input focus.</p>
<h2><a class="anchor" id="news_31_floating"></a>
Floating windows</h2>
<p>GLFW now supports floating windows, also called topmost or always on top, for easier debugging with the <a class="el" href="window_guide.html#window_hints_wnd">GLFW_FLOATING</a> window hint.</p>
<h2><a class="anchor" id="news_31_focused"></a>
Initially unfocused windows</h2>
<p>GLFW now supports preventing a windowed mode window from gaining input focus on creation, with the <a class="el" href="window_guide.html#window_hints_wnd">GLFW_FOCUSED</a> window hint.</p>
<h2><a class="anchor" id="news_31_direct"></a>
Direct access for window attributes and cursor position</h2>
<p>GLFW now queries the window input focus, visibility and iconification attributes and the cursor position directly instead of returning cached data.</p>
<h2><a class="anchor" id="news_31_charmods"></a>
Character with modifiers callback</h2>
<p>GLFW now provides a callback for character events with modifier key bits. The callback is set with <a class="el" href="group__input.html#ga3f55ef5dc03a374e567f068b13c94afc">glfwSetCharModsCallback</a>. 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.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
<h2><a class="anchor" id="news_31_single"></a>
Single buffered framebuffers</h2>
<p>GLFW now supports the creation of single buffered windows, with the <a class="el" href="window_guide.html#window_hints_fb">GLFW_DOUBLEBUFFER</a> window hint.</p>
<h2><a class="anchor" id="news_31_glext"></a>
Macro for including extension header</h2>
<p>GLFW now includes the extension header appropriate for the chosen OpenGL or OpenGL ES header when <a class="el" href="build_guide.html#build_macros">GLFW_INCLUDE_GLEXT</a> is defined. GLFW does not provide these headers. They must be provided by your development environment or your OpenGL or OpenGL ES SDK.</p>
<h2><a class="anchor" id="news_31_release"></a>
Context release behaviors</h2>
<p>GLFW now supports controlling whether the pipeline is flushed when a context is made non-current, with the <a class="el" href="window_guide.html#window_hints_ctx">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> window hint, provided the machine supports the <code>GL_KHR_context_flush_control</code> extension.</p>
<h2><a class="anchor" id="news_31_wayland"></a>
(Experimental) Wayland support</h2>
<p>GLFW now has an <em>experimental</em> Wayland display protocol backend that can be selected on Linux with a CMake option.</p>
<h2><a class="anchor" id="news_31_mir"></a>
(Experimental) Mir support</h2>
<p>GLFW now has an <em>experimental</em> Mir display server backend that can be selected on Linux with a CMake option.</p>
<h1><a class="anchor" id="news_30"></a>
New features in 3.0</h1>
<p>These are the release highlights. For a full list of changes see the <a href="http://www.glfw.org/changelog.html">version history</a>.</p>
<h2><a class="anchor" id="news_30_cmake"></a>
CMake build system</h2>
<p>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.</p>
<p>For more information on how to use CMake, see the <a href="http://cmake.org/cmake/help/documentation.html">CMake manual</a>.</p>
<h2><a class="anchor" id="news_30_multiwnd"></a>
Multi-window support</h2>
<p>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 <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> function has been added to select which context is current on a given thread.</p>
<h2><a class="anchor" id="news_30_multimon"></a>
Multi-monitor support</h2>
<p>GLFW now explicitly supports multiple monitors. They can be enumerated with <a class="el" href="group__monitor.html#ga3fba51c8bd36491d4712aa5bd074a537">glfwGetMonitors</a>, queried with <a class="el" href="group__monitor.html#ga820b0ce9a5237d645ea7cbb4bd383458">glfwGetVideoModes</a>, <a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>, <a class="el" href="group__monitor.html#ga79a34ee22ff080ca954a9663e4679daf">glfwGetMonitorName</a> and <a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>, and specified at window creation to make the newly created window full screen on that specific monitor.</p>
<h2><a class="anchor" id="news_30_unicode"></a>
Unicode support</h2>
<p>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).</p>
<h2><a class="anchor" id="news_30_clipboard"></a>
Clipboard text I/O</h2>
<p>GLFW now supports reading and writing plain text to and from the system clipboard, with the <a class="el" href="group__input.html#ga5aba1d704d9ab539282b1fbe9f18bb94">glfwGetClipboardString</a> and <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> functions.</p>
<h2><a class="anchor" id="news_30_gamma"></a>
Gamma ramp support</h2>
<p>GLFW now supports setting and reading back the gamma ramp of monitors, with the <a class="el" href="group__monitor.html#gab7c41deb2219bde3e1eb756ddaa9ec80">glfwGetGammaRamp</a> and <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> functions. There is also <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>, which generates a ramp from a gamma value and then sets it.</p>
<h2><a class="anchor" id="news_30_gles"></a>
OpenGL ES support</h2>
<p>GLFW now supports the creation of OpenGL ES contexts, by setting the <code>GLFW_CLIENT_API</code> window hint to <code>GLFW_OPENGL_ES_API</code>, where creation of such contexts are supported. Note that GLFW <em>does not implement</em> 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.</p>
<h2><a class="anchor" id="news_30_egl"></a>
(Experimental) EGL support</h2>
<p>GLFW now has an experimental EGL context creation back end that can be selected through CMake options.</p>
<h2><a class="anchor" id="news_30_hidpi"></a>
High-DPI support</h2>
<p>GLFW now supports high-DPI monitors on both Windows and OS X, giving windows full resolution framebuffers where other UI elements are scaled up. To achieve this, <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> and <a class="el" href="group__window.html#ga3203461a5303bf289f2e05f854b2f7cf">glfwSetFramebufferSizeCallback</a> 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.</p>
<h2><a class="anchor" id="news_30_error"></a>
Error callback</h2>
<p>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.</p>
<h2><a class="anchor" id="news_30_wndptr"></a>
Per-window user pointer</h2>
<p>Each window now has a user-defined pointer, retrieved with <a class="el" href="group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06">glfwGetWindowUserPointer</a> and set with <a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a>, to make it easier to integrate GLFW into C++ code.</p>
<h2><a class="anchor" id="news_30_iconifyfun"></a>
Window iconification callback</h2>
<p>Each window now has a callback for iconification and restoration events, which is set with <a class="el" href="group__window.html#gab1ea7263081c0e073b8d5b91d6ffd367">glfwSetWindowIconifyCallback</a>.</p>
<h2><a class="anchor" id="news_30_wndposfun"></a>
Window position callback</h2>
<p>Each window now has a callback for position events, which is set with <a class="el" href="group__window.html#ga2837d4d240659feb4268fcb6530a6ba1">glfwSetWindowPosCallback</a>.</p>
<h2><a class="anchor" id="news_30_wndpos"></a>
Window position query</h2>
<p>The position of a window can now be retrieved using <a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>.</p>
<h2><a class="anchor" id="news_30_focusfun"></a>
Window focus callback</h2>
<p>Each windows now has a callback for focus events, which is set with <a class="el" href="group__window.html#ga25d1c584edb375d7711c5c3548ba711f">glfwSetWindowFocusCallback</a>.</p>
<h2><a class="anchor" id="news_30_enterleave"></a>
Cursor enter/leave callback</h2>
<p>Each window now has a callback for when the mouse cursor enters or leaves its client area, which is set with <a class="el" href="group__input.html#gaa299c41dd0a3d171d166354e01279e04">glfwSetCursorEnterCallback</a>.</p>
<h2><a class="anchor" id="news_30_wndtitle"></a>
Initial window title</h2>
<p>The title of a window is now specified at creation time, as one of the arguments to <a class="el" href="group__window.html#ga5c336fddf2cbb5b92f65f10fb6043344">glfwCreateWindow</a>.</p>
<h2><a class="anchor" id="news_30_hidden"></a>
Hidden windows</h2>
<p>Windows can now be hidden with <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>, shown using <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> and created initially hidden with the <code>GLFW_VISIBLE</code> window hint. 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.</p>
<h2><a class="anchor" id="news_30_undecorated"></a>
Undecorated windows</h2>
<p>Windowed mode windows can now be created without decorations, e.g. things like a frame, a title bar, with the <code>GLFW_DECORATED</code> window hint. This allows for the creation of things like splash screens.</p>
<h2><a class="anchor" id="news_30_keymods"></a>
Modifier key bit masks</h2>
<p><a class="el" href="group__mods.html">Modifier key bit mask</a> parameters have been added to the <a class="el" href="group__input.html#ga39893a4a7e7c3239c98d29c9e084350c">mouse button</a> and <a class="el" href="group__input.html#ga0192a232a41e4e82948217c8ba94fdfd">key</a> callbacks.</p>
<h2><a class="anchor" id="news_30_scancode"></a>
Platform-specific scancodes</h2>
<p>A scancode parameter has been added to the <a class="el" href="group__input.html#ga0192a232a41e4e82948217c8ba94fdfd">key callback</a>. Keys that don't have a <a class="el" href="group__keys.html">key token</a> still get passed on with the key parameter set to <code>GLFW_KEY_UNKNOWN</code>. These scancodes will vary between machines and are intended to be used for key bindings.</p>
<h2><a class="anchor" id="news_30_jsname"></a>
Joystick names</h2>
<p>The name of a joystick can now be retrieved using <a class="el" href="group__input.html#gac8d7f6107e05cfd106cfba973ab51e19">glfwGetJoystickName</a>.</p>
<h2><a class="anchor" id="news_30_doxygen"></a>
Doxygen documentation</h2>
<p>You are reading it. </p>
</div></div><!-- contents -->
<address class="footer">
<p>
Last update on Thu Aug 18 2016 for GLFW 3.2.1
</p>
</address>
</body>
</html>
