glfw/README.md

265 lines
8.2 KiB
Markdown
Raw Normal View History

2013-06-13 15:07:28 +02:00
# GLFW
2016-02-04 14:58:44 +01:00
[![Build status](https://travis-ci.org/glfw/glfw.svg?branch=master)](https://travis-ci.org/glfw/glfw)
[![Build status](https://ci.appveyor.com/api/projects/status/0kf0ct9831i5l6sp/branch/master?svg=true)](https://ci.appveyor.com/project/elmindreda/glfw)
2016-06-23 16:09:55 +02:00
[![Coverity Scan](https://scan.coverity.com/projects/4884/badge.svg)](https://scan.coverity.com/projects/glfw-glfw)
2015-04-14 23:47:17 +02:00
## Introduction
2016-08-09 01:34:56 +02:00
GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan
application development. It provides a simple, platform-independent API for
creating windows, contexts and surfaces, reading input, handling events, etc.
2016-06-05 19:35:39 +02:00
The current stable release is version 3.2. See the
[downloads](http://www.glfw.org/download.html) page for details and files, or
fetch the `latest` branch, which always points to the latest stable release.
2016-08-09 01:34:56 +02:00
Each release starting with 3.0 also has a corresponding [annotated
tag](https://github.com/glfw/glfw/releases) with source and binary archives.
2016-06-05 19:35:39 +02:00
This is version 3.2.1, which is _not yet described_.
2013-04-19 00:19:22 +02:00
2013-04-07 13:26:06 +02:00
If you are new to GLFW, you may find the
2016-02-27 21:58:09 +01:00
[tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW
2013-06-17 11:58:46 +02:00
3 useful. If you have used GLFW 2 in the past, there is a
2013-07-10 15:51:10 +02:00
[transition guide](http://www.glfw.org/docs/latest/moving.html) for moving to
the GLFW 3 API.
2013-10-27 12:50:33 +01:00
## Compiling GLFW
2013-10-21 22:23:15 +02:00
2016-08-09 01:34:56 +02:00
GLFW itself requires only the headers and libraries for your window system. It
2016-07-14 18:32:30 +02:00
does not need the headers for any context creation API (WGL, GLX, EGL, NSGL) or
rendering API (OpenGL, OpenGL ES, Vulkan) to enable support for them.
2016-07-14 18:29:39 +02:00
GLFW supports compilation on Windows with Visual C++ 2010 and later, MinGW and
MinGW-w64, on OS X with Clang and on Linux and other Unix-like systems with GCC
and Clang. It will likely compile in other environments as well, but this is
not regularly tested.
2016-07-14 18:11:17 +02:00
There are also [pre-compiled Windows
2016-07-14 18:29:39 +02:00
binaries](http://www.glfw.org/download.html) available for all compilers
supported on that platform.
2016-07-14 18:11:17 +02:00
See the [compilation guide](http://www.glfw.org/docs/latest/compile.html) in the
2016-07-14 18:19:46 +02:00
documentation for more information.
2016-07-14 18:02:44 +02:00
2016-07-14 18:11:17 +02:00
## Using GLFW
2016-07-14 18:02:44 +02:00
2016-07-14 18:11:17 +02:00
See the [building application guide](http://www.glfw.org/docs/latest/build.html)
2016-07-14 18:19:46 +02:00
guide in the documentation for more information.
2016-07-14 18:02:44 +02:00
2016-07-14 18:11:17 +02:00
## System requirements
2016-07-14 18:02:44 +02:00
GLFW supports Windows XP and later, OS X 10.7 Lion and later, and Linux and
2016-07-14 18:29:39 +02:00
other Unix-like systems with the X Window System. Experimental implementations
for the Wayland protocol and the Mir display server are available but not yet
officially supported.
2016-07-14 18:02:44 +02:00
See the [compatibility guide](http://www.glfw.org/docs/latest/compat.html)
2016-07-14 18:19:46 +02:00
in the documentation for more information.
2016-07-14 18:02:44 +02:00
2014-01-12 05:40:36 +01:00
## Dependencies
2016-08-09 01:34:56 +02:00
GLFW itself depends only on the headers and libraries for your window system.
2016-02-08 16:23:44 +01:00
The examples and test programs depend on a number of tiny libraries. These are
located in the `deps/` directory.
2014-01-12 05:40:36 +01:00
2014-06-18 16:13:49 +02:00
- [getopt\_port](https://github.com/kimgr/getopt_port/) for examples
with command-line options
2014-10-15 03:55:25 +02:00
- [TinyCThread](https://github.com/tinycthread/tinycthread) for threaded
2014-06-18 16:13:49 +02:00
examples
- An OpenGL 3.2 core loader generated by
[glad](https://github.com/Dav1dde/glad) for examples using modern OpenGL
- [linmath.h](https://github.com/datenwolf/linmath.h) for linear algebra in
examples
- [Vulkan headers](https://www.khronos.org/registry/vulkan/) for Vulkan tests
2014-01-12 05:40:36 +01:00
The Vulkan example additionally requires the Vulkan SDK to be installed, or it
will not be included in the build.
2016-02-08 16:23:44 +01:00
The documentation is generated with [Doxygen](http://doxygen.org/). If CMake
2016-08-09 01:34:56 +02:00
does not find Doxygen, the documentation will not be generated when you build.
2016-02-08 16:23:44 +01:00
2014-01-12 05:40:36 +01:00
2016-07-14 18:32:30 +02:00
## Reporting bugs
Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues).
Please check the [contribution
guide](https://github.com/glfw/glfw/blob/master/.github/CONTRIBUTING.md) for
information on what to include when reporting a bug.
2013-06-13 15:09:10 +02:00
## Changelog
2016-07-20 15:50:07 +02:00
- Added on-demand loading of Vulkan and context creation API libraries
- Added `_GLFW_VULKAN_STATIC` build macro to make the library use the Vulkan
2016-08-08 17:33:20 +02:00
loader linked statically into the application (#820)
2016-07-12 16:14:39 +02:00
- Bugfix: Single compilation unit builds failed due to naming conflicts (#783)
- Bugfix: The range checks for `glfwSetCursorPos` used the wrong minimum (#773)
- Bugfix: Defining `GLFW_INCLUDE_VULKAN` when compiling the library did not
fail with the expected error message (#823)
2016-08-08 17:33:20 +02:00
- Bugfix: Inherited value of `CMAKE_MODULE_PATH` was clobbered (#822)
2016-07-14 18:02:44 +02:00
- [Win32] Bugfix: `glfwSetClipboardString` created an unnecessary intermediate
2016-07-12 16:14:39 +02:00
copy of the string
2016-07-12 16:14:39 +02:00
- [Win32] Bugfix: Examples failed to build on Visual C++ 2010 due to C99 in
`linmath.h` (#785)
- [Win32] Bugfix: The first shown window ignored the `GLFW_MAXIMIZED` hint
when the process was provided a `STARTUPINFO` (#780)
- [Cocoa] Bugfix: Event processing would segfault on some machines due to
a previous distributed notification listener not being fully
removed (#817,#826)
- [X11] Bugfix: Window size limits were ignored if the minimum or maximum size
was set to `GLFW_DONT_CARE` (#805)
- [WGL] Added reporting of errors from `WGL_ARB_create_context` extension
2016-07-12 16:14:39 +02:00
- [GLX] Bugfix: Dynamically loaded entry points were not verified
2016-07-20 15:50:07 +02:00
- [EGL] Added `lib` prefix matching between EGL and OpenGL ES library binaries
2016-07-12 16:14:39 +02:00
- [EGL] Bugfix: Dynamically loaded entry points were not verified
2016-06-05 19:36:03 +02:00
## Contact
2016-08-02 15:58:58 +02:00
On [glfw.org](http://www.glfw.org/) you can find the latest version of GLFW, as
well as news, documentation and other information about the project.
If you have questions related to the use of GLFW, we have a
2016-04-20 12:40:56 +02:00
[support forum](http://discourse.glfw.org/), and the IRC
channel `#glfw` on [Freenode](http://freenode.net/).
If you have a bug to report, a patch to submit or a feature you'd like to
2013-06-24 14:28:42 +02:00
request, please file it in the
[issue tracker](https://github.com/glfw/glfw/issues) on GitHub.
Finally, if you're interested in helping out with the development of GLFW or
2015-05-14 17:14:30 +02:00
porting it to your favorite platform, join us on GitHub or IRC.
## Acknowledgements
GLFW exists because people around the world donated their time and lent their
skills.
2013-06-09 12:49:13 +02:00
- Bobyshev Alexander
- artblanc
- arturo
2013-06-09 12:49:13 +02:00
- Matt Arsenault
- Keith Bauer
- John Bartholomew
2013-06-16 12:35:46 +02:00
- Niklas Behrens
2013-06-09 12:49:13 +02:00
- Niklas Bergström
2013-08-16 17:48:11 +02:00
- Doug Binks
2013-06-09 12:49:13 +02:00
- blanco
- Martin Capitanio
2015-04-09 16:09:39 +02:00
- Chi-kwan Chan
2013-06-09 12:49:13 +02:00
- Lambert Clara
2013-10-06 11:37:16 +02:00
- Andrew Corrigan
2013-06-09 12:49:13 +02:00
- Noel Cower
- Jarrod Davis
- Olivier Delannoy
- Paul R. Deppe
2014-02-14 00:45:27 +01:00
- Michael Dickens
2015-10-28 22:57:57 +01:00
- Роман Донченко
- Mario Dorn
2013-06-09 12:49:13 +02:00
- Jonathan Dummer
- Ralph Eastwood
- Siavash Eliasi
2013-12-10 13:45:21 +01:00
- Michael Fogleman
2013-12-11 14:41:51 +01:00
- Gerald Franz
2013-06-09 12:49:13 +02:00
- GeO4d
- Marcus Geelnard
- Eloi Marín Gratacós
2013-06-09 12:49:13 +02:00
- Stefan Gustavson
- Sylvain Hellegouarch
- Matthew Henry
2013-06-09 12:49:13 +02:00
- heromyth
- Lucas Hinderberger
2013-06-16 18:32:16 +02:00
- Paul Holden
- Warren Hu
2016-03-29 14:00:44 +02:00
- IntellectualKitty
- Aaron Jacobs
2013-06-09 12:49:13 +02:00
- Toni Jovanoski
- Arseny Kapoulkine
2013-06-09 12:49:13 +02:00
- Osman Keskin
- Cameron King
- Peter Knut
- Christoph Kubisch
2015-04-14 21:15:50 +02:00
- Eric Larson
2013-06-09 12:49:13 +02:00
- Robin Leffmann
- Glenn Lewis
- Shane Liesegang
- Eyal Lotem
2013-06-09 12:49:13 +02:00
- Дмитри Малышев
- Martins Mozeiko
- Tristam MacDonald
- Hans Mackowiak
- Zbigniew Mandziejewicz
- Kyle McDonald
2013-06-09 12:49:13 +02:00
- David Medlock
- Bryce Mehring
2013-06-09 12:49:13 +02:00
- Jonathan Mercier
- Marcel Metz
- Jonathan Miller
2013-06-09 12:49:13 +02:00
- Kenneth Miller
2013-07-01 13:18:05 +02:00
- Bruce Mitchener
2013-10-28 13:22:34 +01:00
- Jack Moffitt
2013-06-09 12:49:13 +02:00
- Jeff Molofee
- Jon Morton
2013-09-13 14:41:13 +02:00
- Pierre Moulon
2013-06-09 12:49:13 +02:00
- Julian Møller
2013-11-13 12:59:49 +01:00
- Kamil Nowakowski
2013-06-17 11:58:46 +02:00
- Ozzy
- Andri Pálsson
2013-06-09 12:49:13 +02:00
- Peoro
- Braden Pellett
- Arturo J. Pérez
- Orson Peters
2015-04-19 13:27:27 +02:00
- Emmanuel Gil Peyrot
- Cyril Pichard
2013-10-09 23:58:43 +02:00
- Pieroman
- Philip Rideout
2013-06-09 12:49:13 +02:00
- Jorge Rodriguez
- Ed Ropple
- Aleksey Rybalkin
2013-06-09 12:49:13 +02:00
- Riku Salminen
- Brandon Schaefer
2013-06-09 12:49:13 +02:00
- Sebastian Schuberth
- Matt Sealey
- SephiRok
- Steve Sexton
- Systemcluster
- Yoshiki Shibukawa
2013-06-09 12:49:13 +02:00
- Dmitri Shuralyov
- Daniel Skorupski
- Bradley Smith
- Patrick Snape
2013-06-09 12:49:13 +02:00
- Julian Squires
- Johannes Stein
- Justin Stoecker
2015-04-09 14:03:26 +02:00
- Elviss Strazdins
2013-06-09 12:49:13 +02:00
- Nathan Sweet
- TTK-Bandit
- Sergey Tikhomirov
2016-07-14 12:49:46 +02:00
- Arthur Tombs
- Ioannis Tsakpinis
2013-06-09 12:49:13 +02:00
- Samuli Tuomola
- urraka
2013-06-09 12:49:13 +02:00
- Jari Vetoniemi
2014-07-01 10:49:50 +02:00
- Ricardo Vieira
- Nicholas Vitovitch
2013-06-09 12:49:13 +02:00
- Simon Voordouw
- Torsten Walluhn
- Patrick Walton
- Xo Wang
2013-06-09 12:49:13 +02:00
- Jay Weisskopf
- Frank Wille
- yuriks
- Santi Zupancic
2014-03-18 21:43:24 +01:00
- Jonas Ådahl
2013-06-09 12:49:13 +02:00
- Lasse Öörni
- All the unmentioned and anonymous contributors in the GLFW community, for bug
reports, patches, feedback, testing and encouragement