游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3424|回复: 5

gluPerspective()疑问

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-12-17 16:53:00 | 显示全部楼层 |阅读模式
我是不是可以用glTranslate()函数来改变视点坐标呢? [em1] [em1] [em1]

5

主题

17

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2005-1-10 16:52:00 | 显示全部楼层

Re:gluPerspective()疑问

不可以!
不过在glPushMatrix()与glPopMatrix之间可以改变相对坐标以实现动画!

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-1-10 20:02:00 | 显示全部楼层

Re:gluPerspective()疑问

glTranslate()改变的是MODEL_VIEW_MATRIX
gluPerspective()改变的是PROJECTION_MATRIX
所以分开来思考啦

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-1-10 20:17:00 | 显示全部楼层

Re:gluPerspective()疑问

说错了

你说视点坐标啊
我就理解成glulookat的前三个参数罗

那实际上是可以的,但是并不推荐
因为图形流水线里面,view变换和model变换是分开的俩种变换

这也是为什么我们总是在display里先作gluloadidentity,然后glulookat,在后来,就不再用glulookat了,因为glullookat做了view变换,下面要做model变换了

从命名上可以看出,model变换和view变换在ogl里操作同一个matrix,就是model_view_matrix

所以你说的确实可以
比如glulookat(0,0,-5,0,0,0,0,1,0)
和gltranslatef(0,0,5)对model_view_matrix的影响是一样的

另外glulookat本身就是这么实现的,所以它不是一个核心涵数,而是一个应用库涵数呀

但是你不好好计算的话,会发生不可预知的后果哦

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2005-1-10 20:31:00 | 显示全部楼层

Re:gluPerspective()疑问

glTranslate可以在逻辑上改变视点坐标。比如说,你Loadidentity() glTranslatef(0.0,0.0,-1.0); DrawSth()是在0.0,0.0,-1.0处画东西。那么逻辑上你可以认为是把眼睛移动到了0.0,0.0,1.0处,在坐标原点画东西……

对于流水线楼上解释比较完整,不罗嗦了……

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2005-1-10 20:37:00 | 显示全部楼层

Re:gluPerspective()疑问

model和view的确是分开的变换。但是一般来说,在model_view之后进行lighting等计算比在model之后计算更加有效。所以一般就组合成了一个矩阵model_view。但其实是分开的
先进行MODEL变换,把物体坐标变成世界坐标,然后再VIEW变换,把眼睛移动到坐标原点……
在OPENGL里这两个变换分不大清楚……
比如glTranslate,DrawSth。个人意见,这个Translate应该是一个MODEL STRANSFORM……
个人意见。仅供参考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 01:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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