Я читал эту статью, и автор пишет:
Здесь, как писать высокопроизводительные приложения на каждой платформе в два простых шага:
[...]
Следуйте рекомендациям. В случае Android и OpenGL это включает в себя такие вещи, как "вызовы пакетной розыгрыши", "не использовать отбрасывание в фрагментарных шейдерах" и т.д.
Я никогда раньше не слышал, что выброс будет иметь плохое влияние на производительность или что-то подобное, и использовал его, чтобы избежать смешивания, когда подробная альфа не была необходима.
Может ли кто-нибудь объяснить, почему и когда использовать отбрасывание можно считать плохой практикой, и как отбрасывать + depthtest сравнивается с альфой + blend?
Изменить:. Получив ответ по этому вопросу, я провел некоторое тестирование, создав фоновый градиент с текстурированным квадратом.
- Использование GL_DEPTH_TEST и фрагмента-шейдера, заканчивающегося строкой "
if( gl_FragColor.a < 0.5 ){ discard; }
", дало о 32 кадра в секунду. - Удаление инструкции if/discard из фрагмента-шейдера увеличено скорость рендеринга примерно 44 fps.
- Использование GL_BLEND с функцией смешивания "(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) "вместо GL_DEPTH_TEST также привело к 44 fps.