如何在android中绘制全屏?

时间:2010-07-11 19:39:52

标签: java android opengl-es coordinates fullscreen

我在android 2.2上使用opengl es 2.0。我的问题不在于画布,也没有创建全屏的android视图,我已经想到了。

我想知道如何设置GL_QUAD或2 GL_TRIANGLES的坐标以完美覆盖整个屏幕,例如用作2D游戏的纹理表面。

我目前将gluPerspective设置为:

float ratio = (float) width / height;
GLU.gluPerspective( gl, 45.0f, ratio, 1.0f, 100.0f );

在onSurfaceChanged中,所以width和height变量分别是屏幕的宽度和高度。

接下来我将四边形的坐标设为:

public static final float screenVerts[] = {
  -1f, -1f,
   1f, -1f,
   1f,  1f,
  -1f,  1f
};
然而,显示的四边形与屏幕不成比例,它只是显示为正方形,坐标显然与opengl自身的几何形状有关,而不是屏幕的高度/宽度。

如何使screenVerts变量(我绘制的矩形的2D点)相对于屏幕本身?即1.0f是四边形中一个点的Y坐标中屏幕高度的100%。

我真的很抱歉没有这么说,如果我需要再解释一下,不会采取任何冒犯行为。

1 个答案:

答案 0 :(得分:2)

您应该使用gluOrtho2D来设置投影矩阵。另一件事是OpenGL ES中没有GL_QUAD,你必须选择两个三角形。最后 - 如果您想绘制轴对齐纹理,如果设备支持OES_draw_texture扩展(Android设备广泛支持),则glDrawTexiOES会更快更轻松。