OpenGL中光源的三种移动区别

1.光源不动:需要在设置完视图模型变换之后。然后再设置光源的位置并且开启。

伪代码如下:

glmatrixmode(gl_projection);

glloadidentity();

xxxxxxxxxx;

glmatrixmode(gl_modelview);

glloadidentity();

glfloat light_position []={1.0,1.0,1.0,1.0};//

glightfv(gl_light0,gl_position,light_position);//这两句代码在最i后才出现

2.独立移动光源:

(1),在如方法1中最后再设置光源的移动。(2)在模型矩阵变化过程中,同时来考虑光源的移动。技巧就是巧妙运用glpushmatrix()和glpopmatrix();

伪代码如下:

glfloat light_position []={1.0,1.0,1.0,1.0};

glupushmatrix();

glulookat();

glupshmatrix();

glrotated();

gllightfv(gl_light0,gl_position,light_position);//注意gllightfv ()函数出现得位置
glupopmatrix();

然后在进行其他模型的操作。

glflush();

3.光源和观察点一起移动:

方法就是在进行视图变换之前设置光源位置

,接着进行视图变换,就会以相同的方式同时影响光源和观察点。记住光源是以视觉坐标的形式存储的。

伪代码:

glfloat light_position []={1.0,1.0,1.0,1.0};

glightfv(gl_light0,gl_position,light_position);//注意这两行代码出现在视图设置之前。此时摄像机和视点的相对位置就固定了!

glviewport();

glmatrixmode(gl_projection);

glloadidenty();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值