У меня проблемы с рисованием в 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 дать мне какое-то руководство?
Чтобы уточнить, последний эффект, которого я пытаюсь добиться, - это возможность нарисовать спрайт, который включает в себя несколько прозрачных областей для моей текстуры рендеринга. Прозрачные области спрайта не должны рисовать на моей текстуре рендеринга. Непрозрачные области спрайта должны рисовать текстуру рендеринга только в том случае, если они находятся над непрозрачной областью текстуры рендеринга.