Kun lataan ohjelmaani monta eri objektia jostain syystä muutaman objektin teksturoinnissa tapahtuu jotain hyvin erikoista, mitä ei pitäisi tapahtua. http://www.funkyap.com/Nimetön.png esimerkkinä pallo mikä on levyn keskellä teksturoituu oikein mutta levy ja taivas teksturoituu väärin. http://www.funkyap.com/ohjelma.png tässä taas 27 ensimmäistä objektia teksturoituu oikein (27 palikkaa mistä kuutio on rakennettu) ja taas levy ja taivas teksturoituu väärin , jos lisään tuonne pallon niin sekin teksturoituu oikein ja mallinnus ohjelmalla tarkastin että tiedostot on kunnossa eli siellä kaikki teksturoituu oikein.
// Funktio tekstuurien lataamiseen int LoadGLTextures(std::string texturepath) { // Tila int Status = 1; // Luodaan säilytys tila SDL_Surface *TextureImage[1]; // Ladataan kuva, katsotaan tuliko virheitä, jos tuli niin poistutaan if ((TextureImage[0] = SDL_LoadBMP(texturepath.c_str()))) { // Laitetaan tila kuntoon Status = 0; // Luodaan tekstuuri glGenTextures(1, &variables::Model[variables::freeHandle].Material.texture); // Tavallinen tekstuurin generointi käyttäen dataa BMP tiedostosta glBindTexture(GL_TEXTURE_2D, variables::Model[variables::freeHandle].Material.texture); // Luodaan tekstuuri glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->w, TextureImage[0]->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage[0]->pixels); // Lineaarinen suodatus glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } // Vapautetaan muisti ja kasvatetaan tekstuuri muuttujaa if (TextureImage[0]) { SDL_FreeSurface(TextureImage[0]); } variables::textures++; // Poistutaan return Status; }
Mitkä ovat ladatun kuvan w, h, pitch ja format->BytesPerPixel? Toimiiko, jos vaihdat glTexImage2D:n tilalle tämän funktion?
MIkä seuraavan tarkoitus on? ei varmaan liity ongelmaan mitenkään, pisti vaan silmään.
SDL_Surface *TextureImage[1]; //Tuohan on sama kuin: //SDL_Surface *TextureImage;?
vehkis91: ei ole
Tuo on SDL_Surface* tyyppinen taulukko pintoja varten. Voit esimerkiksi ladata valmiiksi taulukkoon kuvat piirtoa varten. Tosin enemmän joustavuutta saapi tuon kuvavaraston avulla.
Metabolix: tuolla sinun funktiolla sain texturoinnin toimimaan joten tutkin sitä ja muokkaan sitä omien tarpeiden mukaan. kiitos avusta
No vielä viitaten tohon mun kysymykseen, tuohon taulukkoon mahtuu tasan 1 kuvapinta, joten mitä järkeä on pitää taulukkoa?
Toisaalta lisäämällä alkioita ja kääntämällä uudelleen saa niitä lisää helpolla...
Jep, silloin se onkin kätevä, mutta viittasin juuri aikaisempaan koodiin, ettei siin tapauksessa oo mitään hyötyä siitä. Mutta asia selvitetty.
vehkis91: niitä on useampi siinä mutta kun yritin saada koodiani toimimaan niin muuttelin sitä sen mukaan että monta tekstuuria tarvitsee ladata ja tuolloin satuin tarvitsemaan vain yhden.
Muuten: kasvatat tekstuurilaskuria, vaikka lataus epäonnistuisi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.