Я создаю приложение для Android с использованием openGL ES. Я пытаюсь нарисовать в 2D множество движущихся спрайтов, которые отскакивают от экрана.
Давайте рассмотрим, у меня есть шар с координатами 100,100. Изображение шара имеет ширину 10px, поэтому я могу создать вершины boundingBox = {100,110,0, 110,110,0, 100,100,0, 110,100,0}
и выполнить следующее для каждого цикла onDrawFrame()
с загруженной текстурой шара.
//for each ball object
FloatBuffer ballVertexBuffer = byteBuffer.asFloatBuffer();
ballVertexBuffer.put(ball.boundingBox);
ballVertexBuffer.position(0);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, ballVertexBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0,4);
Затем я бы обновил массив boundingBox
, чтобы перемещать шары по экрану.
В качестве альтернативы, я вообще не мог изменить bounding box
и вместо этого translatef()
шарик до рисования вершин
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, ballVertexBuffer);
gl.glPushMatrix();
gl.glTranslatef(ball.posX, ball.posY, 0);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0,4);
gl.glPopMatrix();
Что было бы лучше всего сделать в этом случае с точки зрения эффективности и лучших практик.