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
*/

现在的问题是什么也显示不到,请问是什么原因?
谢谢
...全文
2695 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
先用透时投影看看,透视投影比较好理解,首先排除其它因素。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧