2011-09-20 67 views
5

我很难理解OpenGL透视图。我已经阅读了大量的信息,但它并没有帮助我尝试实现我所追求的目标。这是确保我的3D场景充满每个Android设备上的整个屏幕。使用OpenGL ES进行任何分辨率的视口边界

为了测试这个,我将在3D空间中绘制一个四边形,最终应该触及每个角落,填满整个设备的屏幕。然后,我可以使用这个四边形,或者实际上它的坐标来指定一个特定Z距离的边界框,我可以使用它来放置几何图形并确保填充我的屏幕。当屏幕调整大小,或者我要在另一个屏幕分辨率上运行它时,我会重新计算此边界框和几何图形。我不是在谈论静态几何,而是比如说我想用球填满屏幕,无论多大或多少球都没有关系,唯一重要的是屏幕被填满,没有多余的可见截锥体外的球。

enter image description here

  • 据我理解你指定绑定实际像素值的视锥的边界视时。我知道你实际上可以用你的窗口像素匹配3D几何位置的方式来设置正交视图,但我不确定这是如何在透视视图中工作的。
  • 这里我假设视口宽度和高度被映射到nearZ。所以当一个球在Z = 1f的时候它的原始尺寸是
  • 当把球移动到屏幕的方向上,沿着farZ的方向时,球将被缩小以便透视图起作用。所以例如Z = 51f的球会在我的屏幕上看起来更小,我需要更多的球来填满整个屏幕。
  • 现在为了做到这一点,我正在寻找紫色的边界
  • 其实我需要这些边界来填充整个屏幕上不同的平截头体大小(宽x高),而平截头球的角度和Z距离总是相同
  • 我想我可以用trig来计算这些紫色边界(请参阅蓝色三角形注)
  • 我是否正确标记了平截头角,它是平截头体的垂直角?
  • 有人可以详细说明绿色1f和-1f值,因为我似乎已经读过关于它的一些信息吗?看起来像一些用于调整视锥内几何尺寸的标量?

我实际上希望能够针对任何Android设备的任何分辨率/窗口,在3D空间内针对视口边界编程位置几何。

注意:我有一个闪光背景,它使用任意分辨率的已知宽度x高度的舞台(可视区域),使用绝对测量或百分比测量可轻松定位/缩放资产。我想我正试图弄清楚这个系统如何适用于OpenGL的透视图。

回答

相关问题