游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2538|回复: 6

求助,关于opengl的坐标变换

[复制链接]

6

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2005-11-17 11:53:00 | 显示全部楼层 |阅读模式
我分别创建了一个MFC和一个Win32 console Application的工程,一些初始的必要设置都是一样的,目的是在屏幕上用鼠标随手画直线。由于一开始,直线并非出现在鼠标点击之处,后经一些好心人的指点,用了gluUnProject()逆变换,可是为什么在Win32 console Application工程下的程序可以正确实现?而在MFC下的则干脆连画都画不出来了?
是不是因为这两种工程下的窗口还有着本身的区别呢?请高手指点!!!谢谢!要怎么样解决MFC下的opengl物体与屏幕坐标的转换呢?

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2005-11-18 08:30:00 | 显示全部楼层

Re:求助,关于opengl的坐标变换

在MFC下肯定可以做到,
如何做就自已去找

www.pudn.com

6

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2005-11-18 10:03:00 | 显示全部楼层

Re:求助,关于opengl的坐标变换

好像是有,可惜我还没有下载权限啊!唉~~谢谢你!

3

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2005-11-18 12:47:00 | 显示全部楼层

Re: 求助,关于opengl的坐标变换

我不太懂你的意思,如果是问3D坐标最后怎么变到2D坐标的话,我可以给你解释一下:整个过程大概是这样的:模型变换(就是translated,rotated,scaled)->观察变换(世界坐标系->观察坐标系,就是我们选择好观察点,从哪个位置观察场景,一般我们用gluLookAt命令)->投影变换(平行投影还是透视投影,把视见体里的内容投影到投影面上,在这里3D坐标就转化为2D坐标)->视区变换(投影面映射到视区)这就是opengl的坐标变换过程。至于代码一般是在OnSize()函数里添加坐标变换:
......
glMatrixMode(GL_PROJECTION);        // 投影变换
glLoadIdentity();
glOrtho(-5.0,5.0,-3.1,3.1,-10.0,10.0);// 平行投影,如果你要画2D的话,用glOrtho2D()
gluPerspective(60.0,gldAspect,2.0,20.0);//透视投影

glMatrixMode(GL_MODELVIEW);        // 操作模型观察变换
glLoadIdentity();

glViewport(0, 0, cx, cy);//视区变换

不知道对你有没有帮助~呵呵 [em5]

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2005-11-18 18:31:00 | 显示全部楼层

Re:求助,关于opengl的坐标变换

MFC下和win32下gl坐标没区别!检自己的初始化代码

13

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2005-11-19 00:00:00 | 显示全部楼层

Re:求助,关于opengl的坐标变换

glOrtho()

然后再glMatrixMode(GL_PROJECTION)

6

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2005-11-22 11:20:00 | 显示全部楼层

Re:求助,关于opengl的坐标变换

呵呵,谢谢大家了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 18:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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