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.

274 lines
8.7 KiB

5 years ago
  1. # GLFW
  2. [![Build status](https://travis-ci.org/glfw/glfw.svg?branch=master)](https://travis-ci.org/glfw/glfw)
  3. [![Build status](https://ci.appveyor.com/api/projects/status/0kf0ct9831i5l6sp/branch/master?svg=true)](https://ci.appveyor.com/project/elmindreda/glfw)
  4. [![Coverity Scan](https://scan.coverity.com/projects/4884/badge.svg)](https://scan.coverity.com/projects/glfw-glfw)
  5. ## Introduction
  6. GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan
  7. application development. It provides a simple, platform-independent API for
  8. creating windows, contexts and surfaces, reading input, handling events, etc.
  9. GLFW is licensed under the [zlib/libpng
  10. license](https://opensource.org/licenses/Zlib).
  11. This is version 3.2.1, which adds support for statically linking the Vulkan
  12. loader and fixes for a number of bugs that together affect all supported
  13. platforms.
  14. See the [downloads](http://www.glfw.org/download.html) page for details and
  15. files, or fetch the `latest` branch, which always points to the latest stable
  16. release. Each release starting with 3.0 also has a corresponding [annotated
  17. tag](https://github.com/glfw/glfw/releases) with source and binary archives.
  18. If you are new to GLFW, you may find the
  19. [tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW
  20. 3 useful. If you have used GLFW 2 in the past, there is a
  21. [transition guide](http://www.glfw.org/docs/latest/moving.html) for moving to
  22. the GLFW 3 API.
  23. ## Compiling GLFW
  24. GLFW itself requires only the headers and libraries for your window system. It
  25. does not need the headers for any context creation API (WGL, GLX, EGL, NSGL) or
  26. rendering API (OpenGL, OpenGL ES, Vulkan) to enable support for them.
  27. GLFW supports compilation on Windows with Visual C++ 2010 and later, MinGW and
  28. MinGW-w64, on OS X with Clang and on Linux and other Unix-like systems with GCC
  29. and Clang. It will likely compile in other environments as well, but this is
  30. not regularly tested.
  31. There are also [pre-compiled Windows
  32. binaries](http://www.glfw.org/download.html) available for all compilers
  33. supported on that platform.
  34. See the [compilation guide](http://www.glfw.org/docs/latest/compile.html) in the
  35. documentation for more information.
  36. ## Using GLFW
  37. See the [building application guide](http://www.glfw.org/docs/latest/build.html)
  38. guide in the documentation for more information.
  39. ## System requirements
  40. GLFW supports Windows XP and later, OS X 10.7 Lion and later, and Linux and
  41. other Unix-like systems with the X Window System. Experimental implementations
  42. for the Wayland protocol and the Mir display server are available but not yet
  43. officially supported.
  44. See the [compatibility guide](http://www.glfw.org/docs/latest/compat.html)
  45. in the documentation for more information.
  46. ## Dependencies
  47. GLFW itself depends only on the headers and libraries for your window system.
  48. The examples and test programs depend on a number of tiny libraries. These are
  49. located in the `deps/` directory.
  50. - [getopt\_port](https://github.com/kimgr/getopt_port/) for examples
  51. with command-line options
  52. - [TinyCThread](https://github.com/tinycthread/tinycthread) for threaded
  53. examples
  54. - An OpenGL 3.2 core loader generated by
  55. [glad](https://github.com/Dav1dde/glad) for examples using modern OpenGL
  56. - [linmath.h](https://github.com/datenwolf/linmath.h) for linear algebra in
  57. examples
  58. - [Vulkan headers](https://www.khronos.org/registry/vulkan/) for Vulkan tests
  59. The Vulkan example additionally requires the Vulkan SDK to be installed, or it
  60. will not be included in the build.
  61. The documentation is generated with [Doxygen](http://doxygen.org/). If CMake
  62. does not find Doxygen, the documentation will not be generated when you build.
  63. ## Reporting bugs
  64. Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues).
  65. Please check the [contribution
  66. guide](https://github.com/glfw/glfw/blob/master/.github/CONTRIBUTING.md) for
  67. information on what to include when reporting a bug.
  68. ## Changelog
  69. - Added on-demand loading of Vulkan and context creation API libraries
  70. - Added `_GLFW_VULKAN_STATIC` build macro to make the library use the Vulkan
  71. loader linked statically into the application (#820)
  72. - Bugfix: Single compilation unit builds failed due to naming conflicts (#783)
  73. - Bugfix: The range checks for `glfwSetCursorPos` used the wrong minimum (#773)
  74. - Bugfix: Defining `GLFW_INCLUDE_VULKAN` when compiling the library did not
  75. fail with the expected error message (#823)
  76. - Bugfix: Inherited value of `CMAKE_MODULE_PATH` was clobbered (#822)
  77. - [Win32] Bugfix: `glfwSetClipboardString` created an unnecessary intermediate
  78. copy of the string
  79. - [Win32] Bugfix: Examples failed to build on Visual C++ 2010 due to C99 in
  80. `linmath.h` (#785)
  81. - [Win32] Bugfix: The first shown window ignored the `GLFW_MAXIMIZED` hint
  82. when the process was provided a `STARTUPINFO` (#780)
  83. - [Cocoa] Bugfix: Event processing would segfault on some machines due to
  84. a previous distributed notification listener not being fully
  85. removed (#817,#826)
  86. - [Cocoa] Bugfix: Some include statements were duplicated (#838)
  87. - [X11] Bugfix: Window size limits were ignored if the minimum or maximum size
  88. was set to `GLFW_DONT_CARE` (#805)
  89. - [X11] Bugfix: Input focus was set before window was visible, causing
  90. `BadMatch` on some non-reparenting WMs (#789,#798)
  91. - [X11] Bugfix: `glfwGetWindowPos` and `glfwSetWindowPos` operated on the
  92. window frame instead of the client area (#800)
  93. - [WGL] Added reporting of errors from `WGL_ARB_create_context` extension
  94. - [GLX] Bugfix: Dynamically loaded entry points were not verified
  95. - [EGL] Added `lib` prefix matching between EGL and OpenGL ES library binaries
  96. - [EGL] Bugfix: Dynamically loaded entry points were not verified
  97. ## Contact
  98. On [glfw.org](http://www.glfw.org/) you can find the latest version of GLFW, as
  99. well as news, documentation and other information about the project.
  100. If you have questions related to the use of GLFW, we have a
  101. [forum](http://discourse.glfw.org/), and the `#glfw` IRC channel on
  102. [Freenode](http://freenode.net/).
  103. If you have a bug to report, a patch to submit or a feature you'd like to
  104. request, please file it in the
  105. [issue tracker](https://github.com/glfw/glfw/issues) on GitHub.
  106. Finally, if you're interested in helping out with the development of GLFW or
  107. porting it to your favorite platform, join us on the forum, GitHub or IRC.
  108. ## Acknowledgements
  109. GLFW exists because people around the world donated their time and lent their
  110. skills.
  111. - Bobyshev Alexander
  112. - artblanc
  113. - arturo
  114. - Matt Arsenault
  115. - Keith Bauer
  116. - John Bartholomew
  117. - Niklas Behrens
  118. - Niklas Bergström
  119. - Doug Binks
  120. - blanco
  121. - Martin Capitanio
  122. - Chi-kwan Chan
  123. - Lambert Clara
  124. - Andrew Corrigan
  125. - Noel Cower
  126. - Jarrod Davis
  127. - Olivier Delannoy
  128. - Paul R. Deppe
  129. - Michael Dickens
  130. - Роман Донченко
  131. - Mario Dorn
  132. - Jonathan Dummer
  133. - Ralph Eastwood
  134. - Siavash Eliasi
  135. - Michael Fogleman
  136. - Gerald Franz
  137. - GeO4d
  138. - Marcus Geelnard
  139. - Eloi Marín Gratacós
  140. - Stefan Gustavson
  141. - Sylvain Hellegouarch
  142. - Matthew Henry
  143. - heromyth
  144. - Lucas Hinderberger
  145. - Paul Holden
  146. - Warren Hu
  147. - IntellectualKitty
  148. - Aaron Jacobs
  149. - Erik S. V. Jansson
  150. - Toni Jovanoski
  151. - Arseny Kapoulkine
  152. - Osman Keskin
  153. - Cameron King
  154. - Peter Knut
  155. - Christoph Kubisch
  156. - Eric Larson
  157. - Robin Leffmann
  158. - Glenn Lewis
  159. - Shane Liesegang
  160. - Eyal Lotem
  161. - Дмитри Малышев
  162. - Martins Mozeiko
  163. - Tristam MacDonald
  164. - Hans Mackowiak
  165. - Zbigniew Mandziejewicz
  166. - Kyle McDonald
  167. - David Medlock
  168. - Bryce Mehring
  169. - Jonathan Mercier
  170. - Marcel Metz
  171. - Jonathan Miller
  172. - Kenneth Miller
  173. - Bruce Mitchener
  174. - Jack Moffitt
  175. - Jeff Molofee
  176. - Jon Morton
  177. - Pierre Moulon
  178. - Julian Møller
  179. - Kamil Nowakowski
  180. - Ozzy
  181. - Andri Pálsson
  182. - Peoro
  183. - Braden Pellett
  184. - Arturo J. Pérez
  185. - Orson Peters
  186. - Emmanuel Gil Peyrot
  187. - Cyril Pichard
  188. - Pieroman
  189. - Philip Rideout
  190. - Jorge Rodriguez
  191. - Ed Ropple
  192. - Aleksey Rybalkin
  193. - Riku Salminen
  194. - Brandon Schaefer
  195. - Sebastian Schuberth
  196. - Matt Sealey
  197. - SephiRok
  198. - Steve Sexton
  199. - Systemcluster
  200. - Yoshiki Shibukawa
  201. - Dmitri Shuralyov
  202. - Daniel Skorupski
  203. - Bradley Smith
  204. - Patrick Snape
  205. - Julian Squires
  206. - Johannes Stein
  207. - Justin Stoecker
  208. - Elviss Strazdins
  209. - Nathan Sweet
  210. - TTK-Bandit
  211. - Sergey Tikhomirov
  212. - Arthur Tombs
  213. - Ioannis Tsakpinis
  214. - Samuli Tuomola
  215. - urraka
  216. - Jari Vetoniemi
  217. - Ricardo Vieira
  218. - Nicholas Vitovitch
  219. - Simon Voordouw
  220. - Torsten Walluhn
  221. - Patrick Walton
  222. - Xo Wang
  223. - Jay Weisskopf
  224. - Frank Wille
  225. - yuriks
  226. - Santi Zupancic
  227. - Jonas Ådahl
  228. - Lasse Öörni
  229. - All the unmentioned and anonymous contributors in the GLFW community, for bug
  230. reports, patches, feedback, testing and encouragement