glfw/README.md

246 lines
8.7 KiB
Markdown
Raw Normal View History

2013-06-13 15:07:28 +02:00
# GLFW
## Introduction
2014-02-10 15:33:41 +01:00
GLFW is a free, Open Source, multi-platform library for OpenGL and OpenGL ES
application development. It provides a simple, platform-independent API for
creating windows and contexts, reading input, handling events, etc.
2014-01-01 15:29:57 +01:00
Version 3.1 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
2013-07-10 15:51:10 +02:00
[introductory 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.
2014-04-08 17:45:04 +02:00
Note that a number of source files have been added or renamed in 3.1, which may
require you to update any custom build files you have.
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.
2014-01-12 05:40:36 +01:00
## Dependencies
GLFW bundles a number of dependencies in the `deps/` directory.
2014-06-18 16:13:49 +02:00
- [Khronos extension headers](https://www.opengl.org/registry/) for API
extension symbols used by GLFW
- [getopt\_port](https://github.com/kimgr/getopt_port/) for examples
with command-line options
- [TinyCThread](https://gitorious.org/tinythread/tinycthread/) for threaded
examples
- An OpenGL 3.2 core loader generated by
[glad](https://github.com/Dav1dde/glad) for examples using modern OpenGL
2014-01-12 05:40:36 +01:00
2013-06-13 15:09:10 +02:00
## Changelog
2014-03-20 11:29:48 +01:00
- Added `GLFWcursor` custom system cursor handle
- Added `glfwCreateCursor`, `glfwDestroyCursor` and `glfwSetCursor` for
managing custom system cursors
- Added `GLFWimage` struct for passing 32-bit RGBA images
2014-01-13 23:27:11 +01:00
- Added native monitor handle access to native API
2013-12-22 19:28:46 +01:00
- Added `glfwSetDropCallback` and `GLFWdropfun` for receiving dropped files
2014-03-19 23:01:20 +01:00
- Added `glfwPostEmptyEvent` for allowing secondary threads to cause
2014-03-20 01:01:00 +01:00
`glfwWaitEvents` to return
2014-03-09 17:18:39 +01:00
- Added `empty` test program for verifying posting of empty events
- Added `glfwSetCharModsCallback` for receiving character events with modifiers
2014-03-25 21:30:13 +01:00
- Added `glfwGetWindowFrameSize` for retrieving the size of the frame around
the client area of a window
- Added `GLFW_AUTO_ICONIFY` for controlling whether full screen windows
automatically iconify (and restore the previous video mode) on focus loss
- Added `GLFW_DONT_CARE` for indicating that any value is acceptable
2014-04-24 19:21:10 +02:00
- Added `GLFW_DOUBLEBUFFER` for controlling whether to use double buffering
- Added `GLFW_CONTEXT_RELEASE_BEHAVIOR` and values
`GLFW_ANY_RELEASE_BEHAVIOR`, `GLFW_RELEASE_BEHAVIOR_FLUSH` and
`GLFW_RELEASE_BEHAVIOR_NONE` for `GL_KHR_context_flush_control` support
2014-03-19 23:01:20 +01:00
- Added `GLFW_INCLUDE_ES31` for including the OpenGL ES 3.1 header
2014-05-23 14:01:02 +02:00
- Added `GLFW_FLOATING` for creating always-on-top windowed mode windows
- Added `GLFW_FOCUSED` window hint for controlling initial input focus
2014-03-19 16:00:12 +01:00
- Added *partial and experimental* support for Wayland
- Changed the default of `GLFW_REFRESH_RATE` to `GLFW_DONT_CARE` to maintain
the default behavior
- Changed static library to build as position independent code for easier use
from the Rust language
- Bugfix: The debug context attribute was set from `GL_ARB_debug_output` even
when a debug context had not been requested
- Bugfix: The particles example was not linked against the threading library
- Bugfix: The cursor was not positioned over newly created full screen windows
2014-02-10 13:45:13 +01:00
- [Cocoa] Added `_GLFW_USE_RETINA` to control whether windows will use the full
resolution on Retina displays
2014-01-13 23:27:11 +01:00
- [Cocoa] Bugfix: Using a 1x1 cursor for hidden mode caused some screen
recorders to fail
2014-02-10 14:27:49 +01:00
- [Cocoa] Bugfix: Some Core Foundation objects were leaked during joystick
enumeration and termination
2014-03-10 18:41:52 +01:00
- [Cocoa] Bugfix: One copy of each display name string was leaked
2014-03-25 19:37:25 +01:00
- [Cocoa] Bugfix: Monitor enumeration caused a segfault if no `NSScreen` was
found for a given `CGDisplay`
2014-06-17 11:29:34 +02:00
- [Cocoa] Bugfix: Modifier key events were lost if the corresponding modifier
bit field was unchanged
- [Cocoa] Bugfix: Joystick enumeration took hundreds of ms on some systems
- [Cocoa] Bugfix: The cursor was hidden when the user resized a GLFW window
- [Win32] Enabled generation of pkg-config file for MinGW
- [Win32] Removed option to require explicitly linking against `winmm.dll`
2014-01-29 15:14:49 +01:00
- [Win32] Bugfix: Failure to load winmm or its functions was not reported to
the error callback
2014-03-21 12:59:29 +01:00
- [Win32] Bugfix: Some keys were reported based on the current layout instead
of their physical location
- [Win32] Bugfix: Maximized hidden windows were restored by `glfwShowWindow`
- [Win32] Bugfix: Context re-creation was not triggered by sRGB hint
- [Win32] Bugfix: Full screen windows were incorrectly sized and placed on some
systems
- [Win32] Bugfix: Gamma ramp functions acted on entire desktop instead of the
specified monitor
- [Win32] Bugfix: The wrong incorrect physical size was returned for
non-primary monitors
- [X11] Added run-time support for systems lacking the XKB extension
- [X11] Made GLX 1.3 the minimum supported version
- [X11] Replaced `XRRGetScreenResources` with `XRRGetScreenResourcesCurrent`
for monitor property retrieval
- [X11] Bugfix: The case of finding no usable CRTCs was not detected
2014-01-22 17:24:00 +01:00
- [X11] Bugfix: Detection of broken Nvidia RandR gamma support did not verify
that at least one CRTC was present
- [X11] Bugfix: A stale `_NET_SUPPORTING_WM_CHECK` root window property would
cause an uncaught `BadWindow` error
2014-06-24 13:24:54 +02:00
- [X11] Bugfix: No check was made for the presence of GLX 1.3 when
`GLX_SGIX_fbconfig` was unavailable
- [X11] Bugfix: The message type of ICCCM protocol events was not checked
2014-06-24 13:24:54 +02:00
- [X11] Bugfix: `glfwDestroyWindow` did not flush the output buffer
- [X11] Bugfix: Window frame interactions were reported as focus events
- [X11] Bugfix: Workaround for legacy Compiz caused flickering during resize
2014-05-16 11:25:34 +02:00
- [X11] Bugfix: The name pointer of joysticks were not cleared on disconnection
- [X11] Bugfix: Video mode dimensions were not rotated to match the CRTC
- [X11] Bugfix: Unicode character input ignored dead keys
## 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
[support forum](https://sourceforge.net/p/glfw/discussion/247562/), 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
2013-06-24 14:28:42 +02:00
porting it to your favorite platform, we have an occasionally active
[developer's mailing list](https://lists.stacken.kth.se/mailman/listinfo/glfw-dev),
or you could join us on `#glfw`.
## 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
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
2013-06-09 12:49:13 +02:00
- Jonathan Dummer
- Ralph Eastwood
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
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
- Robin Leffmann
- Glenn Lewis
- Shane Liesegang
- Дмитри Малышев
- Martins Mozeiko
- Tristam MacDonald
- Hans Mackowiak
- Kyle McDonald
2013-06-09 12:49:13 +02:00
- David Medlock
- Jonathan Mercier
- Marcel Metz
- 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
2013-10-09 23:58:43 +02:00
- Pieroman
2013-06-09 12:49:13 +02:00
- Jorge Rodriguez
- Ed Ropple
- Riku Salminen
- Sebastian Schuberth
- Matt Sealey
- SephiRok
- Steve Sexton
- Systemcluster
2013-06-09 12:49:13 +02:00
- Dmitri Shuralyov
- Daniel Skorupski
- Bradley Smith
- Julian Squires
- Johannes Stein
- Justin Stoecker
2013-06-09 12:49:13 +02:00
- Nathan Sweet
- TTK-Bandit
- Sergey Tikhomirov
- Samuli Tuomola
- urraka
2013-06-09 12:49:13 +02:00
- Jari Vetoniemi
2014-07-01 10:49:50 +02:00
- Ricardo Vieira
2013-06-09 12:49:13 +02:00
- Simon Voordouw
- Torsten Walluhn
- 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