游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8257|回复: 14

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

[复制链接]

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-8-17 01:03:00 | 显示全部楼层 |阅读模式
OpenGl编程指南中说“指定光源位置或方向时, 会根据当前模型视图矩阵进行变换。 通过修改模型视图矩阵可以操纵光源的位置。”

后一句是否说修改模型视图矩阵会影响 以前已经设置好的光源的位置或方向?

如在初始化中设置光源位置。  但显示函数中改变模型视图矩阵而不设置光源位置, 会不会影响光源的位置?

我试了下:
//=========================================
//           1
        glLoadIdentity();
        glTranslatef(0.0f, 0.0f, -5.0f);
        glLightfv(GL_LIGHT1, GL_POSITION, position);
//==========================================
//           2
        glLoadIdentity();       
           glLightfv(GL_LIGHT1, GL_POSITION, position);
        glTranslatef(0.0f, 0.0f, -5.0f);
上面两段代码的结果是不同的, 好像后面调用的函数没有改变光源位置。


15

主题

202

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
QQ
发表于 2007-8-17 10:09:00 | 显示全部楼层

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

我觉得应该是相反的.

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-8-17 14:59:00 | 显示全部楼层

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

请问: “可以通过修改模型视图矩阵的内容来操纵光源的位置和方向”怎么理解?

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-8-18 04:58:00 | 显示全部楼层

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

http://www.azure.com.cn/article.asp?id=103

2

主题

25

帖子

25

积分

注册会员

Rank: 2

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

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

是的,第2个乘了个单位矩阵

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-8-18 15:43:00 | 显示全部楼层

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

void initGL()
{
float lightposition[]={200.0f, 200.0f, 200.0f, 1.0f};
glLightfv(GL_LIGHT1, GL_POSITION, lightposition);
............................................
}

void DrawScene()
{
.............................
glLoadIdentity();
gluLookAt(..........);
draw model
}

请问这样光源的位置为什么是随着观察方向的改变而改变的?  gluLookAt(..);后面的 draw model代码中还可能会改变模型视图矩阵, 光源位置不是会改变么?

2

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-8-18 16:26:00 | 显示全部楼层

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

gluLookAt(..........);
之后要再调用
glLightfv(GL_LIGHT1, GL_POSITION, lightposition);
才会改变

1

主题

9

帖子

9

积分

新手上路

Rank: 1

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

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

那么后面对模型视图矩阵的操作不会影响光源位置方向么?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-8-19 12:42:00 | 显示全部楼层

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

nFox: 请教一个关于OpenGl中光源移动的问题。
glLoadIdentity();
glLightfv(GL_LIGHT1, GL_POSITION, position);
glTranslatef(0.0f, 0.0f, -5.0f);

都已经 glLightfv 完了,还 glTranslatef 有什么用?
glTranslatef 后面的东西才会有坐标改变的。

1

主题

9

帖子

9

积分

新手上路

Rank: 1

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

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

http://www.azure.com.cn/article.asp?id=103
可是那上面第一个例子中glLookAt()不是在glLightfv后面调用么。。为什么光源会随观察点改变而改变。。。

and 谢谢上面各位的耐心解答。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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