是否可以使用Z坐标使Android游戏兼容多种屏幕尺寸?

时间:2012-12-23 11:32:09

标签: android graphics opengl-es

绘制2D图形仅请求两个坐标,默认情况下Z坐标为0.是否可以使用该Z坐标调整图形尺寸。让我们说对于更大的屏幕,我将Z设置为0,但是当屏幕较小(ldpi)时,我将z设置为-5个单位,整个图形适合屏幕。这是好习惯吗?甚至可以这样做吗?

4 个答案:

答案 0 :(得分:1)

要将图形调整为屏幕大小(和旋转),您应调整opengl视口大小。

不确定你准备用z坐标做什么,但对我来说这看起来不是一个好方法。

答案 1 :(得分:1)

您似乎计划使用z坐标进行放大或缩小,以使场景正确适合屏幕。这是有效的一点,你可以通过这种方式“黑客”投影矩阵轻松做到这一点。我真正看到的唯一缺点是你需要为每个顶点再向下发送一个坐标。设置一个全局比例因子会更容易,该因子存储在模型视图 - 投影矩阵中或传递给顶点着色器。

答案 2 :(得分:0)

所以你想为你的2D应用添加一个“虚假”的深度?

  • 使用正交投影(在大多数2D渲染世界中使用),它将完全没用。
  • 使用透视投影时,在发生纹理缩小时肯定会导致许多子像素毛刺,或者在放大时会导致模糊。

您可以调整精灵的大小,或者 - 更好 - 您可以创建一组不同大小的烘焙精灵。

答案 3 :(得分:0)

我的猜测是(我的意思是没有不尊重),你对2D渲染知之甚少,并提出了这个想法。实际上并不是那么糟糕,这是一个很好的第一种方法,但在该领域的事情是相当完美的。除非你真的知道自己在做什么,否则你应该坚持采用标准的处理方式。

标准方法是使用投影矩阵(或更高抽象级别的摄像机)。使用投影时,您可以定义“世界坐标”。投影将您的世界映射到GL视口(通常是孔屏幕),因此无论设备屏幕大小如何,您始终都会显示世界的相同部分。请注意,你必须处理拉伸。

我不知道我是否真的在回答你的问题。这不是你提出的问题,而是我想你想问的问题。如果使用正交投影(这是2D的典型投影),您不应该为z分量而烦恼。