Я рендерил 2 треугольника, покрывающих всю поверхность, используя только контекст GLES20.Проблема в том, что рисование только одной текстуры таким образом кажется неоправданно медленным.Частота кадров снижается с 58 кадр / с до 21 кадр / с.
- проблема, по-видимому, заключается в общей пиксельной области, составленной из всех четырехугольников вместе
- растровые изображения изменяются до pow2 при загрузке
- растровые изображения загружаются с правильными внутренними форматами GL
- с использованием растрового изображения 8888 или 565 ничего не меняет
- код вершинного и фрагментного шейдера абсолютно минимален
- включение / отключениесмешивание ничего не меняет
- рисование всего растрового изображения в одной или нескольких плитках не помогает
- glDrawTexiOES, похоже, не работает с GLES20 (ошибка перечисления GL)
Я в растерянности;Я думал, что стирание одного изображения в GL должно быть, по крайней мере, таким же быстрым, как и в случае с Canvas, но, похоже, это не так.
Может ли кто-нибудь дать подсказки или объяснение этого удара по производительности?
Обновление:
Я только адаптировал свой поток рендеринга для поддержки холста вместо контекста EGL, и я делаю абсолютно то же самое;показывает текст в секунду и стирает текстуру фона.Угадайте, что: показывая только текст, я получаю 58fps, добавляя фоновое изображение, которое я получаю ... 57fps!
Теперь я официально и очень серьезно разозлен.Я надеюсь, что я не достаточно умен, чтобы хорошо использовать GLES20, иначе кажется, что если вы хотите использовать 2D-графику, вы берете Canvas;и если и ТОЛЬКО если вам нужно много треугольников в 3D, тогда вы берете OpenGL.
Разве OpenGL не должен всегда быть по крайней мере таким же быстрым, как 2D API, предоставляемый Canvas?