我在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%。
我真的很抱歉没有这么说,如果我需要再解释一下,不会采取任何冒犯行为。
答案 0 :(得分:2)
您应该使用gluOrtho2D
来设置投影矩阵。另一件事是OpenGL ES中没有GL_QUAD,你必须选择两个三角形。最后 - 如果您想绘制轴对齐纹理,如果设备支持OES_draw_texture扩展(Android设备广泛支持),则glDrawTexiOES
会更快更轻松。