Elikkäs olen tässä harjoittelemassa OGlää ja mietin, että mikäköhän on koodissani vikana, kun ei suostu blittaan näyttöön 2D textuuria. Tällä hetkellä näyttöön tulee vain ruskea neliö tuon kuvan paikalle...
ESIT: lisäsin koodia...
void Piirra()
{
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, mainmenu1);
glBegin( GL_QUADS );
glTexCoord2d(0.0,0.0 );
glVertex2d(0.0,0.0 );
glVertex2d(200.0,0.0 );
glVertex2d(200.0,200.0);
glVertex2d(0.0,200.0 );
glEnd();
}
//Funktio, jolla lataan textuurin. (löysin netistä)
GLuint loadTexture(std::string filename)
{
SDL_Surface *pic;
GLuint readypic;
pic=IMG_Load(filename.c_str());
if(pic)
{
glGenTextures(1, &readypic);
glBindTexture(GL_TEXTURE_2D, readypic);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, pic->w, pic->h, 0, GL_BGR, GL_UNSIGNED_BYTE, pic->pixels);
SDL_FreeSurface(pic);
return readypic;
}
}Kutsut "glTexCoord2d" funktiota vain kerran eli annat kaikille vertekseille saman tekstuurikoordinaatin.
Kutsu kyseistä funktiota ennen jokaista glVertex2d kutsua antaaksesi jokaiselle verteksille oman koordinaatin.
Ei vieläkään toimi, nyt tulee sekalaista pixelimössöä... :S
Edit: ja siis tässä olisi tarkoitus saada 1 kuva tonne neliön sisään ja tämä kuva sijaitsee tuossa textuurissa.
Nyt on näin:
glBegin( GL_QUADS );
glTexCoord2d(0.0,0.0 );
glVertex2d(0.0,0.0 );
glTexCoord2d(200.0,0.0 );
glVertex2d(200.0,0.0 );
glTexCoord2d(200.0,200.0);
glVertex2d(200.0,200.0 );
glTexCoord2d(0.0,200.0 );
glVertex2d(0.0,200.0 );
glEnd();Tekstuurikoordinaatit annetaan tekstuurin koosta riippumatta väliltä 0-1 (ei siis 0-200). Jos annat tekstuurikoordinaatiksi 200 se tarkoittaa, että tekstuuri toistetaan 200 kertaa rinnakkain, joka näyttää pikselimössöltä.
Jaa oke, ihmekkös kun ei toimikkaan.
Edit: Vieläkin on sivusuunnassa liianmonta kertaa se kuva, mutta kokoajan paranee...
Edit2: tässä on kuva miten nyt näkyy: http://sooda.dy.fi/fpaste/index.php?FAZ
näin pitäis näkyä:http://sooda.dy.fi/fpaste/index.php?PzN
Nyt on näin:
glBegin( GL_QUADS );
glTexCoord2f(0.0f,0.0f);glVertex2f(0.0,0.0 );
glTexCoord2f(1.0f,0.0f);glVertex2f(800.0,0.0 );
glTexCoord2f(1.0f,1.0f);glVertex2f(800.0,600.0);
glTexCoord2f(0.0f,1.0f);glVertex2f(0.0,600.0 );
glEnd();Luultavasti tiedostosi formaatti ei vastaa tuota, jonka ilmoitat glTexImage2D:lle. SDL-pinnan lataamiseen tekstuuriksi voit käyttää tätä koodivinkkiä. (Alfakanavan kanssa se ei tosin taida toimia, mutta silloinhan kuva on yleensä jo valmiiksi RGBA-formaatissa ja muunnoksen voi jättää tekemättä.)
JESS, sain toimimaan tuon koodivinkin avulla!! :D:D:D:D
Edit: tosin kuvanlaatu huononee aika radikaalisti verrattuna sdl:n vastaavaan... :S
Aihe on jo aika vanha, joten et voi enää vastata siihen.