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
*/
现在的问题是什么也显示不到,请问是什么原因?
谢谢