android - OpenGL (ES) -- 截锥体和正视体有什么区别?

标签 android graphics opengl-es

当我使用具有相同参数的它们中的每一个时,我注意到的唯一区别是“相机”与对象的距离有多近。这有什么区别,对于主要是 2D 的游戏来说,哪个更受欢迎?

最佳答案

我不同意 LeffelMania 的观点,虽然他的回答已经被接受,但我想再次解释一下什么是截锥体以及正交投影和透视投影之间的区别。

平截头体是没有顶部形状的 3D 对象的金字塔(在由 zNear 和 zFar 平面之间的空间定义的链接中)。

view frustum

截头体用于确定相机可以看到的内容。所有在相机视锥体内或与相机视锥体相交的东西都必须渲染,其余的都可以忽略。

因为截锥体是一种难以进行相交检查的形状,所以通常会构造一个矩阵变换,以便将视锥体转换为立方体。此矩阵变换也应用于所有场景对象,因此我们现在可以进行简单的“它是否与立方体相交”检查。这称为 canonical view frustum ( see more info here )

现在关于透视与正交投影。在图片中,您可以看到相机或投影中心 (COP)。在透视投影中,COP 位于近平面附近。来自远平面上所有位置的光线都指向 COP。在这些光线与近平面(又名视口(viewport))相交的地方,根据光线击中的近平面最接近的事物的颜色对像素进行着色。透视投影导致(多个)消失点,距离相机越远的物体越小,世界上的平行线在图片上不一定平行。

在正交投影中,COP 无限远,因此光线几乎相互平行。没有消失点,更远的物体没有画得更小,世界上的平行线在画面上是平行的。

关于android - OpenGL (ES) -- 截锥体和正视体有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835991/

相关文章:

android - 将触摸区域限制为 libgdx 中的纹理区域

iphone - 如何使用 OpenGL ES 对 UIImage 应用变形?

opengl - OpenGL中glActiveTexture和GL_TEXTURE0的作用是什么?

android - 如果您受邀共享 Google Play Android Developer Console,您是否也需要付费?

java - 'finally'如何阻止android运行

android - Eclipse "Java heap space"错误,Eclipse 没有响应

Android:阻止普通用户访问安全模式?

Java - 包含/排除的简单平面

java - 如何在 Java 中为笑脸画嘴

regex - 二维中的正则表达式是否有任何好的/有趣的类比?