Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » OpenGL-HeightMaptexturing

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.07.2008, 11:50 Uhr
mmc20
puss in boots


hi, ich seh in "deinem code" nirgendwo ein "glEnable(GL_TEXTURE_2D);" wesshalb wohl auch alles weiß ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.07.2008, 11:59 Uhr
WiredCoder



Hey,
erstmal danke schön das du so fix geantwortest hast.
Dieses stückchen Code ist nur die Terrain.cpp. In der HauptMain ist die Texturierung mit glEnable(GL_TEXTURE_2D); erlaubt. Wäreja auch zu shcön =D.

Vielen lieben Dank im Voraus!
--
Ich würde mich sehr über einen Besuch auf meiner Website freuen: www.Online-Programmierung.com
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.07.2008, 12:59 Uhr
mmc20
puss in boots


dann sind deine texture-koordinaten falsch (oder die texture ist nicht gültig)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.07.2008, 19:36 Uhr
WiredCoder



Alles klar, funktioniert, es hat doch was im TexturImporter gefehlt, danke dir mmc20!
--
Ich würde mich sehr über einen Besuch auf meiner Website freuen: www.Online-Programmierung.com
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: