Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OpenGL使对象显示得更近,而不仅仅是剪裁_Java_Android_Opengl Es_Frustum - Fatal编程技术网

Java OpenGL使对象显示得更近,而不仅仅是剪裁

Java OpenGL使对象显示得更近,而不仅仅是剪裁,java,android,opengl-es,frustum,Java,Android,Opengl Es,Frustum,在openGles中,减少平面附近的截锥体(如您所见)会使对象看起来更近。我来自3d,例如在Vray中,更改近剪裁平面不会修改距离,只会剪裁一些几何体 为什么更改平截头体的近平面会使对象看起来更近?我假设更改平截头体具有所描述的效果 所以根据文档,当你调用这个函数 void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble fa

在openGles中,减少平面附近的截锥体(如您所见)会使对象看起来更近。我来自3d,例如在Vray中,更改近剪裁平面不会修改距离,只会剪裁一些几何体


为什么更改平截头体的近平面会使对象看起来更近?

我假设更改平截头体具有所描述的效果

所以根据文档,当你调用这个函数

void glFrustum(GLdouble  left,  GLdouble  right,  GLdouble  bottom,  GLdouble  top,  GLdouble  nearVal,  GLdouble  farVal);
您要做的是将当前投影矩阵乘以根据参数中指定的值构建的矩阵

如果你看看这个矩阵是如何构建的,你会注意到它非常类似于一个缩放矩阵。3,3处的元素(在文档页面中称为
C
)等于
-(远+近)/(远-近)
。这意味着,如果您将
减少到接近
的位置,并保持
far
不变,
C
将接近于零。当矩阵相乘发生时,这就像Z坐标的缩小


因此,当您减小“近”值时,顶点将显示为与Z坐标成比例地靠近原点。当然,这一减少也会对X和Y坐标产生影响,并且会使对象看起来更靠近中心“压缩”。我想这种效果更符合我们通过使近剪裁平面更靠近视点而直观地期望的效果。

更改到近剪裁平面的距离不会使“对象”看起来更近或更远。所以问题是如果它有这种效果,你会改变什么。没有更多细节,没有人能告诉你。@derhass:我的猜测是,OP保持左、右、上、下值不变,因此改变近剪裁平面距离会改变视野。@DatenWalf:这也是我的第一个猜测,但减小近平面距离并保持其他参数会增加视野,因此,对象应该看起来更小。