OpenglES смешивает частицы, но не фон

У меня следующий процесс:

 - 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, а затем использовал функцию смешивания из 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 - альфа установлена ​​на максимум для всех записанных частиц, чтобы имитировать аддитивное смешение

enter image description here

Он отлично работает, как вы можете видеть ... кроме области заливки черным цветом, где изображение частиц имеет альфа 0 ... и что плохо, что в результате на изображении этот черный цвет имеет альфа 1, поэтому я не могу его никак заменить ...

EDIT_2 Общая проблема простыми словами: мне нужно нарисовать красный (0xff0000) эффект свечения (аддитивное смешивание). На черном фоне это нормально, но если бы я выбрал зеленый (0x00ff00), то цвет результата был бы близок к 0xffff00

Есть идеи?

7
задан Yuriy 18 March 2011 в 13:48
поделиться