2016-06-17 2 views
1

Я хочу включить прозрачность для своих графических объектов. Я выяснил, что просто установить альфа для значения от 0 до 1 недостаточно, и что я должен позвонить Gdx.gl.glEnable(GL20.GL_BLEND) перед вызовом shapeRenderer.begin() и после вызова рендера glDisable(GL20.GL_BLEND) ниже shapeRenderer.end(). Однако, мой вопрос: могу ли я вызвать этот метод Gdx.gl.glEnable(GL20.GL_BLEND) в методе создания, а не в рендеринге, и включить его для запуска игры? Я попытался отключить его, но у меня нет никаких ошибок и проблем с производительностью. Итак, какие варианты использования, и когда я должен использовать этот glDisable(GL20.GL_BLEND), или есть другой способ настройки альфа-формы без вызова этой функции GL?Должен ли я звонить GL_BLEND на создание один раз

ответ

1

Смешивание в OpenGL не зависит от заказа. Он также плохо работает с объектами, которые не являются выпуклыми. Таким образом, вы, как правило, не просто бросаете объекты на графический процессор с включенным смешением.

Кроме того, наличие включенного смешивания имеет стоимость исполнения. Как правило, больше на мобильном оборудовании, чем на рабочем столе, но это не совсем бесплатно даже на настольном оборудовании.

Таким образом, общее правило состоит в том, чтобы сначала отобразить все непрозрачные поверхности, а затем отсортировать прозрачные объекты назад, а затем визуализировать прозрачные в этом порядке. Кроме того, при выполнении смешанного рендеринга вам нужно отключить запись глубины; глубокое тестирование по-прежнему необходимо, но записи вызовут проблемы.

+0

Хорошо, спасибо вам за это разъяснение! – Kapparino