我在 Android 上使用 OpenGL ES 2.0,并且我像这样初始化我的显示:
float ratio = (float) width / height;
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7); //Using Orthographic as developing 2d
我无法理解的是:
假设我的应用程序是一个“固定屏幕”游戏(就像吃豆人,即没有滚动,整个游戏都在屏幕上可见)。
现在,如果我在 x 和 y 上都在 -1 到 +1 处绘制一个四边形,我会得到这样的结果:
显然,这是因为我设置了 -ratio, ratio ,如上所示。所以这是正确的。
但是我应该把它用作我的“整个”屏幕吗?左右两侧有相当大的信箱?
我想要一个矩形显示器,它是物理显示器的整个高度(以及尽可能多的宽度),但这意味着在小于 -1 和大于 +1 的位置绘制,这是一个问题吗?
我意识到如果这是一个滚动游戏,我可能会选择使用剪辑,但对于这个特定的场景,我希望屏幕上的整个“游戏板”是静态的(并且尽可能多地使用可用的屏幕空间没有“拉伸”,从而导致我的精灵伸长)。
因为我喜欢使用 0,0 作为屏幕顶部,所以基本上我所做的就是传递我的 draw 方法,如下所示:
quad1.drawQuad (10,0);
当 drawQuad 方法得到这个时,它基本上采用从左到右的范围,如我的 openGL 所表达的那样,并除以屏幕宽度(因此,在我的情况下,-1.7 到 +1.7 所以 3.4/2560 = 0.001328125)。假设我指定 10 作为我的 X(如上),它会说:
-1.7 + (10*0.001328125) = -1.68671875
然后它在 -1.68671875 处绘制四边形。
这样做我可以使用正常的坐标(我只是减去而不是添加 y 轴,所以我可以在顶部有 0)。
这是做事的好方法吗?
因为用这种方法,此刻,如果我指定一个 100,100 的正方形,它不是正方形,它是矩形。但是,从好的方面来说,我可以通过按宽度 x 高度缩放四边形来填充整个物理屏幕。