# 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.

See New features in 3.2 for release highlights or the version history for details.

Getting started is a guide for users new to GLFW. It takes you through how to write a small but complete program.

There are guides for each section of the API:

- Introduction to the API – initialization, error handling and high-level design
- Window guide – creating and working with windows and framebuffers
- Context guide – working with OpenGL and OpenGL ES contexts
- Vulkan guide - working with Vulkan objects and extensions
- Monitor guide – enumerating and working with monitors and video modes
- Input guide – receiving events, polling and processing input

Once you have written a program, see Compiling GLFW and Building applications.

The reference documentation provides more detailed information about specific functions.

Moving from GLFW 2 to 3 explains what has changed and how to update existing code to use the new API.

There is a section on Guarantees and limitations for pointer lifetimes, reentrancy, thread safety, event order and backward and forward compatibility.

The FAQ answers many common questions about the design, implementation and use of GLFW.

Finally, Standards conformance explains what APIs, standards and protocols GLFW uses and what happens when they are not present on a given machine.

This documentation was generated with Doxygen. The sources for it are available in both the source distribution and GitHub repository.