Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: OpenGL blendaus ja PNG tekstuurin lataus

Nanoputki [15.02.2010 11:13:26]

#

PNG /SDL_image asiasta on jo monta aihetta mutta en lötänyt vastausta omaan ongelmaani.

Pohjalla toimii Metalboxin koodivinkki https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=sdl_gl_2#tekstuurienlataaminen ja tästä kiitos hänelle. Koodi on kuitenkin omille taidoilleni melko monimutkaista.

Eli olisi kaksi toisiinsa liittyvää ongelmaa. Polygonien väritys on aivan mitä sattuu ja riippuu ilmeisesti ruudun kohdan x tekstuurista. Läpinäkyvyys ei toimi juuri ollenkaan. Välillä saa neliöstä puolet katoamaan kokonaan mutta siihen se sitten jääkin.

No tekstuureita en ole saanut läpinäkyviksi joka saattaa johtau siitä ettie SDL tue 32bit bmp tiedostoja (joita mm gimpillä voi tehdä). PNG kuvan lataus toimii ilman erroreita muuten hyvin mutta mitään ei näy. Kokeilin https://www.ohjelmointiputka.net/keskustelu/20305-cpp-sdl-image-ja-png-kuvat esimerkin mukaan ja tuolla kyllä näkyi aivan normaalisti.

Näilä mennään mutta myöskään alpha test ei osoittautunut sen toimivammaksi 32bit bmp:n kanssa (tosin polygoneilla se taisi toimia mutta polygoneille tarvitsisin muutakin kuin on off näkyvyyttä).

glEnable_f(GL_BLEND);
glBlendFunc_f(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

Olisiko jotain ideoita?

ZcMander [15.02.2010 16:03:06]

#

Läpinäkyvät tekstuurit (primitives) täytyy myös piirtää oikeassa järjestyksessä. (Tietääkseni myös silloin, kun käytetään syvyyspuskuria).

Tällä pitäisi saada ainakin ladattua SDL_Surface näytönohjaimen muistiin tekstuuriksi, ja sen jälkeen voidaan piirtää esim. tällä, mutta tuohon pitäisi vielä lisätä tekstuurin bindaus (glBindTexture) ja textuurien koordinaatit (esim. glTexCoord2f).

Nanoputki [15.02.2010 16:45:32]

#

Sanottakoon vielä että kyseessä on 2d härpäke. Ja tosiaan juuri tuotahan minä lataukseen käytinkin. Mutta pitääpäs paneutua tuohon NEHEN esimerkkiin kunhan kerkiän =)

ZcMander [15.02.2010 16:47:31]

#

OpenGL on vaan siitä vähän vaikee, että piirto tapahtuu samalla lailla oli kyseessä sitten 2D tai 3D, tai itseasiassa silläkään ei ole edes mitään väliä. (Se vain määritellään projektio-matriisissa)

Vastaus

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

Tietoa sivustosta