【发布时间】:2012-06-05 02:31:30
【问题描述】:
我有两个点来描述线,问题是我知道正交矩阵的一个坐标(即 150x250x0),透视矩阵的第二个坐标(0.5x0.5x20.0f)。我想将正交坐标转换为透视,这样我就可以使用 glsl 着色器画一条线:)。如何完成这项任务?
【问题讨论】:
标签: opengl-es opengl-es-2.0 projection perspective orthographic
我有两个点来描述线,问题是我知道正交矩阵的一个坐标(即 150x250x0),透视矩阵的第二个坐标(0.5x0.5x20.0f)。我想将正交坐标转换为透视,这样我就可以使用 glsl 着色器画一条线:)。如何完成这项任务?
【问题讨论】:
标签: opengl-es opengl-es-2.0 projection perspective orthographic
您需要将其中一个顶点移动到其他矩阵空间。例如,让我们将 150x250x0 从正交空间移动到透视空间。为此,您需要通过倒置正交矩阵转换您的顶点。我不知道你用的是什么数学库,也许它已经有矩阵求逆的功能。否则使用此链接中的代码:http://www.gamedev.net/topic/180189-matrix-inverse/。在这一步之后,您的顶点位于世界空间中。
PS:矩阵求逆需要花费大量时间进行计算。如果您可以跟踪转换步骤(平移、旋转和缩放),更简单的方法应该是分别反转这些步骤并在此之后组成一个矩阵。
【讨论】: