Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: OpenGL ja reunanpehmennys

Burton [17.11.2008 15:00:29]

#

Moikka!

OpenGL-avusteinen ohjelmani pyörittelee väritettyjä, kuviollisia ja tekstuurillisia suorakulmioita (2D!) ja liikuttaa niitä ruudulla ylös ja alas. Grafiikoissa on kuitenkin pieni vika, jonka haluaisin pois. Ne nimittäin väreilevät pyöriessään. Tekstuurit ja laatikoiden reunat muodostavat pientä säröä, jota näkee peleissä, jos reunanpehmennys ei ole päällä. Mistä tällaisen saa OpenGL:ssä?

Metabolix [17.11.2008 15:38:29]

#

glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
En tähän hätään ole aivan varma, pitäisikö myös blendaus laittaa päälle:
glEnable(GL_BLEND);

Burton [17.11.2008 16:48:55]

#

Onkohan tuo jokin näytöstäni johtuva optinen harha, sillä antamasi funktiot eivät tehneet ongelmalle mitään. Käytän mukana SDL:ää, mutta se ei varmaan ole tarpeellinen tieto?

Sisuaski [17.11.2008 18:23:28]

#

Tekstuurien väreilyyn saattaa auttaa mipmappien käyttö, jos ne eivät ole vielä käytössä. Mipmappien käyttöä säädellään funktiolla glTexParameter, jonka dokumentaation löydät esim. sivulta http://www.opengl.org/sdk/docs/man/ .
Mipmapit saa kätevästi generoitua GLU:n funktiolla gluBuild2DMipmaps, jota voit käyttää glTexImage2D-funktion tilalla.

Pekka Karjalainen [18.11.2008 13:13:01]

#

SDL:n mukana tulee test-hakemistossa ohjelma nimeltä testgl.c . Yksi sen testaamista ominaisuuksista on multisampling, jota nykyaikaisilla näytönohjaimilla käytetään mm. reunanpehmennykseen. Sen voi kääntää päälle optiolla -fsaa tässä ohjelmassa. Koodista itse näkee, millä kutsuilla se aktivoidaan.

Myös glEnable(GL_MULTISAMPLE); sekä glDisable(GL_MULTISAMPLE); ovat mahdollisia operaatioita. Voit ehkä käyttää näitä, jos haluat tehdä osan piirrosta pehmennettynä ja osan ei. Tähän tosin voi liittyä joitakin mutkia, joita en nyt muista (eli en ole varma, kannattaako sitä tehdä kesken puskuriin piirtämisen). Jotta näitä voi käyttää, koko ominaisuus pitää kuitenkin aktivoida ensin testgl.c-ohjelman tapaan. Lue sorsat. Webbihaulla saat lisää tietoa ja esimerkkejä.

Eräät webistä löytyvät esimerkit eivät toimi, vaikka kortti + ajuri tukisivat näitä operaatioita. Vika onkin siinä, että ne käyttävät GLUTtia, eikä se tue niiden säätämistä päälle (riippuu GLUTin versiosta, käyttiksestä ja kuun asemasta). Mutta SDL:llä ei ongelmia pitäisi tämän suhteen tulla.

Vastaus

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

Tietoa sivustosta