저는 얼마전 OpenGL을 프로그래밍 해 왔지만 OpenGL ES를 처음 접했습니다. 내가 겪고있는 문제 중 하나는 효율적인 매너로 화면에 프리미티브를 그리는 것입니다.Vertex Array 성능 문제
나는 동일한 라인의 수는 (다른 번역) 화면에 루프를 그릴 필요하고이 코드와 큰 성능 저하 발견 :
gl.glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, this.vertices);
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
gl.glPushMatrix();
gl.glTranslatef(i, j, 0);
gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, 4);
gl.glPopMatrix();
}
}
나는 glDrawArrays이 나쁜 사람은 그 수치를 이리.
그래서 문제는 어떻게 효율적으로 라인 루프 묶음을 그릴 수 있습니까? GL_LINE_LOOP를 사용할 때 각 프리미티브에 대해 glDrawArrays를 호출해야하므로 GL_LINES로 유형을 변경해야합니까? 위의 코드에서 4 개의 꼭지점을 가진 버텍스 배열이 너비 * 높이 * 8 버텍스를 보유 할 것이므로 엄청난 메모리 낭비를 초래할 것입니다.
저는 Android OpenGL ES 1.1 용으로 프로그래밍하고 있습니다.
"하나의 페이지를 할당 할 수 없습니까?" 버텍스 배열이 클라이언트 측에 할당되어 있지 않습니까? –
@ JensÅkerblom : 네 그렇습니다. 클라이언트 측은 Android 커널을 사용하여 페이지 단위로 메모리를 관리합니다. – datenwolf