游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: nFox

请教一个关于OpenGl中光源移动的问题。

[复制链接]

2

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-8-19 14:58:00 | 显示全部楼层

Re: Re:请教一个关于OpenGl中光源移动的问题。

nFox: Re:请教一个关于OpenGl中光源移动的问题。

http://www.azure.com.cn/article.asp?id=103
可是那上面第一个例子中glLookAt()不是在glLightfv后面调用么...

为什么光源会跟着视点移动而其他物体不会呢?

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-8-19 20:48:00 | 显示全部楼层

Re:请教一个关于OpenGl中光源移动的问题。

我终于理解了......
之前因为没有弄清楚光源位置是以视觉坐标存储的..所以老是弄不懂

谢谢各位的解答~~

2

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-8-20 00:22:00 | 显示全部楼层

Re:请教一个关于OpenGl中光源移动的问题。

你好象还是没有理解
你在gluLookAt()之前调glLightfv,所以没有变换到view space
你可以画2个物体,一个在glLookAt()之前画,一个在后面画,那个之前画的物体就会“跟着视点移动”

你最好找本图形学方面的书看看

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-8-20 09:19:00 | 显示全部楼层

Re:请教一个关于OpenGl中光源移动的问题。

我想是不是这样:
glLoadIdentity();
float position[]={0.0f, 0.0f, 0.0f, 1.0f};
glLightfv(...., position);
gluLookAt(...);
经过模型视图转换, 光源的视觉坐标是(0.0f, 0.0f, 0.0f); 所以无论视点怎么移动, 光源相对于视点的位置都是(0.0f, 0.0f, 0.0f),所以光源会随视点一起移动。

6

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2007-8-29 01:25:00 | 显示全部楼层

Re:请教一个关于OpenGl中光源移动的问题。

问题很简单啊,你们搞复杂了,想想你们是如何控制场景中的几何体运动的? 在你绘制场景的代码中改变灯光位置的(x,y,z)坐标啊,比如
float LIGHTPOS_X,LIGHTPOS_Y,LIGHTPOS_Z;
float lightposition[]={LIGHT_X,LIGHTPOS_Y,LIGHTPOS_Z};
void drawscane()
{
    LIGHTPOS_X++;
//LIGHTPOS_Y+=10;
//LIGHTPOS_Z+=5;

}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 03:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表