Platformer in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

376 lines
12 KiB

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