GLFW
# GLFW

GLFW é uma biblioteca para uso com OpenGL. Seu nome é um acrônimo para Graphics Library Framework e permite que programadores possam criar e gerenciar janelas e contextos OpenGL, assim como interagir com joystick, mouse e teclado.

## Arquitetura de Software

A GLFW é uma biblioteca pequena escrita em linguagem C que permite a criação e gerenciamento de janelas em um contexto OpenGL, tornando possível também o uso de múltiplos monitores e modos de vídeo. Fornece acesso de leitura de teclado, mouse e joysticks. A API fornece uma fina camada de abstração multiplataforma, principalmente para aplicações cuja única saída gráfica é através da API OpenGL. Embora a GLFW seja muito útil para desenvolver aplicações OpenGL multiplataforma, desenvolvedores voltados a apenas uma plataforma também podem se beneficiar ao evitar terem que lidar com APIs mal feitas específicas da plataforma.
Um motivo para que bibliotecas como a GLFW sejam necessárias é que a OpenGL por si só não fornece mecanismos para criar o contexto necessário e gerenciar janelas, entradas do usuário, tempo, etc. Existem muitas outras bibliotecas disponíveis para auxiliar no desenvolvimento OpenGL. As mais comuns são freeglut (uma implementação de código aberto da GLUT) e SDL. No entanto, a freeglut é focada em ser um clone estável da GLUT, enquanto a SDL é muito grande para os interesses de algumas pessoas e nunca teve OpenGL como seu principal foco. A GLFW está baseada na suposição de que há espaço para uma biblioteca leve e moderna para gerenciar contextos OpenGL, janelas e dispositivos de entrada.
A GLFW não foi projetada para ser:
* uma biblioteca para interface gráfica do usuário. Ela permite que o programador crie janelas de nível superior com contextos OpenGL, mas sem menus ou botões.
* uma biblioteca apenas para Windows. Solicitações de recursos que não podem ser portados para outras plataformas serão negadas a menos que sejam discretas, como a implementação para Windows da procura por um recurso GLFW_ICON na criação de uma janela.
* uma biblioteca de threads. Já existem boas bibliotecas multiplataforma para lidar com threads. Além disso, esse recurso foi adicionado às bibliotecas padrão tanto em C11 quanto em C++11.
* uma biblioteca de carga de imagens. Já existem boas bibliotecas multiplataforma para carregamento de imagens.
* capaz de renderizar texto. Já existem várias bibliotecas para renderização de texto com OpenGL, e renderizadores de texto multiplataforma consistentes não podem, de forma alguma, depender de recursos de renderização de texto específicos de uma plataforma.
* capaz de renderizar qualquer coisa. A renderização está a cargo do programador e/ou outras bibliotecas.
* integrada a quaisquer kit de ferramentas de interface em nenhuma plataforma.
* capaz de reproduzir som.
* GLUT ou SDL.

### Vínculos com linguagens de programação

Embora a GLFW tenha sido escrita em C, existem vínculos para usar a API com outras linguagens de programação, incluindo Ada, Common Lisp, D, Go, Haskell, Java, Python, Ruby e Rust, entre outras.

### Back-ends

A série 3.3.x da GLFW traz novas funcionalidades e várias correções de bugs, entre outras melhorias.