2010-05-23 4 views
1

매우 간단한 GLRenderer 서브 클래스로 화면에 다각형을 그립니다. 2.1이 설치된 넥서스 원에서는 예상 한 바를 정확히 볼 수 있습니다. 1.6이 설치된 G1에서 glClearColor 만 표시됩니다. 색상을 변경하고 onDrawFrame 함수가 적어도 부분적으로 작동하는지 확인합니다.Android OpenGL glDrawElements는 2.1에서는 작동하지만 1.6에서는 작동하지 않습니다.

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; 
     } 
    } 
} 

내 다각형 구조는 ShortBuffer는 모든 인덱스라는 있고, numberOfVerticies는 다각형의 점의 수를 추적 :

나는 내가 내 onDrawFrame 코드를 붙여있어, 좋은 설명을 추측 할 수 없습니다.

누구나 내 Nexus One에서는 제대로 작동 할 수 있지만 G1에서는 작동하지 않는다는 아이디어가 있습니까?

답변

4

기본적으로 GL_VERTEX_ARRAY는 Nexus One (또는 2.1/2.2)에서 사용하도록 설정되었지만 기본적으로 G1에서는 사용하지 않도록 설정되어 있기 때문에 문제가 발생했습니다. 수정하려면 다음 전화 번호를 추가하면됩니다.

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
관련 문제