Рендеринг перекрывающихся полупрозрачных объектов без затемнения перекрытия - PullRequest
5 голосов
/ 16 февраля 2010

Я не уверен, есть ли название для этого, но по сути, мне нужно взять два непрозрачных спрайта, нарисовать их обоих с непрозрачностью 50%, и там, где они перекрываются, не выглядеть темнее.

Example Image

Изображение слева - это оригинальное изображение. Затем я хочу уменьшить альфа рендеринга, и по умолчанию я получаю изображение посередине, но я хочу, чтобы изображение было справа.

Я использую cocos2d на iPhone и сейчас я рендеринг спрайтов с помощью Atlas Sprite Manager, который не имеет своей собственной альфы, поэтому я попытался уменьшить альфа, уменьшив альфа каждого спрайта индивидуально, а также уменьшением альфа-канала исходного изображения, которое я действительно не ожидал.

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

1 Ответ

3 голосов
/ 16 февраля 2010

AFAIK, нет простого способа обойти это.Я могу придумать следующие варианты: -

  1. Изменить геометрию, чтобы объекты не перекрывались (сложнее всего кодировать, но с максимальной производительностью).
  2. Отображать объекты в текстуру приполная непрозрачность, затем визуализируем это в альфа-смешении.
  3. Используйте буфер трафарета (если iPhone поддерживает буферы трафарета, что, я подозреваю, не поддерживает).Начните с трафарета, установленного на нули, установите для него значение 1, когда вы рисуете свои полупрозрачные полисы, и задайте условие для рисования фрагмента, только если буфер равен 0.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...