Bibliotecas de código

De Wiki-II

Esta página está sendo criada para que os alunos possam compartilhar dicas de bibliotecas de classes e funções (em C, C++ ou qualquer linguagem) que tornem a programação mais ágil. Muitas vezes, ao programar, nos deparamos com os mesmos problemas repetidas vezes. Em alguns casos, até podemos copiar e colar o código, mas não é uma boa solução a longo prazo. Ou, pode ser que a tarefa exija interação com o sistema operacional (interface gráfica, threads, som, etc.), mas gostaríamos de encontrar uma biblioteca que tenha maior abstração e/ou seja portável. Até acharmos aquela biblioteca ideal, pode-se gastar muito tempo lendo documentação e corrigindo erros de compilação para ver se os recursos são aquilo que queríamos. Ou então, até conseguirmos construir aquela classe com todos os métodos que gostaríamos, perde-se um bom tempo depurando e ajeitando as "arestas" da classe. Para aliviar esses dois problemas, esta página foi criada. A primeira parte contém links e comentários para bibliotecas disponíveis publicamente na internet e que foram "testadas e aprovadas" pelos alunos da UFRGS. A segunda parte da página é destinada aos módulos que os próprios alunos escreveram. Vale tanto pequenas classes ou trechos de código úteis quanto código no estilo "biblioteca completa" (com documentação, exemplos de uso, etc.). A terceira parte contém links para livros na internet. O ideal é que alguém que tenha usado uma biblioteca coloque um link, e, se possível, comente ou dê dicas sobre o funcionamento e possíveis problemas (com soluções, de preferência! hehe). Caso você tenha alguma informação a adicionar sobre as bibliotecas, sinta-se livre para editar a página.

Tabela de conteúdo

Bibliotecas externas

Gráficos

  • OpenGL
OpenGL - The Industry Standard for High Performance Graphics
Disponibilidade: C e várias outras linguagens
Biblioteca para gráficos 2D e 3D. Geralmente já está disponível nos sistemas operacionais e ambientes de programação.
  • GLUT
GLUT - The OpenGL Utility Toolkit
Nate Robins - OpenGL - GLUT for Win32
GLUT for Win32 + MinGW Modificação do pacote do Nate Robins, incluindo a libglut32.a pra usar com o GCC do Windows, o MinGW, junto com algumas dicas. Contém também uma alteração no glut.h para evitar um erro no VisualStudio.NET sobre declarações incompatíveis da função exit().
GLUT for Win32 with mouse scroll wheel
FreeGLUT
OpenGLUT
Disponibilidade: C, OpenGL
Biblioteca usada para criar a janela e manipular eventos de um programa OpenGL.
  • SDL
Simple DirectMedia Layer
Disponibilidade: C e várias outras linguagens, OpenGL (opcional)
Biblioteca que pode ser usada para gráficos 2D ou, em conjunto com OpenGL, gráficos 3D. Possui mais recursos que a GLUT, como melhor controle do teclado e mouse, além do carregamento de imagens BMP, som, som de CD e threads. Na própria página da SDL, há links para várias bibliotecas complementares (SDL_image, SDL_mixer, SDL_net, etc.) que são distribuídas separadamente (não testei nenhuma). Infelizmente, alguns recursos da GLUT não estão presentes diretamente na SDL, como menus pop-up, fontes (tipos de letra) e múltiplas janelas.
Dica: Se depois de seguir as instruções pra instalar e usar a SDL, der um erro sobre a função main ou SDL_main, lembre-se que a SDL usa sua própria função main. Uma macro permite que você use o nome main quase normalmente, mas só se incluir os argumentos (assim: int main(int argc, char ** argv). Ver o comentário no arquivo SDL_main.h.
  • Wild-Magic
Geometric Tools: Home Page
Disponibilidade: C++
Pra você que não acredita em pseudo-código e quer ver implementações reais de algoritmos gráficos :-). Muitos megabytes de código fonte C++, com classes pra geometria, análise de imagens, matemática, etc. Embora eu ainda não tenha usado o código como uma biblioteca pronta, tem muita coisa útil para aprender lendo os fontes.
  • GLEW
GLEW: The OpenGL Extension Wrangler Library
Disponibilidade: C
  • RenderTexture
Mark Harris' Render to Texture
Disponibilidade: C++, GLEW
  • Gandalf
Gandalf Home Page
Disponibilidade: C
Uma biblioteca muito útil de processamento de imagens e visão computacional pra aplicações que não requerem desempenho em tempo real. Possui também recursos de álgebra linear.

Gerência de Memória

  • C/C++ Garbage Collection Library
- libgc

Bibliotecas dos alunos

  • glutmmenu
glutmmenu
C++, GLUT, OpenGL
A biblioteca GLUT permite criar menus pop-ups bem simples. A biblioteca glutmmenu acrescenta a possibilidade de criar menus no estilo radio button (quando um item é marcado, os outros são desmarcados) e também (Atualizado em 2005-04-19!) no estilo check box (os itens podem ser marcados e desmarcados de forma independente). Esta biblioteca também provê uma maneira de descrever os menus e submenus de forma declarativa, usando listas de itens (em vez de chamar glutAddMenuEntry/glutAddSubMenu "no braço").

Livros e referências na web

  • OpenGL Super Bible
OpenGL Super Bible
  • OpenGL Red Book (versão 1.1)
OpenGL Red Book (1.1)
Ferramentas pessoais