Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: OpenGL Antialialiasiointi

JoinTuanJanohon [26.03.2007 10:53:02]

#

Manuaalit opastavat, että antialialiasiointi onnistuu GL:ssä, kunhan vain ottaa syvyyspuskurin päältä pois, ja piirtää pinnat järjestyksessä takimmaisesta etummaiseen. Jos reunojen pehmennys oikeasti vaatisi syvyyspuskurin disablointia, erkkikään ei enää osaa sortteerata miljoonaa polygonia vaadittuun syvyysjärjestykseen.

Mikä on oikea tapa? Minkälaiset bitit GL:n tilakoneeseen pitäisi laittaa, jotta sahalaitaisuudesta pääsisi eroon?

Metabolix [26.03.2007 20:08:09]

#

glEnable(GL_BLEND); // Jotta reunat voivat sulautua taustaan
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Tapa blendata
glEnable(GL_POLYGON_SMOOTH); // Käsketään tehdä se polygoneille
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); // Ja vielä vinkki aiheesta

Markus [28.03.2007 12:56:20]

#

On olemassa kahdenlaista antialiasointia: tavallista (Metabolix ehdottamaa) ja multisamplaukseen perustuvaa. Tavallisessa joudut lajittelemaan polygonit ja se ei näin sovi oikeaan käyttöön. Lisäksi tavallisessa antialiasoinnissa tulee ongelmia polygonin saumojen ja syvyyspuskurin kanssa.

Multisamplaukseen perustuva antialiasointi sen sijaan ei vaadi mitään muutoksia jo olemassa olevaan ohjelmaan ja sitä voidaan käyttään suoraan, kunhan vain ikkunaa luotaessa pyydetään multisamplausta tukeva pikseliformaatti.

Katso tutoriaali multisamplauksesta täältä: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=46

Vastaus

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

Tietoa sivustosta