В настоящее время меня интересует, почему OpenGl нужно так много времени для рисования некоторых простых TriangleFans с LineLoops вокруг (для сглаженных краев).
Этот цикл выполняется при каждом вызове onDrawFrame ().
for (int j = 0; j < 40; j++) {
float rotationAngle= (float) ((j * angle) + angleBegin
- plusAngle+ (angle/ 2f));
GLES10.glPushMatrix();
GLES10.glTranslatef(plusX, 0, 1f);
GLES10.glTranslatef(0.5f * height, 0.5f * height, 0.001f);
GLES10.glRotatef(rotationAngle, 0, 0, 0.9f);
rectObject.render(GL_Meshobject.PrimitiveType.TriangleFan);
rectObject.render(GL_Meshobject.PrimitiveType.LineLoop);
GLES10.glPopMatrix();
}
Объект, который визуализируется 40 x 2 (цикл) раз, был создан следующим образом:
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert1[KOORDS_X], wert1[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert2[KOORDS_X], wert2[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert4[KOORDS_X], wert4[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert3[KOORDS_X], wert3[KOORDS_Y], 0);
В чем причина длительности выполнения цикла от 2 до 10 мс?Как я могу это исправить?
Результатами этого цикла являются некоторые ряды, которые не связаны друг с другом, но есть ли возможность поместить эти 40 прямоугольников в один объект?
Этот метод рисует часть моего фона, возможно ли определить объекты, которые будут отображаться только один раз на экране, например «Rendermode Dirty», но не для всего Renderer, я бы хотел избежать создания наложенных SurfaceViews,но в моем onDrawFrame есть динамические и статические объекты.Я хотел бы отображать только динамические объекты и сохранять статичные объекты на экране, отображая их только один раз (в начале).