Skocz do zawartości

Zablokowane [ OpenGL, glaux ] Texturki


Crackkk-GM

Rekomendowane odpowiedzi

Cze...

Od dziś zacząłem naukę OpenGL'a, mam zamiar w nim tworzyć gry 2D ( bez komentarzy plax . )

Narysowałem model 2D no... a dokładniej kwadrat i nie wiem jak nałożyć na to teksturę.

Szukałem w necie, ale nie mogłem znaleźć nic przyzwoitego. Proszę o pomoc :]

 

E: używam ogl + glaux.

E2: nikt nie wie? :(

E3: nie czepiać się ;D

Odnośnik do komentarza
Udostępnij na innych stronach

GLuint texture[1];
AUX_RGBImageRec *TextureImage[1];
AUX_RGBImageRec *LoadBMP(char* filename)
{
    FILE* file=NULL;

    if (!filename)
    {
        return NULL;
    }

    file=fopen(filename,"r");

    if (file)
    {
        fclose(file);
        return auxDIBImageLoad(filename);
    }

    return NULL;
}

...
...
...
TextureImage[0] = LoadBMP("Tex.bmp");
glShadeModel( GL_SMOOTH );
     glBindTexture(GL_TEXTURE_2D, texture[0]);
     glGenTextures(1, &texture[0]);
     gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY,GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
     glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
     glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST);
     glBegin (GL_POLYGON);
...

Odnośnik do komentarza
Udostępnij na innych stronach

Kopiowanie czyjegoś kodu, nie jest dobrym pomysłem. A czy zlinkowałeś bibliotekę glAux do projektu, jaki kompilator używasz?

 

Dev-C++, oczywiście że zlinkowałem o_O a z tym kopiowaniem kodu, to jak sam próbowałem, to nie wychodziło i teraz też nie wychodzi.

Odnośnik do komentarza
Udostępnij na innych stronach

Dev ma dupny debugger, Visual by pokazał czy wczytała się tekstura, może zrób tak:

#include <FStream>
(...)
AUX_RGBImageRec *LoadBMP(const char* filename)
{
    std::ofstream oFile( "./Logfile.log" );
    std::ifstream iFile( filename );
    if ( oFile.is_open() &&  iFile.is_open()  )
    {
        iFile.close();
        AUX_RGBImageRec* texTemp = 0;
        texTemp = auxDIBImageLoad(filename);
        oFile<< (char*)&texTemp << std::endl;
        return texTemp;
    }
    oFile.close();

    return NULL;
}

Pokaż co pokaże się w "Logfile.log"

Btw. Po co budujesz mipmapy dla gry 2D?

Odnośnik do komentarza
Udostępnij na innych stronach

@UP: też nie :/

19 C:\Dev-Cpp\xxx\functions.h no match for 'operator<<' in 'oFile << (void*)(&texTemp)'

 

Nie wiem co zrobiłeś, usuń & przed texTemp

 

#edit

 

Świetny jesteś że robisz to w HEADERACH. HAHA ;D

 

Lol spójrz w kod:

#include <FStream>

(...)

AUX_RGBImageRec *LoadBMP(const char* filename)

{

std::ifstream oFile( "./Logfile.log" );

std::ifstream iFile( filename );

if ( oFile.is_open() && iFile.is_open() )

{

iFile.close();

AUX_RGBImageRec* texTemp = 0;

texTemp = auxDIBImageLoad(filename);

oFile<< (char*)&texTemp << std::endl;

return texTemp;

}

oFile.close();

 

return NULL;

}

oFile << dzięki "<<" się dopisują informacje.

 

@Kofel: ja robię w headerach, ponieważ nie zawala mi to kodu w main.cpp, btw. biją cie headery? :o

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem czy wiesz, ale "(void*)texTemp" zwróci adres tekstury, więc będzie można zobaczyć czy ma inny adres po wczytaniu niż bez wczytywania ( 00000000 ).

E: Co do twoich headerów, po to są pliki CPP ( Source ), przecież nie musisz wszystkiego walać w "main.cpp"

Odnośnik do komentarza
Udostępnij na innych stronach

#include <FStream>
(...)
AUX_RGBImageRec *LoadBMP(const char* filename)
{
    std::ofstream oFile( "./Logfile.log" );
    std::ifstream iFile( filename );
    if ( oFile.is_open() &&  iFile.is_open()  )
    {
        iFile.close();
        AUX_RGBImageRec* texTemp = 0;
        texTemp = auxDIBImageLoad(filename);
        oFile<< (void*)texTemp << std::endl;
        return texTemp;
    }
    oFile.close();

    return NULL;
}

Pokaż co pojawiło się w "Logfile.log"

Odnośnik do komentarza
Udostępnij na innych stronach

#include <FStream>

...

AUX_RGBImageRec *LoadBMP(const char* filename)

{

std::ifstream oFile( "./Logfile.log" );

std::ifstream iFile( filename );

if ( oFile.is_open() && iFile.is_open() )

{

iFile.close();

AUX_RGBImageRec* texTemp = 0;

texTemp = auxDIBImageLoad(filename);

oFile<< (void*)texTemp << std::endl;

return texTemp;

}

oFile.close();

 

return NULL;

}

...

TextureImage[0] = LoadBMP("Tex.bmp");

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...