У меня следующий процесс:
- draw background
- draw objects and blend with background (1)GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA
- draw particle effect with blending (2)GL10.GL_SRC_ALPHA, GL10.GL_ONE in order to highlight overlapping particles
Проблема - когда я рисую частицы, они дополнительно смешиваются с фоном и становятся очень яркими.
Мне просто нужно смешать частицы с (2) и затем все вместе смешать с фоном, используя (1).
Не рабочие решения:
- Эффект рисования на текстуру, а затем его применение работает нормально ... но очень медленно.
- Сначала рисуем эффект частицы, а затем фон, все выглядит нормально ... но я не могу нарисовать объект сцены, потому что они должны находиться между bg и эффектом
Вот экран дляпоказать разницу.Справа - желаемый результат, слева - частицы, смешанные с фоном.
img:
Буду признателен за любую помощь ...
Последние обновления: Мне удалось получить нужный мне цвет ... но ... (кажется, это никуда меня не приведет) Я отрисовал фон с альфа = 0 и затем использовал функцию blend изGL11Ext: glBlendFuncSeparate (GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA, GL10.GL_ONE, GL10.GL_ONE);
GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA, теперь только цвета имеют b (если они имеют b, то у них есть альфа-цвета (у них есть b, если они имеют b, у которых есть альфа-цвета)
GL10.GL_ONE, GL10.GL_ONE - для всех записанных частиц установлено максимальное значение альфа-канала, имитирующее аддитивное смешивание
Как вы можете видеть, работает нормально.... за исключением области заливки черного цвета, где изображение частиц имеет альфа 0 ... и что плохо, что в результате изображение черного цвета имеет альфа 1, поэтому я не могу его заменить каким-либо образом ...
EDIT_2 Общая проблема простыми словами: мне нужно нарисоватькрасный (0xff0000) светящийся эффект (аддитивное смешение).На черном фоне это нормально, но если бы я взял зеленый (0x00ff00), то результирующий цвет был бы близок к 0xffff00
Есть идеи?