У меня следующий процесс:
- 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).
Неработающие решения:
Вот экран, чтобы показать разницу. Справа желаемый результат, слева частицы смешаны с фоном.
img: Мне удалось получить нужный цвет ... но ... (похоже, этот способ никуда меня не сдвинет) Я визуализировал фон с альфа = 0, а затем использовал функцию смешивания из GL11Ext: glBlendFuncSeparate (GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA, GL10.GL_ONE, GL10.GL_ONE);
GL10.GL_SRC_ALPHA, GL10. GL_ONE, GL10.GL_ONE - альфа установлена на максимум для всех записанных частиц, чтобы имитировать аддитивное смешение
Он отлично работает, как вы можете видеть ... кроме области заливки черным цветом, где изображение частиц имеет альфа 0 ... и что плохо, что в результате на изображении этот черный цвет имеет альфа 1, поэтому я не могу его никак заменить ...
EDIT_2 Общая проблема простыми словами: мне нужно нарисовать красный (0xff0000) эффект свечения (аддитивное смешивание). На черном фоне это нормально, но если бы я выбрал зеленый (0x00ff00), то цвет результата был бы близок к 0xffff00
Есть идеи?