Android OpenGL GLDrawerElements在2.1上工作,但不是1.6

Android OpenGL GLDrawerElements在2.1上工作,但不是1.6,android,opengl-es,glsurfaceview,Android,Opengl Es,Glsurfaceview,我有一个非常简单的GLRenderer子类,它在屏幕上绘制一组多边形。在安装了2.1的NexusOne上,我完全看到了我的期望。在安装了1.6的G1上,我只显示glClearColor。我可以改变颜色,并看到onDrawFrame函数至少部分起作用 我想不出一个好的解释,所以我正在粘贴onDrawFrame代码: public void onDrawFrame(GL10 gl) { gl.glClearColor(1.0f, 1.00f, 1.0f, 1.0f); gl.glCl

我有一个非常简单的GLRenderer子类,它在屏幕上绘制一组多边形。在安装了2.1的NexusOne上,我完全看到了我的期望。在安装了1.6的G1上,我只显示glClearColor。我可以改变颜色,并看到onDrawFrame函数至少部分起作用

我想不出一个好的解释,所以我正在粘贴onDrawFrame代码:

public void onDrawFrame(GL10 gl) {
    gl.glClearColor(1.0f, 1.00f, 1.0f, 1.0f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    gl.glLoadIdentity();
    gl.glScalef(zoomLevel, zoomLevel, 1.0f);
    gl.glTranslatef(offsetX, offsetY, -1);
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, boothVerticies);
    int i = 0;
    for (Polygon b : allPolygons) {
        if (b.indicies != null) {
            gl.glColor4f(0.6f, 0.6f, 0.6f, 1.0f);
            gl.glDrawElements(GL10.GL_TRIANGLE_FAN, b.numberOfVerticies, GL10.GL_UNSIGNED_SHORT, b.indicies);
            gl.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
            gl.glDrawElements(GL10.GL_LINE_LOOP, b.numberOfVerticies, GL10.GL_UNSIGNED_SHORT, b.indicies);
            if (i++ > 20) break;
        }
    }
}
我的多边形结构有一个称为indicies的短缓冲区,NumberOfVertices跟踪多边形中的点数


有人知道为什么这在我的Nexus One上可以很好地工作,但在G1上却不行吗?

问题是由于默认情况下,Nexus One(或2.1/2.2)上启用了GL_VERTEX_阵列,但在G1上默认情况下禁用了它。为了解决这个问题,我简单地添加了这个调用:

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

问题是由于默认情况下,Nexus One(或2.1/2.2)上启用了GL_VERTEX_阵列,但G1上默认禁用了该阵列。为了解决这个问题,我简单地添加了这个调用:

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);