Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: OpenGL: Tekstuurien muokkaaminen ja muita kysymyksiä

KoodiNoppa [16.06.2008 21:10:15]

#

Miten tekstuureja voi muokata?
Miten ruudulla olevaa kuvaa voi muokata (blur,sharpen yms. efektit)?
Miten ruudulla olevan kuvan tai jonkin tekstuurin saa SDL_Surfaceen?
Onko osittainen läpinäkyvyys mahdollinen ilman kappaleiden järjestämistä tiettyyn järjestykseen?

Metabolix [16.06.2008 22:47:08]

#

Tekstuurin saa ladattua takaisin pinnalle samalla tavalla kuin pinnalta OpenGL:llekin mutta funktiolla glGetTexImage. Tekstuuria voi sitten muokata, ja muokatun version voi lähettää takaisin OpenGL:lle.

Osittainen läpinäkyvyys ei järkevästi toimi ilman kappaleiden järjestämistä, koska syvyyspuskuriin tallentuu viimeiseksi piirretty syvyys silloinkin, kun kappale on läpinäkyvä, jolloin taaemmas piirrettävät asiat eivät enää näy läpi, koska niiden katsotaan jäävän piirretyn osan taakse.

Pekka Karjalainen [17.06.2008 10:34:29]

#

KoodiNoppa voi haluta tutustua myös GLSL:ään, eli GL Shading Languageen. Täällä on esittely ja opas englanniksi:

http://www.lighthouse3d.com/opengl/glsl/

Lyhyt yhteenveto heille, joille käsite ei ole tuttu. Shading language on kieli, jolla kirjoitetaan ohjeita grafiikkaprosessorille suoritettavaksi graafisen näkymän renderöinnin yhteydessä. Tällainen ohjelma on nimeltää shader ja se voi tuottaa mm. monenlaisia valaistukseen liittyviä efektejä. Nykyisissä peleissä suuri osa grafiikkaefekteistä onkin toteutettu näillä tekniikoilla.

Mutta lukekaa ym. opasta, siellä asia kerrotaan kunnolla. Näitä shader-kieliä on useita, ja GLSL on siis yksi niistä.

KoodiNoppa [17.06.2008 16:29:13]

#

Näinkö?
glBindTexture(GL_TEXTURE_2D,tekstuuri);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGBA,GL_UNSIGNED_INT,kuva->pixels);

Voiko kappaleiden järjestämistä optimoida mitenkään?

Olen jo hieman tutustunut GLSL:ään :)
Luminalla olen testannut erilaisia shader-ohjelmia. Pitäisi vielä perehtyä niiden käyttämiseen itse ohjelmassa.

Vastaus

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

Tietoa sivustosta