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.

GLFW – Graphics Library Framework
Desenvolvedor The GLFW Development Team
Plataforma Multiplataforma
Versão estável 3.3.4 (8 de abril de 2021; há 3 anos[1])
Escrito em C
Sistema operativo Multiplataforma
Gênero(s) API
Licença zlib/libpng[2]
Estado do desenvolvimento Ativo
Página oficial www.glfw.org

Arquitetura de Software editar

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:[3]

  • 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 editar

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.[4]

Back-ends editar

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

Ver também editar

Referências

  1. «GLFW - Version history» (em inglês). Consultado em 15 de junho de 2021. Cópia arquivada em 29 de junho de 2018 
  2. «GLFW - License» (em inglês). Consultado em 9 de setembro de 2018. Cópia arquivada em 29 de junho de 2018 
  3. «What is GLFW not?» (em inglês). Consultado em 9 de setembro de 2018. Cópia arquivada em 21 de junho de 2018 
  4. «GLFW - Community» (em inglês). Consultado em 9 de setembro de 2018. Cópia arquivada em 21 de junho de 2018 
  5. «GLFW: New features» (em inglês). Consultado em 9 de setembro de 2018. Cópia arquivada em 6 de fevereiro de 2018 

Ligações externas editar