ho provato a includere la libreria con #include"common/LoadTGA.c" ma mi crea un nuovo errore nella libreria stessa.....
se ti mando il file saresti così gentile da darci un'occhiata?
ho provato a includere la libreria con #include"common/LoadTGA.c" ma mi crea un nuovo errore nella libreria stessa.....
se ti mando il file saresti così gentile da darci un'occhiata?
Metti il progetto su un sito in modo da poterlo scaricare.
L'indirizzo è:
link
pesa 77 kb.
Grazie mille per la disponibilità!
Ho visto il progetto ... La parte positiva e' che l'ho messo a posto per quanto riguarda la compilazione, quella negativa che, una volta eseguito, non viene mostrata alcuna immagine nella finestra OpenGL.
Ho fatto un po' di debug e ho visto che la gltLoadTGA non calcola la corretta dimensione del file a partire dall'header dell'immagine e quindi non la carica in memoria. Questo puo' essere causato dal fatto che il formato dell'immagine di prova *non* e' supportato da questa funzione. Nei commenti c'e' scritto
// This only works on pretty vanilla targas... 8, 24, or 32 bit color
// only, no palettes, no RLE encoding
e mi sa che l'immagine di prova e' compressa con RLE ...
Per sicurezza, ho scaricato dal sito della Matrox qualche sample TGA e questi vengono visualizzati regolarmente.
Tornando ai problemi di compilazione (anzi, di linking), questi sono dovuti al fatto che il tuo progetto e' C++ mentre il sorgente LoadTGA.c e' scritto in C. Per questo motivo il nome "decorato" della funzione gltLoadTGA non viene trovato per il link. Per rimediare basta dichiarare esplicitamente il tipo di funzione.
Quello che devi fare e'
1) elimina le due linee
#include"common/GLTools.h"
#include"common/LoadTGA.c"
dal sorgente
2) al loro posto aggiungi
extern "C" GLbyte *gltLoadTGA(const char *szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat);
3) nella finestra del progetto (dove c'e' l'elenco dei file), tra i sorgenti (dove c'e' carica.cpp), carica anche il file LoadTGA.c (tasto destro del mouse, Add Files to Project ...)
4) ricompila
ti chiedo scusa se ieri non ho risposto ma sono stato via.
Grazie mille per l'aiuto, sei stato veramente gentile.
Sono riuscito a lanciare il programma, però ho fatto diversamente da come mi avevi suggerito;
ho lasciato la prima libreria e sostituito solo la seconda...in pratica ho:
#include"common/OpenGLSB.h"
//#include"common/GLTools.h"
extern "C" GLbyte *gltLoadTGA(const char *szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat);
e ho inserito l'altro file nel progetto.
Alcune immagini tga riesco ad aprirle, altre no; dipende dal tipo di compressione, quindi.
Ancora grazie e a buon rendere.