Dobry den,
mam nasledujici problem:
svetlo jsem umistil nekam "ke stropu" doprostred sceny
pri kazdem Render() hned po glLoadIdentity() MODEL_VIEW matice jej znovu umistuji na stejnou pozici
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
presto pokud se otacim ve scene obraz se ztmavuje a zesvetluje a na obektech lze spatrit zcela jasne jak se svetlo pohybuje spolecne se mnou (kamerou)
co delam spatne?
dekuji za odpoved
ps. pouzivam ve scene take masking (pistolka v Ortho() modu ) a pokud zacnu pracovat se svelem ona pruhlednost kolem pistolky je jaksi mene pruhledna, pouze u svetla "jednicka na konci->bodove svetlo" je pruhlednost vpohode
V podstate ste napisal presny navod na to, ako nastavit svetlo, ktore sa pohybuje spolu s pozorovatelom (co je presny opak vasej snahy :).
Pohyb po scene si mozete predstavit ako posun a rotaciu sceny vzhladom na staticku poziciu (a smer pohladu) pozorovatela. V OpenGL sa tento nachadza v pociatku suradnej sustavy a pozera sa v zapornom smere osi Z.
Ak sa pozicia svetla nastavuje hned po resetovani modelview matice, osvetli vykreslenu scenu vzdy z rovnakej pozicie. Ale pozor! Rovnakej nie vzhladom na scenu, ale vzhladom na pociatok suradnej sustavy (a teda aj vzhladom na pozorovatela).
Ak chcete mat svetlo staticke vzhladom ku scene a nie ku pozorovatelovi, nastavte jeho poziciu v case, ked modelview matica obsahuje transformaciu, ktora sa aplikuje na vykreslovanu scenu. Bezne je to napriklad tesne predtym, nez zacnete scenu skutocne vykreslovat.