Как настроить смешивание openGL, чтобы рисовать только непрозрачные области на CCRenderTexture, используя CCSprite, который имеет некоторую прозрачность? - PullRequest
1 голос
/ 22 сентября 2011

У меня проблемы с рисованием в CCRenderTexture с текстурой, которая включает в себя прозрачность из-за смешивания, которое я использовал.

Спрайт, с которым я рисую, имеет функцию смешивания:

glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA).

Текстура рендеринга, к которой она рисует, имеет функцию смешивания:

glBlendFuncSeparate(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA).

Текстура рендера настроена так, чтобы она была в основном прозрачной с некоторыми полностью непрозрачными областями. Вышеуказанные функции смешивания позволяют мне рисовать сплошным спрайтом на сплошных областях, в то время как он не рисует на прозрачных областях.

Проблема возникает, когда я пытаюсь изменить спрайт, с которым я рисую, чтобы включить некоторую прозрачность. Он имеет тенденцию «стирать» непрозрачные области на текстуре рендеринга. В идеале я хотел бы, чтобы прозрачные области на спрайте, на которых я рисую, не имели никакого эффекта. Мне было интересно, смог ли гуру по смешиванию openGL дать мне какое-то руководство?

Чтобы уточнить, последний эффект, которого я пытаюсь добиться, - это возможность нарисовать спрайт, который включает в себя несколько прозрачных областей для моей текстуры рендеринга. Прозрачные области спрайта не должны рисовать на моей текстуре рендеринга. Непрозрачные области спрайта должны рисовать текстуру рендеринга только в том случае, если они находятся над непрозрачной областью текстуры рендеринга.

...