Biblioteca para carregar imagens em texturas, Linux, C e OpenGl

9

Estou procurando uma biblioteca C simples e independente para Linux para carregar imagens de arquivos em texturas OpenGL. A licença deve ser bastante liberal: zlib, bsd, mit ou algo assim. Encontrei SOIL , no entanto, ele não é atualizado há muito tempo. Existe algo mais, ou eu tenho que escrever o meu?

PS eu uso glfw. Existem apenas funções obsoletas para carregar imagens.

Michas
fonte

Respostas:

5

Eu uso a imagem STB para a maioria das imagens carregadas. Um pequeno self não continha nenhuma implementação anexada de png e outros formatos de arquivo.

nulos
fonte
3
SOIL é um invólucro leve em torno de stb_image.
Ah, eu não estava ciente disso.
void
11

SOLO funciona muito bem. Quem se importa se não for atualizado há um "longo tempo"? Isso significa apenas que é estável e bem compreendido.

(Na verdade, foi atualizado em 2008, o que não faz muito tempo.)

user744
fonte
Para aqueles que estão vendo isso agora - o SOIL parece não funcionar no iOS, portanto, se a portabilidade é o seu objetivo, usar stb_image diretamente pode ser uma opção melhor.
EdRopple #
2

Dê uma olhada no DevIL .

r2d2rigo
fonte
O DevIL está sob LGPL. Isso é pouco restritivo para mim.
Michas
11
Lembre-se de que, desde que não modifique o código-fonte original, é possível vincular a uma biblioteca LGPL e manter o código principal fechado / privado / usado para fins comerciais.
R2d2rigo
11
Eu sei. No entanto, eu quero vincular tudo em um único arquivo.
Michas
2

Confira o FreeImage . É com licença dupla, você pode escolher a GPL ou a licença liberal do FreeImage. Ele suporta muito mais formatos de imagem que SOIL e o desenvolvimento está ativo.

A biblioteca em si é escrita em C ++, mas possui uma interface C ANSI.

Desde a sua introdução:

Graças à sua interface ANSI C, o FreeImage é utilizável em muitas linguagens, incluindo C, C ++, VB, C #, Delphi, Java e também em linguagens de script comuns, como Perl, Python, PHP, TCL ou Ruby.

Oskar N.
fonte
Parece que a licença não é suficientemente liberal.
Michas
@Michas Tudo o que você precisa é reconhecer o uso da biblioteca; caso contrário, você pode modificar as fontes e usá-las em projetos comerciais. Ou talvez eu não tenha lido a licença com atenção suficiente?
Oskar N.
Eu posso ser forçado a publicar parte do código fonte.
Michas
Não sei ao certo de onde você está tirando essa idéia ... você realmente modificará a biblioteca FreeImage (dica: provavelmente não; seja honesto consigo mesmo)?
28411 ChrisE
Não é um requisito prático. Eu sei. Eu ficaria mais feliz com uma licença mais liberal.
Michas
0

Parvo é produzido o pessoal da CEGUI .

Suporta o carregamento de PNG, TGA, JPG, etc. E é lançado com uma licença MIT.

Você precisaria escrever um wrapper C, pois a biblioteca é escrita em C ++.

deft_code
fonte
O problema é que eu quero compilar tudo com um compilador C.
28611 Michas #
0

Se você não precisar ler muitos formatos, considere escrever seu próprio código do carregador. Eu uso libjpeg e libpng diretamente e eles são bastante fáceis de usar. Ambos têm funções muito simples que buscam essencialmente uma linha de varredura de dados RGBA, basta colocá-lo em uma matriz e depois fazer o upload para o OpenGL. Ambos têm programas de exemplo muito úteis e diretos.

Não tenho experiência com outros formatos, no entanto. Mas, para ser sincero, PNG + JPEG cobrem 100% de nossas necessidades (que não são triviais nem amadores - consulte http://www.mysterystudio.com )

ggambett
fonte