在2D上模拟透视矩形

时间:2012-07-15 13:34:39

标签: graphics opengl-es 3d

所以,我正在开发各种各样的益智游戏,我遇到了一些我不确定如何接近的东西。

从下面的屏幕截图中可以看出,主广场旁边的文字沿着四边形的对角线扭曲。这是因为这不是3D环境的屏幕截图,而是2D环境,其中方块已被拉伸,使其看起来像是3D。

我尝试过使用3D透视和改变深度,虽然它解决了扭曲边的问题,但我想知道是否有可能在不进行3D透视的情况下解决这个问题。主要是因为当前的网格转换方案需要一段时间才能实现,并且将其转换为适用于3D空间的内容是可能可以避免的额外工作。

我觉得这是不可避免的,但我很好奇是否有人知道解决方案。我目前正在使用OpenGL ES 1。

this is gonna be the best strategy / puzzle game evar!

3 个答案:

答案 0 :(得分:2)

可能不是你想要的答案,但我会选择3D转换,因为它不仅可以避免这种失真,还可以简化许多其他事情,并为你提供做好效果的机会。

答案 1 :(得分:2)

这个场景中缺少的是“perspective-correct interpolation”,它略微是非线性的,当您提供深度信息坐标时会自动完成。

有可能以另一种方式模拟它(虽然您的选项有限,因为您没有可用的着色器)但它们的效率可能都低于使用GPU的专用功能。我建议您切换到使用3D坐标。

答案 2 :(得分:0)

实际上,我刚刚找到答案。原来有一个Q坐标,你可以用来调整梯形纹理失真:

texture mapping a trapezoid with a square texture in OpenGL http://www.xyzw.us/~cass/qcoord/ http://hacksoflife.blogspot.com.au/2008/08/perspective-correct-texturing-in-opengl.html

看起来它不像3D那样正确,但我想现在使用它会更容易。