glfw/README.md

292 lines
10 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)
2015-04-14 23:47:17 +02:00
## Introduction
GLFW is a free, 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-05-29 17:37:32 +02:00
Version 3.2 adds support for Vulkan surface creation, window mode switching,
window maximization, window input focus control, window size and aspect ratio
limits, human-readable key names, window icons, joystick connection events,
XInput and DirectInput joystick input, event waiting with timeout, 64-bit
integer raw timer, context-less window creation, error-less contexts via
`GL_KHR_no_error` (where available), run-time context creation API selection,
Windows 8.1 per-monitor DPI and the CMake config-file package system, adds
simpler build-time configuration, improved documentation and fixes for a large
number of bugs that together affect all supported platforms.
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
2013-10-27 12:50:33 +01:00
See the [Compiling GLFW](http://www.glfw.org/docs/latest/compile.html) guide in
the GLFW documentation.
## Using GLFW
2013-10-27 12:50:33 +01:00
See the
[Building programs that use GLFW](http://www.glfw.org/docs/latest/build.html)
guide in the GLFW documentation.
## Reporting bugs
Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues).
Please always include the name and version of the OS where the bug occurs and
the version of GLFW used. If you have cloned it, include the commit ID used.
If it's a build issue, please also include the build log and the name and
version of your development environment.
If it's a context creation issue, please also include the make and model of your
graphics card and the version of your driver.
This will help both us and other people experiencing the same bug.
2014-01-12 05:40:36 +01:00
## Dependencies
2015-10-24 21:46:19 +02:00
GLFW itself needs only the headers and libraries for your window system. It
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.
2015-10-24 21:46:19 +02:00
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
does not find Doxygen, the documentation will not be generated.
2014-01-12 05:40:36 +01:00
2013-06-13 15:09:10 +02:00
## Changelog
- Added `glfwVulkanSupported`, `glfwGetRequiredInstanceExtensions`,
`glfwGetInstanceProcAddress`, `glfwGetPhysicalDevicePresentationSupport` and
`glfwCreateWindowSurface` for platform independent Vulkan support
- Added `glfwSetWindowMonitor` for switching between windowed and full screen
modes and updating the monitor and desired video mode of full screen windows
2016-02-22 10:50:13 +01:00
- Added `glfwMaximizeWindow` and `GLFW_MAXIMIZED` for window maximization
- Added `glfwFocusWindow` for giving windows input focus
- Added `glfwSetWindowSizeLimits` and `glfwSetWindowAspectRatio` for setting
absolute and relative window size limits
2015-07-02 14:24:50 +02:00
- Added `glfwGetKeyName` for querying the layout-specific name of printable
keys
- Added `glfwWaitEventsTimeout` for waiting for events for a set amount of time
- Added `glfwSetWindowIcon` for setting the icon of a window
- Added `glfwGetTimerValue` and `glfwGetTimerFrequency` for raw timer access
2015-12-13 17:38:50 +01:00
- Added `glfwSetJoystickCallback` and `GLFWjoystickfun` for joystick connection
and disconnection events
- Added `GLFW_NO_API` for creating window without contexts
- Added `GLFW_INCLUDE_VULKAN` for including the Vulkan header
- Added `GLFW_CONTEXT_CREATION_API`, `GLFW_NATIVE_CONTEXT_API` and
`GLFW_EGL_CONTEXT_API` for run-time context creation API selection
2016-05-29 17:37:32 +02:00
- Added `GLFW_CONTEXT_NO_ERROR` context hint for `GL_KHR_no_error` support
2015-10-18 01:20:31 +02:00
- Added `GLFW_TRUE` and `GLFW_FALSE` as client API independent boolean values
2015-12-12 20:35:26 +01:00
- Added icons to examples on Windows and OS X
2015-11-10 14:57:30 +01:00
- Relaxed rules for native access header macros
2015-10-18 01:20:31 +02:00
- Removed dependency on external OpenGL or OpenGL ES headers
- Removed `_GLFW_USE_OPENGL`, `_GLFW_USE_GLESV1`, `_GLFW_USE_GLESV2`,
`_GLFW_WGL`, `_GLFW_NSGL`, `_GLFW_GLX` and `_GLFW_EGL` configuration macros
- [Win32] Added support for Windows 8.1 per-monitor DPI
- [Win32] Replaced winmm with XInput and DirectInput for joystick input
- [Win32] Bugfix: Window creation would segfault if video mode setting required
the system to be restarted
- [Win32] Bugfix: MinGW import library lacked the `lib` prefix
2015-12-12 20:35:26 +01:00
- [Win32] Bugfix: Monitor connection and disconnection events were not reported
when no windows existed
- [Win32] Bugfix: Activating or deactivating displays in software did not
trigger monitor callback
- [Win32] Bugfix: No monitors were listed on headless and VMware guest systems
- [Win32] Bugfix: Pressing Ctrl+Pause would report `GLFW_KEY_UNKNOWN`
- [Win32] Bugfix: Window size events would be reported in wrong order when
restoring a full screen window
2016-03-31 10:54:54 +02:00
- [Cocoa] Made joystick polling more efficient
- [Cocoa] Removed support for OS X 10.6
- [Cocoa] Bugfix: Full screen windows on secondary monitors were mispositioned
- [Cocoa] Bugfix: Connecting a joystick that reports no name would segfault
- [Cocoa] Bugfix: Modifier flags cache was not updated when window became key
- [Cocoa] Bugfix: Dead key character composition did not work
- [Cocoa] Bugfix: The CGL context was not released until the autorelease pool
was drained by another function
- [X11] Bugfix: Monitor connection and disconnection events were not reported
2015-10-27 23:01:02 +01:00
- [X11] Bugfix: Decoding of UTF-8 text from XIM could continue past the end
2016-01-31 18:00:22 +01:00
- [X11] Bugfix: An XKB structure was leaked during `glfwInit`
- [X11] Bugfix: XInput2 `XI_Motion` events interfered with the Steam overlay
2015-10-28 22:57:57 +01:00
- [POSIX] Bugfix: An unrelated TLS key could be deleted by `glfwTerminate`
2016-03-31 10:54:54 +02:00
- [Linux] Made joystick polling more efficient
2015-12-12 20:35:26 +01:00
- [WGL] Changed extension loading to only be performed once
2015-10-18 01:20:31 +02:00
- [WGL] Removed dependency on external WGL headers
2016-03-31 12:40:41 +02:00
- [GLX] Added `glfwGetGLXWindow` to query the `GLXWindow` of a window
2016-03-07 15:00:31 +01:00
- [GLX] Replaced legacy drawable with `GLXWindow`
2015-10-18 01:20:31 +02:00
- [GLX] Removed dependency on external GLX headers
- [GLX] Bugfix: NetBSD does not provide `libGL.so.1`
2015-12-12 20:35:26 +01:00
- [EGL] Added `_GLFW_USE_EGLPLATFORM_H` configuration macro for controlling
whether to use an existing `EGL/eglplatform.h` header
- [EGL] Added and documented test for if the context is current on the calling
thread during buffer swap
2015-10-18 01:20:31 +02:00
- [EGL] Removed dependency on external EGL headers
2015-08-23 19:30:04 +02:00
## Contact
The official website for GLFW is [glfw.org](http://www.glfw.org/). There 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
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
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
- 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
- A. 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