从相机在Android中OpenGl中的对象看多远?

时间:2015-06-02 11:33:32

标签: android opengl-es

我是OpenGL android的新手,但知道一些基本概念,如投影和相机视图。 我们可以改变相机的位置和方向。但是,当我将相机移离物体时,物体会消失。 例如:下面是我的相机视图和矩形的坐标。

Matrix.setLookAtM(mViewMatrix, 0, 0, 0, -7, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

float rectCoords[] = {  
        -0.5f, 0.5f, 0.0f,
        -0.5f, -0.5f, 0.0f,
        0.5f, 0.5f, 0.0f,
        0.5f, -0.5f, 0.0f,
};

如果我是正确的,相机距离XY平面上的矩形7个单位,相机与负z轴上的矩形相距7个单位,朝向原点,其顶部指向正y轴。

当我将-7.0f(即相机的z坐标)更改为-7.1f(即我将相机移离矩形)时,矩形消失,表示相机可以看到的最大距离是它有7个单位。纠正我,如果我错了,如果没有,那我怎么能看到超过7个单位从相机可见的对象

2 个答案:

答案 0 :(得分:1)

基于OpenGL中的相机距离(以及一般的3D图形)中物体的消失点是“远平面距离”。它是view frustum定义的一部分,Why does OpenGL have a far clipping plane, and what idioms are used to deal with this?是几何中的通用术语,用于描述3D观看体积。请参阅此问题(glClipPlane)以获取有关远平面存在的原因的解释。大多数固定功能渲染管道还添加了添加用户定义的剪裁平面(包括OpenGL' s here)的功能,因此远平面可能不是基于距离消失的对象的唯一解释。可编程着色器管道通常不遵守用户定义的剪裁平面,因此最近它们的使用不太受欢迎。

远飞机距离'是形成投影矩阵的等式的一部分。有关计算投影矩阵及其用法的详细说明,请参阅http://dev.maxmind.com/geoip/legacy/codes/country_latlon/。您还没有显示投影矩阵,但可能是远平面直接或间接定义为7.0

答案 1 :(得分:0)

兄弟!如果你的代码中有myReshape函数,,,只需转到gluperspective()函数,即增加最后一个值...你的问题将会解决。

ex:gluPerspective (60, (GLfloat)w / (GLfloat)h, 0.1, 500.0);

将500.0增加至1000.0