1

我有一个 Qt/openGL 应用程序,我在屏幕上显示 2D 元素,其坐标取决于 3D 对象坐标。没关系,当我移动我的 3D 世界时,我的 2D 元素会很好地跟随。现在,我想在 Y 屏幕轴上移动我的 2D 元素,以便在 openGL 中更改我的 3D 对象的 Y 坐标。所以 3D 对象的 X 和 Z 不会改变,只会改变它的高度 Y。

怎么做?

我尝试使用 gluUnproject 和新的 2D 坐标,但是这个函数返回新的 (X1,Y1,Z1),你不能告诉它“我已经知道 X 和 Z,只给我 Y1 给出那些 X 和 Z”。如果,我将返回的 Y1 与我的 X 和 Z 一起使用,当然,它不起作用,因为如果我 gluProject(X,Y1,Z) 它不会给我我的 2D 点。

我也尝试过:我的 3D 对象有两个点 (X,Y,Z) 和 (X,Y+1,Z)。我在这两个点上使用 gluProject,这给了我 (winX,winY,winZ) 和 (winX1,winY1,winZ1)(当然是 winX=winX1)。我推断出 deltaY=abs(winY-winY1) 相当于我的两个 3D 点之间的 Y 轴上 1 个 openGL 的像素单位。它运作良好,但前提是我不做太大的旋转,所以这不是一个好的解决方案。

有任何想法吗?

4

0 回答 0