2009-07-15 21 views
8

Ho provato di tutto, dall'SDL al DevIL, e hanno tutti fallito per vari motivi.
SDL segfaults per vari motivi, e DevIL sta avendo qualche strano problema dove anche dopo aver incluso IL/ilut.h e aver collegato tutto, e incluso le altre intestazioni, non si definiscono le funzioni di cui ho bisogno per caricare le immagini texture opengl (qualcosa su USE_OPEN_GL non in fase di definizione). Sto chiedendo qualsiasi altra lib in circolazione per caricare bitmap o png in un formato che posso facilmente convertire in opengl o una soluzione al problema del diavolo.

grazieCaricatore di immagini cross platform C++ per OpenGL

risposta

0

non avete bisogno ilut a fare quello che vuoi. puoi semplicemente usare ilGetData() e glTexImage2d()

0

Il caricamento di immagini bitmap (.bmp) e netpbm (.pbm, pgm, .pnm) è piuttosto banale, poiché memorizzano le immagini non compresse. Per caricare i PNG, utilizzare libpng. Per caricare file JPEG, utilizzare libjpeg. Per altri tipi di immagine, utilizzare una libreria appropriata. C'è un buon cambiamento che schiacciando 'lib' all'inizio del nome dell'immagine ti darà una tale libreria, ad es. libtiff, libtga, ecc

Una volta caricato e non compressi i dati di immagine grezzi, caricandola in una texture OpenGL è solo una questione di chiamare glTexImage2D() con i giusti parametri, e un paio di altri cambiamenti di stato GL (ad esempio, come fare mipmapping).

3

LodePNG è altamente compatto PNG Loader senza dipendenze.

Commenta la tua esperienza con DevIL: funziona in modo impeccabile per me e molti altri. Perché non provare ancora a risolvere i problemi di build? - non dovrebbe essere troppo difficile)

2

SOIL è un leggero leggero che ho usato prima. In realtà è specializzato anche nel caricamento di trame OpenGL.

http://lonesock.net/soil.html

+0

Penso che questa dovrebbe essere la risposta giusta. È una libreria leggera con un'API C incredibilmente semplice ed è basata principalmente su stb_image.c (che è il codice di caricamento delle immagini leggero spartano assoluto) ma è più pulito. – bigD

4

Come suggerisce Adam, consiglio anche di utilizzare libpng e libjpeg. Non si specifica se si scrive in C o C++, ma se in C++, quindi suggerirei di dare un'occhiata a due sottili involucri pratici sulle entrambe le librerie: pngxx e jpegxx

3

Si può anche provare FreeImage library. Supporta il caricamento di diversi tipi di immagini ed è funzionalmente simile a DevIL, può funzionare senza problemi per te.

E riguardo al problema con DevIL, non è necessario creare librerie ilu o ilut per rendere funzionale DevIL. Ti consiglio di gestire tu stesso gli oggetti texture OpenGL, incluso il caricamento dei dati delle immagini sul lato OpenGL.

15

Sia libpng che libjpeg possono essere piuttosto scoraggianti per creare l'uso di & - non c'è da stupirsi che ci siano tutti i tipi di librerie di wrapper per entrambi.

Un caricatore semplice e minimale per jpg/png (e anche altre cose) senza dipendenze in un singolo file C è l'immagine stb di Sean Barrett.c, se si desidera solo per caricare alcuni file di immagini che aggiunge in testa assolutamente minimo per il vostro programma ed è semplice da usare:

http://nothings.org/stb_image.c

+3

Grazie per questo link, questo è ottimo – joeld

+0

Ho cercato per due giorni per un tale file, grazie. – Mousa

0

giovane ma ancora grande abbastanza SFML potrebbe essere quello che state cercando. L'ho usato per numerosi progetti e tutti hanno funzionato bene su tutte le mie piattaforme (Win7 e Ubuntu).