gpt4 book ai didi

android - 使用 OpenGL ES 的任何分辨率的视口(viewport)边界

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:53 26 4
gpt4 key购买 nike

我在理解 OpenGL 透视图时遇到困难。我已经阅读了大量信息,但是它并没有帮助我实现我所追求的目标。这确保我的 3d 场景在每台 Android 设备上填满整个屏幕。

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

enter image description here

  • 据我所知,在指定视口(viewport)时,您实际上是将像素值绑定(bind)到视锥体的边界。我知道您实际上可以按照窗口像素与 3d 几何位置匹配的方式设置正交 View ,但我不确定这在透视 View 中是如何工作的。
  • 这里我假设视口(viewport)的宽度和高度映射到 nearZ。所以当一个球在 Z=1f 时它有它的原始大小
  • 当将球移入屏幕并朝 farZ 方向移动时,球会按比例缩小以使透视效果正常。因此,例如 Z=51f 的球在我的屏幕上会显得更小,我需要更多的球来填满整个屏幕。
  • 现在为了这样做,我正在寻找紫色边界
  • 实际上我需要这些边界来填充不同截头体尺寸(宽 x 高)的整个屏幕,而球的截头体角度和 Z 距离始终相同
  • 我想我可以使用三角函数来计算这些紫色边界(见蓝色三角形注释)
  • 我是否正确标记了截锥体角度,它是截锥体的垂直角?
  • 有人可以详细说明绿色 1f 和 -1f 值吗,因为我似乎已经读过一些相关内容?似乎是一些标量,用于调整平截头体中几何体的大小?

我实际上希望能够在任意 Android 设备的任意分辨率/窗口中以编程方式将几何图形定位在 3d 空间内的视口(viewport)边界上。

注意:我有一个 Flash 背景,它使用一个已知宽度 x 高度的舞台(可视区域),在任何分辨率下都可以使用绝对测量值或百分比测量值轻松定位/缩放 Assets 。我想我是想弄清楚这个系统如何应用于 OpenGL 的透视图。

最佳答案

我猜 this post using gluUnproject回答问题。

关于android - 使用 OpenGL ES 的任何分辨率的视口(viewport)边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com