Android OpenGL ES draw_texture с обрезкой или VBO?

1

Привет всем, я переработал приложение для Android, чтобы использовать OpenGL вместо холста (так как он нехорошо медленный), и мне было интересно, так как я использую плиточный лист (атласная текстура), было бы быстрее использовать 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, несомненно, самый быстрый для отдельного спрайта, но если я обрезаю атлас, это все еще верно?

Теги:
vbo
opengl-es
crop

1 ответ

2
Лучший ответ

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

Изображение 174551

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

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

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

  • 0
    Ну, чтобы дать вам представление, мой атлас имеет размер 1024x1024, и самое большее у меня на экране около 12 спрайтов (не статичных). И они не составляют мир, «мир» - это простое фоновое изображение. Большое спасибо за отличный ответ, кстати!
  • 0
    @Alex: Тогда вы, вероятно, хорошо используете draw_texture и glTexParameteriv() .
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню