000
23.07.2008, 08:54 Uhr
WiredCoder
|
Hey Leute, so langsam verzweifle ich. Ich habe nun meinen kompletten TexturImporter neu aufgesetzt und jede einzelne Zeile überprüft. Dabei möchte ich einfach nur ein Terrain texturieren. Die Textur dafür liegt im MAP_SIZE/2=BMPxBMP Modus, sprich wenn das Terrain (Raw-File) die Größe 1024x1024 hat, ist diese gleichzeitig die Anzahl der Bytes. Meine Terraintextur besitzt jetzt die Größe 512x512, denn 512 = MAP_SIZE/2;. Aber ist ja auch nicht wichtig, meine Frage ist jetzt was da falsch ist, ich kann es mir nicht mehr erklären. Am TexturImporter kann es aufjedenfall nicht liegen, da muss was bei der Texturierung nicht stimmen. Und da ich nicht jeden einzelnen Vertex texturiere sondern wie gesagt eine komplette Textur auflege, kann es nicht sein. Die fertige Sache sieht nun so aus, dass das komplette Terrain weiss ist. Aber nun gut, hier mal ein bischen Code:
C++: |
int Height(BYTE *pHeightMap,int X,int Y) { int x = X % MAP_SIZE; int y = Y % MAP_SIZE;
if(!pHeightMap) { MessageBox(NULL,"Die pHeightMap-Funktion ist nicht verfügbar","Schwerwiegender Fehler!",MB_OK|MB_ICONERROR); return false; }
return pHeightMap[x+(y*MAP_SIZE)]; }
void SetTextureCoord(float x, float z) {
glTexCoord2f( (float)x / (float)MAP_SIZE, - (float)z / (float)MAP_SIZE ); }
void LoadRawFile(LPSTR Filename,int nSize,BYTE *pHeightMap) { FILE *File=NULL;
File=fopen(Filename,"rb");
if(File==NULL) { MessageBox(NULL,"File konnte nicht initiailisiesert werden","Schwerwiegender Fehler!",MB_ICONERROR|MB_OK); }
fread(pHeightMap,1,nSize,File);
int result=ferror(File);
if(result) { MessageBox(NULL,"File konnte nicht gelesen werden","Schwerwiegender Fehler!",MB_ICONERROR|MB_OK); }
fclose(File); }
void RenderHeightMap(BYTE pHeightMap[]) { int X = 0; int Y = 0; int x,y,z;
if(!pHeightMap) { MessageBox(NULL,"Die pHeightMap-Funktion ist nicht verfügbar","Schwerwiegender Fehler!!!",MB_OK|MB_ICONERROR); }
glBindTexture(GL_TEXTURE_2D,texture[0]);
glBegin(GL_QUADS);
for ( X = 0; X <= MAP_SIZE; X += STEP_SIZE ) { for ( Y = MAP_SIZE; Y >= 0; Y -= STEP_SIZE ) {
x = X; y = Height(pHeightMap, X, Y ); z = Y;
SetTextureCoord((float)x,(float)z); glVertex3i(x, y, z);
x = X; y = Height(pHeightMap, X, Y + STEP_SIZE ); z = Y + STEP_SIZE ; SetTextureCoord((float)x,(float)z); glVertex3i(x, y, z);
x = X + STEP_SIZE; y = Height(pHeightMap, X + STEP_SIZE, Y + STEP_SIZE ); z = Y + STEP_SIZE ;
SetTextureCoord((float)x,(float)z); glVertex3i(x, y, z);
x = X + STEP_SIZE; y = Height(pHeightMap, X + STEP_SIZE, Y ); z = Y;
SetTextureCoord((float)x,(float)z); glVertex3i(x,y,z); }
} glEnd(); }
|
Tut mir leid für den vielen Code, aber kann mir einer helfen? Ich danke im Voraus! -- Ich würde mich sehr über einen Besuch auf meiner Website freuen: www.Online-Programmierung.com |