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.
https://www.ohjelmointiputka.net/keskustelu/
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).
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.
Jemmaat sen tekstuurin jonnekin, mistä voit ladata sen. (daa!)
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.
Tässäpä odottelen, kunnes julkaiset sen SDL & OGL -oppaan toisen osan :D
Ja ilman tekstuuria sain jonkinasteisen 3D-viritelmän pyörimään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.