OpenGL ES 2中的投影和翻译

问题描述 投票:1回答:1

我有一个关于OpenGL ES 2中的转换的问题。我正在使用三角形扇形绘制一个矩形,如下图所示。原点位于其中心,而其宽度和高度分别为0.62。我假设这些尺寸与模型空间有关。然而,为了保持平板电脑或手机上的高度和宽度的比例,必须进行考虑装置长度的比例(再次宽度和高度)的投影。这就是为什么我调用orthoM(projectionMatrix, 0, -aspectRatio, aspectRatio, -1f, 1f, -1f, 1f);and的aspectRatio是由float aspectRatio = (float) width / (float) height给出的。这最终导致下图所示的矩形。现在,我想将矩形沿x轴移动到屏幕边框。但是,我无法做出正确的计算,要么我把它移动得太少或太多。那么计算怎么样?更进一步,我对模型空间中给出的尺寸有点困惑。那里可以达到的最大值和最小值是多少?

非常感谢!

enter image description here

android opengl-es-2.0
1个回答
0
投票

矩形的顶点位置在世界空间中。这样做的方法是获取您想要移动的屏幕坐标,然后将它们转换为世界空间。

例如:

如果屏幕为300 x 200,并且您位于屏幕空间中世界空间(或150,100)的中心0,0)。你想翻译成300。

因此,转换应该是屏幕位置到标准化设备坐标,然后乘以inverseOf(投影矩阵*视图矩阵)并除以w分量。

这里为鼠标解释它最终是相同的,只是你知道z,因为它是你已经用于矩形的那个(如果它在x,y平面上):OpenGL Math - Projecting Screen space to World space coords

© www.soinside.com 2019 - 2024. All rights reserved.