Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: OGL & SDL ja tekstuurin lataus

moptim [19.02.2007 17:12:29]

#

Elikkä, minulla on viritelmä mikä sisältää SDL:n ja OpenGL:n. Nyt haluaisin ladata tekstuurin, että voisin käyttää sitä OpenGL:llä. Miten teen tämän? Ja saanko tekstuurin niin, että tietty väri näkyy läpi? (SDL-oppaassa neuvottEiin tämä jekku)

PS. Älkää kysykö, että mistä hommasin alustan.

Metabolix [19.02.2007 17:54:54]

#

https://www.ohjelmointiputka.net/keskustelu/14079-opengl-tekstuuripulma

Metabolix kirjoitti:

Tämä siis korvaa glTexImage2D-funktion, kuten sisällöstä voi päätellä:

void SDL_glTexImage2D(SDL_Surface *kuva)
{
    const Uint32
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
        rmask = 0xff000000, gmask = 0x00ff0000, bmask = 0x0000ff00, amask = 0x000000ff;
#else
        rmask = 0x000000ff, gmask = 0x0000ff00, bmask = 0x00ff0000, amask = 0xff000000;
#endif
    Uint32 w, h;
    for (w = 1; w < kuva->w; w <<= 1); // Lähin kakkosen potenssi
    for (h = 1; h < kuva->h; h <<= 1);
    SDL_Surface *apu;
    apu = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, rmask, gmask, bmask, amask);
    SDL_BlitSurface(kuva, 0, apu, 0); // Stretch olisi tietysti kiva, mutta mitä turhia, käytä valmiiksi sopivaa kuvaa.
    glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, apu->pixels);
    SDL_FreeSurface(apu);
}
SDL_Surface *kuva = SDL_LoadBMP("kuva.bmp");
SDL_glTexImage2D(kuva);
SDL_FreeSurface(kuva);

Tuo ottaa pinnan, luo toisen sopivan kokoisen ja sopivassa formaatissa ja kopioi alkuperäisen tälle uudelle, jolloin tekstuuriksi siirtäminen onnistuu helposti. Tietenkin siis pitää tuota kutsuessa olla tekstuuri GL:n puolelta luotuna (glGenTextures) ja valittuna (glBindTexture), ja lopuksi sekin pitää tuhota (glDeleteTextures). Läpinäkyvyyden saat, kun ennen glTexImage2d:tä muutat pinnalta kaikki haluamasi pikselit läpinäkyviksi (alpha 0, olettaisin, siis kokonaan 0 kelpaa myös).

moptim [19.02.2007 19:45:03]

#

Yup. Mihin tuo sitten jemmaa tuon tekstuurin? En ole mikään ekspertti tämän yhdistelmän kanssa. *heh*
EDIT: Vai pitäisiköhän ensiksi vain tehdä yksivärisiä / kirjavia seiniä ilman tekstuuria... Mutta jos saan ohjeet (niiden ogl-funktioiden käyttöön), luulisin osaavani hoitaa homman.

tgunner [19.02.2007 19:56:43]

#

Jemmaat sen tekstuurin jonnekin, mistä voit ladata sen. (daa!)

Metabolix [19.02.2007 20:42:44]

#

Tämä ei nyt ole oikein oikea systeemi. Tulet kysymään, kuinka ladataan SDL:llä tekstuuri, etkä osaa edes käyttää tekstuureita... Menepä jotakin OpenGL-opasta lukemaan.

moptim [20.02.2007 15:15:40]

#

Tässäpä odottelen, kunnes julkaiset sen SDL & OGL -oppaan toisen osan :D

Ja ilman tekstuuria sain jonkinasteisen 3D-viritelmän pyörimään.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta