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
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 Red Book (versão 1.1)