„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| 1 502. sor: | 1 502. sor: | ||
Akkor már pixel szinten pontos képet kapunk... de sokkal sokkal drágábban. Ilyenkor rengeteg teljesen fölösleges munkát csináltatunk az OpenGLlel. Általánosságban nagyon rossz ötlet pixel szintű pontosságra törekedni a felbontás növelésével. A nem feltűnően zavaró megvilágítással általában már megelégszünk, egy összetett jelenetnél a megvilágítás pontatlansága úgy se tűnik fel. | Akkor már pixel szinten pontos képet kapunk... de sokkal sokkal drágábban. Ilyenkor rengeteg teljesen fölösleges munkát csináltatunk az OpenGLlel. Általánosságban nagyon rossz ötlet pixel szintű pontosságra törekedni a felbontás növelésével. A nem feltűnően zavaró megvilágítással általában már megelégszünk, egy összetett jelenetnél a megvilágítás pontatlansága úgy se tűnik fel. | ||
== Hátsólap eldobás == | === Hátsólap eldobás === | ||
Az utolsó példába, a kocka hat oldala közül egyszerre mindig csak három látszódott, de ennek ellenére mind a hatot kirajzoltuk, csak abból három a z-tárazás (GL_DEPTH_TEST) miatt nem látszódott. Ami viszont jó hír, hogy a felületi normál alapján azonnal el tudjuk dönteni egy oldalról, hogy az a kamera felé néz-e vagy se. Ha ezt fel tudnád használni, akkor 3072 háromszög fölösleges kirajzolását megspórolnánk. Ami viszont rossz hír, a rajzoláshoz használt felületi normál, amit mi adunk meg, nem mindig egyezik meg a háromszögek felületi normáljával, sőt ez a vektor a háromszög három csúcspontjára különböző is lehet. A háromszög három csúcsából ki tudjuk számolni a felületi normál irányát, csak annak az előjelét nem tudjuk. Az ötlet az, hogy a háromszög pontjainak legyen egy előre meghatározott körüljárási iránya, pl a normál irányából nézve az óramutató járásával ellentétes (Counter Clockwise - CCW) sorrendben vannak felsorolva a pontok. Viszont ha a másik oldalról nézem a háromszöget, akkor a körüljárási irány megfordul, és onnan óramutató járásával megegyező (Clockwise - CW) sorrendet fogok látni. | Az utolsó példába, a kocka hat oldala közül egyszerre mindig csak három látszódott, de ennek ellenére mind a hatot kirajzoltuk, csak abból három a z-tárazás (GL_DEPTH_TEST) miatt nem látszódott. Ami viszont jó hír, hogy a felületi normál alapján azonnal el tudjuk dönteni egy oldalról, hogy az a kamera felé néz-e vagy se. Ha ezt fel tudnád használni, akkor 3072 háromszög fölösleges kirajzolását megspórolnánk. Ami viszont rossz hír, a rajzoláshoz használt felületi normál, amit mi adunk meg, nem mindig egyezik meg a háromszögek felületi normáljával, sőt ez a vektor a háromszög három csúcspontjára különböző is lehet. A háromszög három csúcsából ki tudjuk számolni a felületi normál irányát, csak annak az előjelét nem tudjuk. Az ötlet az, hogy a háromszög pontjainak legyen egy előre meghatározott körüljárási iránya, pl a normál irányából nézve az óramutató járásával ellentétes (Counter Clockwise - CCW) sorrendben vannak felsorolva a pontok. Viszont ha a másik oldalról nézem a háromszöget, akkor a körüljárási irány megfordul, és onnan óramutató járásával megegyező (Clockwise - CW) sorrendet fogok látni. | ||
| 1 524. sor: | 1 524. sor: | ||
http://i.imgur.com/OsxWbsw.png | http://i.imgur.com/OsxWbsw.png | ||
== Színek == | === Színek === | ||
A színekkel kapcsolatban egy megjegyzés: a GL_COLOR_MATERIAL-ról azt írtam, hogy az csak egy átmeneti megoldás. Ami a másik fajta szín bevezetését motiválta, az az, hogy az anyagoknak lehet különböző az ambiens a diffúz és a spekuláris színe. Az OpenGL megvalósításában az anyagoknak még emisszív színe is lehet. Az emisszív színnel azt lehet elérni, hogy az objektum világítson, sötétben is látszódjon, de nem úgy, mint egy fényforrás, az emisszív anyag a környezetének a színét nem befolyásolja. A másik előnye, az OpenGL implementációjának hogy az első és hátsó lapoknak külön színe is lehet. | A színekkel kapcsolatban egy megjegyzés: a GL_COLOR_MATERIAL-ról azt írtam, hogy az csak egy átmeneti megoldás. Ami a másik fajta szín bevezetését motiválta, az az, hogy az anyagoknak lehet különböző az ambiens a diffúz és a spekuláris színe. Az OpenGL megvalósításában az anyagoknak még emisszív színe is lehet. Az emisszív színnel azt lehet elérni, hogy az objektum világítson, sötétben is látszódjon, de nem úgy, mint egy fényforrás, az emisszív anyag a környezetének a színét nem befolyásolja. A másik előnye, az OpenGL implementációjának hogy az első és hátsó lapoknak külön színe is lehet. | ||