PDA

View Full Version : utilizzo directx in c++


manu@2986
14-06-2004, 14:03
ciao a tutti...
so che in c++ si possono utilizzare le directx per realizzare oggetti 3d, dato che io non so assolutamente come si possa fare e le mie ricerche in rete mi hanno portato a spiegazioni quasi incomprensibili x me(ho finito la 4° informatica e le classi in c++ dovrei saperle "usare")...
vorrei chiedere a voi di illuminarmi, almeno sapere che "include" utilizzare...non voglio fare assolutamente nulla di esaltante, al massimo visualizzare un cubo che ruota o altro...grazie a tutti
ciao

cionci
14-06-2004, 16:15
Devi scaricare il DirectX SDK dal sito della Microsoft... Ci sono abbondanti esempi...

manu@2986
14-06-2004, 20:48
mamma mia 220 Mb!!!!non posso proprio scaricarli!!ho il 56k!:eek: va beh grazie lo stesso.
ciao

ariagiovannifanboy
15-06-2004, 00:09
Manu,

forse ti conviene iniziare con l'OpenGL, + immediato e facile da usare delle Direct3D (anche se il preferisco quest'ultime).

Ciao

manu@2986
15-06-2004, 11:05
beh avevo fatto un pensiero anke alle opengl ma come con le directx non so da dove cominciare, dopo varie ricerche sono gionto a poco e niente...

cionci
15-06-2004, 11:44
http://nehe.gamedev.net/
http://www.multiplayer.it/itaprogaming/docs&tuts/opengl/nehe/default.asp (qui in italiano)

manu@2986
15-06-2004, 13:35
grazie il sito in italiano è molto interessante...vedrò di capirci qualcosa...ciao

x110
15-06-2004, 18:54
insieme all'SDL? multipiattaforma?
non sarebbe meglio?

www.libsdl.org

ci sono anche buoni tutorial.

manu@2986
16-06-2004, 12:49
sono riuscito a realizzare dei poligoni e delle figure 3d....arrivato alla spiegazione del texture mapping scrivo il codice IDENTICO a quello nel sito ma mi due errori su due funzioni che devono caricare la bitmap dalla memoria:glgentexture() e glbintexture()

ho incluso tutto il necessario per utilizzarle ma niente...anche scaricando i sorgenti non riesco a compilarli, sempre lo stesso errore....boh...inoltre vedo che molti di questi programmi includono vcl.h che io non posso includere perchè non è presente...è giusto che faccia così??
grazie degli eventuali aiuti

ariagiovannifanboy
16-06-2004, 13:06
vcl.h è un file del Borland C++ (le VCL sono classi Borland che wrappano un po' tutta la WINAPI e non solo) quindi vuol dire che quegli esempi sono fatti con il BCB.

Per il resto non so, controlla bene che la texture da caricare sia nel path giusto e cose del genere, mi dispiace di non poterti aiutare ulteriormente.

manu@2986
16-06-2004, 16:37
il fatto è che io appunto utilizzo borland c++...sto cercando in giro ma quegli errori non vanno via...anke scaricando i sorgenti direttamente dal tutorial....boh!

manu@2986
17-06-2004, 11:09
finalmente ho risolto quei due problemi utilizzando delle librerie opengl + aggiornate...ma ora ne è venuto fuori uno nuovo di errore:cry: :in pratica mi da errori "unresolved external" sul comando auxDBImageload...

queste sono le due funzioni che si occupano del caricanento:


AUX_RGBImageRec *LoadBMP(char *Filename) // Loads a bitmap image
{
FILE *File = NULL; // File handle
if (!Filename) // Make sure a filename was given
{
return NULL; // If not return NULL
}
File = fopen(Filename,"r"); // Check to see if the file exists
if (File) // Does the file exist?
{
fclose(File); // Close the handle
returnauxDIBImageLoad(filename); // Load the bitmap and return a pointer
}
return NULL; // If load failed return NULL
}


int LoadGLTextures() // Load bitmaps and convert to textures
{
int Status = false; // Status indicator
AUX_RGBImageRec *TextureImage[1]; // Create storage space for the texture
memset(TextureImage,0,sizeof(void *)*1); // Set the pointer to NULL
// Load the bitmap, check for errors, if bitmap's not found quit
if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))
{
Status = true; // Set the status yo TRUE
glGenTextures(1, &texture[0]); // Create the texture
// Typical texture generation using data from the bitmap
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
if (TextureImage[0]) // If texture exists
{
if (TextureImage[0]->data) // If texture image exists
{
free(TextureImage[0]->data); // Free the texture image memory
}
free(TextureImage[0]); // Free the image structure
}
return Status; // Return the status
}



Questa parte non l'ho realizzata io l'ho copiata direttamente dal tutorial...ma se sapete un altro modo per caricare una bitmap x me è uguale...grazie

cionci
17-06-2004, 11:15
Devi linkare glaux.lib...

manu@2986
17-06-2004, 16:34
scusa l'ignoranza ma non so come si faccia, cioè io con borland c++ quando creo un progetto per aggiungerci parti faccio "add node", ma anche aggiungendo glaux.lib e glu.lib non cambia niente...scusa se continuo a rompere...ciao

cionci
17-06-2004, 19:04
Non ti posso aiutare BC++B...credo che tu debba andare nelle opzioni del compilatore, nella parte dedicata al liker, ed aggiungere quella lib...