Entra

View Full Version : [C++, OpenGL] Problema texture con visual studio 2005!...mi sono proprio stufato.


doctorAle85
31-12-2007, 16:00
Scusate, ho un grosso problema con vs2005!
Sto facendo delle prove... in particolare, ho aperto un progetto .dsw originariamente creato con visual c++ 6.0, e va tutto bene...perchè me lo converte in visual studio solution...e quando vado a compilare e ad eseguire nn da alcun problema!...questo progetto originariamente creato con vc++6 carica 2 texture, una per lo sfondo e una per una sfera!

Il problema sorge in in questo caso... ho provato a creare un nuovo progetto da vs2005, cercando di farlo identico a quello di vc++ 6...identico nel senso che ho ricreato le stesse classi dell'altro progetto e ho copiato e incollato il codice di ogni classe! Dato che il progetto originario utilizza delle texture con estensione .tga le ho copiate nella cartella del mio nuovo progetto, precisamente nella cartella "data" che poi viene richiamata nel codice

if (!X.LoadTextureTGA("data/map.tga"))
{
printf("failed to load X texture!\n");
exit(0);
}
sky.LoadTGA("data/skymap.tga", GL_LINEAR, GL_LINEAR);


Se vado a compilare il progetto nn da nessun errore...ma quando lo vado ad eseguire mi dice che non esiste il file map.tga!

precisamente in esecuzione mi dice "data/map.tga does not exists. failed to open X texture!"

NB. La texture map è quella applicata sulla sfera X. Per la sfera X è stato creato un file .h (sfere.h) per creare altre sfere in seguito (non ho usato direttamente dei comandi per generare le sfere perchè sul progetto originario era fatto così)! ...All'inizio ovviamente c'è un include!

Per quanto riguarda sky all'inizio viene dichiarato un tipo Texture sky, e viene utilizzata un'intestazione texture.h!...La texture skymap.tga è quella che viene caricata per lo sfondo!

Questa texture però non da problemi!

Il metodo in cui viene disegnato lo sfondo è questo (poi viene richiamato in un metodo draw):
void DrawBackground()
{
// -- inizio modalità ortografica
glMatrixMode(GL_PROJECTION); //seleziona projection matrix
glPushMatrix(); //memorizza projection matrix
glLoadIdentity(); //resetta projection matrix
glOrtho(0, width, 0, height, -1, 1); //imposta coordinate orto
glMatrixMode(GL_MODELVIEW); //seleziona modelview matrix

glPushMatrix();
glLoadIdentity();

glDepthMask(GL_FALSE); // disabilita scrittura z-buffer

glColor3f(1.f, 1.f, 1.f);
glBindTexture(GL_TEXTURE_2D, skymap.ID);
glBegin(GL_QUADS); // disegna lo sfondo
glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
glTexCoord2f(1, 0); glVertex3f(width, 0 , 0); // ad ogni vertice corrisponde un texel
glTexCoord2f(1, 1); glVertex3f(width, height, 0);
glTexCoord2f(0, 1); glVertex3f(0, height, 0);
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);

glPopMatrix(); // ripristina la projection matrix vecchia
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glDepthMask(GL_TRUE); // abilita scrittura z-buffer
// -- fine modalità ortogonale
}

Com'è possibile che con il progetto originario non mi da l'errore e questo fatto direttamente da vs2005 si?

Altra cosa curiosa:
Se provo a mettere tra commento il codice in cui viene caricata la texture map.tga quando vado ad eseguire il progetto compare la sfera, ma è grigia, così come lo sfondo!!!...quindi non si vede neanche il cielo! com'è possibile?...nel caso di prima in cui mi dava errore invece non si vedeva niente perchè il programma si bloccava con l'errore!

cionci
01-01-2008, 13:24
Precisamente dove hai creato la directory data ?

doctorAle85
01-01-2008, 17:41
Precisamente dove hai creato la directory data ?

ho creato una cartella data e l'ho messa qui:

C:\Users\Home\Documents\Visual Studio 2005\Projects\Prova

dove Prova è il nome del progetto!

cionci
02-01-2008, 07:51
Prova a copiarla anche dentro a Debug...

doctorAle85
02-01-2008, 09:41
Prova a copiarla anche dentro a Debug...

Non va... anche perchè nell'errore dice che nella cartella data non trova il file tga!

cionci
02-01-2008, 09:48
Non va... anche perchè nell'errore dice che nella cartella data non trova il file tga!
Che c'entra...magari non trovava nemmeno la cartella data...

doctorAle85
02-01-2008, 10:02
Che c'entra...magari non trovava nemmeno la cartella data...

Ho appena risolto...sono un cretino!...però visual studio crea in modo diverso le cartelle rispetto a visual c++!

Praticamente quando faccio new project e gli do il nome Prova al nuovo progetto, visual studio mi crea la cartella Prova nel percorso che ho indicato all'inizio! ...io ho messo la cartella data li!...e invece era sbagliato, perchè alla prima compilazione visual studio mi crea una nuova cartella Prova all'interno di Prova ed è li che va messo data!...in questo modo va tutto liscio...per fortuna che ho pensato a questa cavolata sennò ci sbattevo la testa ancora parecchio!

Ti chiedo una cosa... visual studio non mi crea file .dsw nella cartella, ma solo .sln, che dovrebbe essere solution!
Sai come si fa per creare un file .dsw?

cionci
02-01-2008, 10:05
Non ne ho idea...non so se ci sia qualche utility che permette di esportare il file .sln in .dsw e .dsp come in Visual C++ 6...