Android OpenGL ES draw_texture с обрезкой или VBO? - PullRequest
1 голос
/ 01 апреля 2011

Привет всем, я заново работал над своим Android-приложением, чтобы использовать OpenGL вместо canvas (так как он безбожно медленный), и мне было интересно, так как я использую лист плитки (текстуру атласа), будет ли он быстрее работать?VBO или draw_texture с обрезкой, установленной примерно так:

// Crop our texture
((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, cropRect[cropIndex], 0);
gl.glColor4f(1, 1, 1, 1);

После прослушивания некоторое время Криса Прюетта я понял, что draw_texture, несомненно, является самым быстрым для отдельного спрайта, но если я обрезаю атлас, это все еще верно?

1 Ответ

2 голосов
/ 01 апреля 2011

было бы быстрее использовать VBO или draw_texture

Draw using atlas texture

Обратите внимание, что он использует «плиточный мир», который объясняет, почему он использует эту технику. Если вы не используете мозаичный мир, вы, вероятно, должны использовать draw_texture.

Послушав некоторое время Криса Прюетта, я понял, что draw_texture, несомненно, является самым быстрым для отдельного спрайта, но если я обрезаю атлас, это все еще верно?

Не всегда. Если вы используете большую текстуру атласа со многими спрайтами, функция glTexParameteriv() будет слишком дорогой. Если вы просто используете меньшее количество спрайтов, это, вероятно, будет быстрее, что также зависит от количества обращений к функции glTexParameteriv().

...