关于opengl光源位置的问题,请高手给个例子说明

被现实颠覆的红烧肉 2007-04-09 04:20:36
我的程序使用了gluLookAt函数来指定视角,但是在程序一开始设置的光源位置也会随着这个视角来变化。很是郁闷!!!

有没有办法来固定光源位置,请各位高手指导指导!!!

给个例子说明一下吧,谢谢!!!
...全文
631 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamesclarke 2011-05-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangci226 的回复:]

如果你在使用模型变换之前设置了光源,也就是使用MODEL_VIEW之前设置光源的话,光源就是在相机坐标系里,接下来你改变模型位置,旋转模型什么的,就可以看光照到模型上阴影的变化。

如果MODEL_VIEW变换后设置光源,光源的位置就要受到模型变换矩阵的影响,这个时候你旋转模型,移动模型,光源的位置会随着一起变化,这样就看不到光照到模型上阴影的变化。
[/Quote]

说的没错。楼主所说的跟着视点动,是因为你设置光源的程序代码位置不对。

1、在每次绘制循环代码之外设置光源,是与视点相关的,因为它在视点坐标系中;
2、在每次绘制循环代码之内,也就是在对MODEL_VIEW进行设置后,并且在glLoadIndentity之后,glFlush或glSwap之前设置,光源就是与世界坐标系相关,它就固定在世界中了。
雅诺1 2011-04-25
  • 打赏
  • 举报
回复
glPushMatrix
peng_weida 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangci226 的回复:]
如果你在使用模型变换之前设置了光源,也就是使用MODEL_VIEW之前设置光源的话,光源就是在相机坐标系里,接下来你改变模型位置,旋转模型什么的,就可以看光照到模型上阴影的变化。

如果MODEL_VIEW变换后设置光源,光源的位置就要受到模型变换矩阵的影响,这个时候你旋转模型,移动模型,光源的位置会随着一起变化,这样就看不到光照到模型上阴影的变化。
[/Quote]
学习了
caojianhua_nanjing 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangci226 的回复:]

如果你在使用模型变换之前设置了光源,也就是使用MODEL_VIEW之前设置光源的话,光源就是在相机坐标系里,接下来你改变模型位置,旋转模型什么的,就可以看光照到模型上阴影的变化。

如果MODEL_VIEW变换后设置光源,光源的位置就要受到模型变换矩阵的影响,这个时候你旋转模型,移动模型,光源的位置会随着一起变化,这样就看不到光照到模型上阴影的变化。
[/Quote]


貌似行不通阿。。。还是会随着模型的旋转 光源位置也会跟着动
zombiecry 2009-12-19
  • 打赏
  • 举报
回复
光源的位置也会乘以当前模型视图矩阵,所以要想光源位置不变最好先指定光源位置再绘制物体。
张赐 2009-12-10
  • 打赏
  • 举报
回复
如果你在使用模型变换之前设置了光源,也就是使用MODEL_VIEW之前设置光源的话,光源就是在相机坐标系里,接下来你改变模型位置,旋转模型什么的,就可以看光照到模型上阴影的变化。

如果MODEL_VIEW变换后设置光源,光源的位置就要受到模型变换矩阵的影响,这个时候你旋转模型,移动模型,光源的位置会随着一起变化,这样就看不到光照到模型上阴影的变化。
liangyan86929 2009-12-10
  • 打赏
  • 举报
回复
设置了视点模型变换和投影视口变换后再调用glLoadIdentity();之后设置光源position
Enigmaya 2007-04-15
  • 打赏
  • 举报
回复
每次绘制的时候 重新设置position

opengl宝典,和红皮书都有说道这个问题。找本看看。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧