OpenGL android 2D投影矩阵

时间:2014-06-16 15:00:30

标签: android opengl-es opengl-es-2.0

我在Android上使用OpenGLES20,我想知道如何执行以下操作:

我认为用图片解释会更容易......

enter image description here

我怎样才能纠正这种伸展。注意:我在2D工作。

我听说这个问题是用投影矩阵解决的。我还读了一个StackOverflow问题,说用于设置投影矩阵的android文档并不好。我亲自尝试过,无法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

这个问题非常糟糕。在左侧图像中,您可以看到带有坐标系[0,1]x[0,1]的矩形视图和一个正确绘制的三角形,而在右侧,您可以看到具有视图坐标系和拉伸三角形的相同视图...考虑到这两个因素,您的三角坐标是已经拉伸开始(或者有一个额外的模型视图矩阵)。如果它们没有被拉伸,则会在右图上正确绘制三角形。

在处理不同的视图比率时,场景被拉伸是一个非常常见的问题。一般来说,为了解决这个问题,您正在寻找可以定义坐标系的glOrtho之类的东西。此方法的输入参数是左,右,上和下,最简单的方法是使用屏幕坐标(如右图所示)。另一种方法是将此输入规范化为[0,1]x[0,height/width][0,width/height]x[0,1]。这两种方法代表" fit"并且"填充"哪个取决于视图宽度小于或大于高度(纵向,横向)。

当使用正确的正交矩阵时,你的正方形将永远是一个正方形而不使用任何额外的矩阵或乘以顶点数组...在你的情况下,你似乎已经乘以你的顶点所以我建议你删除它,所有这些。如果你不能和那些顶点继续缩放不正确我建议你使用模型视图矩阵重新缩放它们。

相关问题