Opengl:根据 Z 的值,将四边形拟合到屏幕上

标签 opengl coordinates screen

问题的简短版本:

我会放一个四边形。我知道窗口坐标中屏幕的宽度和高度,我知道 3D 中四边形的 Z 坐标。我知道FOVY,我知道方面。四边形将沿 Z 轴放置,我的相机不会移动(放置在 0、0、0)。我想找出恰好适合我的屏幕的四边形 IN 3D COORDINATES 的宽度和高度。

问题的长版:

我想在指定的偏移 Z 处沿 Z 轴放置一个四边形,我想找出将完全填充整个屏幕的四边形的宽度和高度。

我曾经在 gamedev.net 上发表过一篇文章,其中使用了类似于以下的公式:

*dist = Z * tan ( FOV/2 )*

现在我再也找不到那个帖子了!虽然相似,但还是有所不同,因为我记得在那个工作公式中,它们确实使用了 screenWidth 和 screenHeight,它们是窗口坐标中屏幕的宽度和高度。

我不太熟悉视锥体、fov 和方面等概念,所以我无法自己计算公式。此外,我确定我不需要 gluUnproject (我试过了,但结果还差得很远)。这不是一些gl调用,它只是一个数学公式,可以找出可以填充整个屏幕的3D空间中的宽度和高度,IF Z偏移,窗口坐标中的宽度和窗口坐标中的高度是已知的。

最佳答案

假设在 Y-Z 平面中测量 FOV,则:
Height = Z * tan(fov/2)width = height * aspect_ratio

关于Opengl:根据 Z 的值,将四边形拟合到屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590588/

相关文章:

ios - 使用 CLLocation 计算两个坐标之间的距离在两部手机上不同吗?

android - geo :latitude, longitude?z=zoom in android 带我到我当前的位置

Java - 平均线性图

ios - SplitViewController 只显示白屏

c++ - wglCreateContextAttribsARB 在 NVIDIA 硬件上失败

c++ - OpenGL - 绘制存储在 VBO 中的大量信息

opengl - OpenCL - 压缩的 OpenGL 纹理

cocoa - 如何使用 AVFoundation 从视频中获取 openGL 纹理?

德尔福控制台 XE7 清屏

html - 位置 2 箭头固定在 HTML 页面容器的外部,带有 CSS - 屏幕尺寸