opengl中相机的坐标是多少

opengl中相机的坐标是多少,opengl,Opengl,我想确定在opengl中摄像机的坐标是多少。 我只是在窗口中画一个球体,代码如下: glutSolidSphere (1.0, 20, 16); //draw a sphere, its radius is 1 //I use glOrtho to set the x,y coordinate //1 glOrtho(-1,1,-1,1,-0.99,-1.0); //2 glOrtho(-1,1,-1,1,-1.0,-0.99); //3 glOrtho(-1,1,-1,1,1.0,0.9

我想确定在opengl中摄像机的坐标是多少。 我只是在窗口中画一个球体,代码如下:

glutSolidSphere (1.0, 20, 16); //draw a sphere, its radius is 1

//I use glOrtho to set the x,y coordinate

//1
glOrtho(-1,1,-1,1,-0.99,-1.0);

//2
glOrtho(-1,1,-1,1,-1.0,-0.99);
//3
glOrtho(-1,1,-1,1,1.0,0.99);

//5
glOrtho(-1,1,-1,1,1.0,1.0);
//6
glOrtho(-1,1,-1,1,10,10);
//7
glOrtho(-1,1,-1,1,0.0,0.0);

//8
glOrtho(-1,1,-1,1,-0.5,0.5);

//9
//glOrtho(-1,1,-1,1,0.0,0.1);
在案例1,2,3,4中,图片如下所示:

在第5、6、7种情况下,球体大小相同 窗边

在案例8中,图片如下所示:

根据格洛托的描述:

void glOrtho(   GLdouble    left,
    GLdouble    right,
    GLdouble    bottom,
    GLdouble    top,
    GLdouble    nearVal,
    GLdouble    farVal);
假设摄像机的坐标在opengl中是固定的。 从案例1来看,摄像机似乎处于(0,0,0)

1) 但是如果是这样的话,案例2、3、4怎么可能与案例1相同呢

2) 案例5、6、7是如何产生的


3) 案例8是如何产生的?

您似乎混淆了几件事

从概念上讲,默认的
glOrtho
glFrustum()/gluPerspecitve()
函数假定相机位于眼空间原点,并朝负
z
方向观看。如果将ModelView矩阵保留为idendity(默认值),则表示对象空间与眼睛空间相同,因此直接在眼睛空间中绘制


OpenGL定义了一个三维观察体积。这意味着不仅存在受视口/窗口大小限制的二维矩形,还存在近剪裁平面和远剪裁平面。该观察体积被描述为一个轴对齐的立方体
-1“摄像机坐标”取决于您的ModelView矩阵。您可以使用glLookAt来选择“查找位置”。投影矩阵不影响相机的位置,只影响事物的显示方式。1)在情况3中,近平面如何能比远平面远?2) 在案例8中,如果眼睛处于(0,0,0),它怎么能看到介于-0.5和0.5之间的东西?将近平面设置在远平面的后面只是翻转前面和后面的东西。正如我所说,您可以指定查看体积,以包括“摄影机”后面的部分。对于正射投影来说,甚至存在类似照相机的东西的解释完全是误导。对不起,我还是有点困惑。在案例9中,如果我们将“近平面”设置为0,则球体的一半会被剪裁掉,如果从正面观察,我认为什么也看不到。但事实并非如此。我错在哪里?好像我忘了opengl中有正面和背面,如果切出一个半球,它的内侧是可用的。所以我们仍然可以看到它。在我添加“glEnable(GL_CULL_FACE);glCullFace(GL_BACK);”之后,什么都看不到。还有一个问题,在案例8中,半径似乎远小于0.5,我觉得这有点奇怪。