25.05.2002
Blending – mieša (kombinuje) to čo je už nakreslené s tým čo sa bude kresliť. Blending zapíname a vypíname pomocou glEnable(GL_BLEND); a glDisable(GL_BLEND); Spôsob miešania nastavujem funkciou glBlendFunc( source factor, destination factor );
Source factor – ovplyvňuje to čo sa bude kresliť
Destination factor – ovplyvňuje to čo už je nakreslené (čo je vo frame buffery)
Každý parameter môže nadobúdať veľa hodnôt preto tento program vám a aj mne môže uľahčiť pochopenie ako to pracuje a čo to dokáže.
Ešte dodám, že existujú rozšírenia ktoré umožňujúaj iné miešania:
GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_blend_logic_op, GL_NV_blend_square
zdrojové texty (bez jpeg.lib) a program – 250kB
25.05.2002
Multi-texturing – textúrovanie naraz z dvoch textúr. Používame dve textúrovacie jednotky. Každá pracuje s jednou textúrov. Pre každu textúru zadávame zvlášť textúrovacie koordinacie. To umožňuje používanie tzv. lightmap – textúr, ktoré vyjadrujú osvetlenie textúry. Napr. v Quake 3, keď niekto vystrelí steny okolo letiacej strely sa osvetľujú.Ďalšie použitie multi-texturingu je na bump-mapping.
Keď chceme používať multitexturing v OpenGL musíme zistiť či to grafická karta podporuje. Základné rozšírenie, ktoré vyjadruje podporu multitexturingu je GL_ARB_multitexture. Ďalšie rozšírenie, ktoré vyjadruje ako môžme textúry kombinovať je GL_ARB_texture_env_add. Medzi dalšie rozšírenia týkajúce sa multitexturingu patria:
GL_ARB_texture_env_combine – obsahuje veľa typov miešania.
GL_ARB_texture_env_dot3
zdrojové texty (s jpeg.lib) a program – 262 kB
21.04.2002
Height map – výšková map. Pomocou obrázku, ktorý vyjadruje výšku ako intenzitu farby (jas) sa kreslí terén. Keďže terén má veľa trojuholníkov a vykreslovať celý terén je pomalé urobil som to tak, aby sa vykresľovalo iba to čo je v zornom uhle.
Keďže rýchlosť vykresľovania závisí od metódy akou sa zadávajú vrcholy do OpenGL urobil som tento testovací program.
zdrojové texty a program – vyšková mapa 313 kB
09.01.2002
Kreslenie rotačných plôch : valec, kužel, guľa, jednodielny rotačný hyperboloid, anuloid, rotačny elipsoid, rotačny paraboloid, rotovaná funkcia sinus, rotovaná Bezierová krivka.
Všetky plochy sú texturované, a sú plynule osvetlené (pre každý bod je vypočítaný normalový vektor). Riadiacu krivku, t.j. krivku, ktorá rotuje je možné zadať podobne ako v programe 7.
Plochy sú animované – plynule sa meniace.
zdrojové texty a program – 111kB
05.01.2002
Pomocou programu sa dajú modelovať Fergusonové a Bézierové krivky. Fergusonova krivka je interpolačná čiara, to znamená, že prechádza všetkými uzlovými bodmi. Bézierová krivka je aproximačná čiara, ktorá sleduje tvar zadanej lomenej čiary.
zdrojové texty a program – 51kB
05.01.2002
Program nakreslí:
Bézierové krivky, kružnicu, elipsu, parabolu, hyperbolu, ortocykloidu, epicykloidu, hypocykloidu, evolventu kružnice, Lemniskátu Bernoulliho, Descartesov list, Archimedovu špirálu.
zdrojové texty a program – 58kB
05.01.2002
Všetky tieto objekty sú kreslené pomocou glu (OpenGL Utility library).
zdrojové texty a program – 99kB
05.01.2002
Display list je zoznam operacií, ktoré sa majú vykonať keď sa display list zavolá. Vykresľovanie pomocou diplay listu je rýchlejšie ako priame vykresľovanie.
zdrojové texty a program – 96kB
05.01.2002
Pre osvetlenie sú dôležité vektory kolmé na osvetľované plochy (normálové vektory). Podľa ich smeru sa vypočítavá osvetlenie. Program vykreslí osvetlenú kocku, a to dvomi spôsobmi:
Prvý (kocka v ľavo) jeden normálový vektor pre jednu stenu.
Druhý (kocka v pravo) pre každý vrchol jeden normálový vektor. Osvetlenie je lineárne vytienované po ploche kocky.
zdrojové texty a program – 95kB
05.01.2002
Po stlačení klávesy h zobrazíte Help (pomoc). To platí pre všetky programy od tohto.
zdrojové texty a program – 47kB