OpenGL中关于glOrtho的问题,高手进~~

blldw 2007-04-15 10:54:35
这个问题一晚上了,没解决:
首先先说一下我对正投影视图的理解:
要想物体显示在屏幕上,必须保证两点:
1、物体各个顶点的坐标值经过坐标变换后必须介于调用glOrtho()函数中提供参数的范围内,即对于任何物体点的坐标x, y, z在经过变换后需满足 left <= x' <= right, bottom <= y' <= top, zNear <= z' <= zFar;
2、单单第一点还不够,同时必须保证摄像机(眼睛)在朝glOrtho定义的立体空间中看,不然眼睛朝别的地方看,肯定不会显示在屏幕上了,可以调用gluLookAt设置眼睛的看向。
只要保证以上两点,就能是出于立体空间中的定点显示在屏幕上了,前提是glViewport的调用正常,一般是glViewport(0, 0, width, height),其中width和height分别为屏幕的宽度和高度,以像素为单位。
以上是我的理解。

现在我的具体问题如下,从一个文件中读入点云文件,在读入的过程中取得所有点云的包围盒,在具体的Render的时候代码如下:
/*
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(m_pbox->GetXMin(), m_pbox->GetXMax, m_pbox->GetYMin(), m_pbox->GetYMax(), m_pbox->GetZMin(), m_pbox->GetZMax());
/*m_pbox为指向包围盒的指针,GetXMin为取得最小的x值*/
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt((m_pbox->GetXMin() + m_pbox->GetXMax()) / 2.0,
(m_pbox->GetYMin() + m_pbox->GetYMax()) / 2.0,
m_pbox->GetZMax() + 10.0,
(m_pbox->GetXMin() + m_pbox->GetXMax()) / 2.0,
(m_pbox->GetYMin() + m_pbox->GetYMax()) / 2.0,
(m_pbox->GetZMin() + m_pbox->GetZMax()) / 2.0,
0.0, 1.0, 0.0);
/*即将摄像机移动到正视于立体空间外*/
// render point clound vertext
*/

现在的问题是什么也显示不到,请问是什么原因?
谢谢
...全文
2558 点赞 收藏 3
写回复
3 条回复
Benjamin_Hua 2007年05月09日
http://www.physdev.com/phpbb/cms_view_article.php?aid=25
以上文章,看看对你是否有帮助。

我个人认为,你用了glOrtho(),就不必再用gluLookAt()了。默认眼睛是在原点,看向Z的负轴
回复 点赞
liuxiaomingqiong 2007年05月09日
你还没有设置视图函数glViewport,试图函数的设置要和glOrtho的设置保持形状的相似
我的QQ38230896
回复 点赞
syy64 2007年04月16日
先用透时投影看看,透视投影比较好理解,首先排除其它因素。
回复 点赞
发动态
发帖子
图形处理/算法
创建于2007-09-28

7613

社区成员

5.0w+

社区内容

VC/MFC 图形处理/算法
社区公告
暂无公告