在opengl中创建自己的投影矩阵

时间:2017-11-29 02:02:45

标签: opengl glsl opengl-4

以下是我的推理:

  • openGL在2x2x2多维数据集中绘制所有内容
  • 此立方体内的x,y值决定了在屏幕上绘制点的位置。 z值用于其他东西...
  • 如果你想让z值对透视产生一些影响,你需要改变场景(通常用矩阵),这样就可以产生远处物体变小的错觉。

  • 立方体的z值从-1到1.

现在我想要它,以便z = 1的对象被无限缩放,z = 0的对象是正常大小,而z = -1的对象是1/2大小。

当我说一个物体被缩放时,我的意思是它的点的(x,y)坐标乘以缩放器缩放因子,它是基于它的z坐标。

如果一个点位于2x2x2立方体之外,我希望在z = 1和z = -1之间仍然可以对其进行计算。由于z值没有改变,我不关心任何不在此范围内的点会发生什么,只要它们的z值没有改变。

广义点转换:

如果我有一个点P =(x,y,z),并且-1< = z< = 1那么:

缩放系数,S = 1 /(1 - z)

所以翻译如下:

(x,y,z)==> (x * S,y * S,z)

创建矩阵?

这是我遇到问题的地方。我不知道如何创建一个矩阵,以便它将一个广义点转换为具有预期效果。

我正在考虑不使用矩阵并通过glsl中的函数应用此转换...

如果有人对如何创建这样的矩阵有所了解,我想知道。

0 个答案:

没有答案