заголовок должен показаться несколько загадочным, но я не мог объяснить, что именно хочу сделать, поэтому нарисовал картинку, чтобы визуализировать мою проблему:
![enter image description here](https://i.stack.imgur.com/0WbvV.png)
Черные части прозрачны (он же альфа = 0). У меня есть синий объект (слева) в кадровом буфере, и я хочу отобразить на нем белое растровое изображение (в середине), чтобы оно выглядело как объединенное растровое изображение (справа).
Проблема в том, что, если я использую стандарт glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
, отображается вся часть белого объекта. Я не хочу, чтобы он полностью перекрывал материал в кадровом буфере (синий), но должен быть видимым только в тех частях, где его значение альфа> 0 (видно). И тогда он также должен учитывать свои собственные альфа-значения (обратите внимание на дыру в белом объекте).
Возможно ли что-то подобное с glBlendFunc или мне для этого нужно написать шейдер?
PS: я посмотрел документацию по glBlendFunc по адресу http://www.khronos.org/opengles/documentation/opengles1_0/html/glBlendFunc.html, но на самом деле я ничего не понял с этим.
PPS: я использую OpenGL-ES 2.0 на Android с C ++, но я не думаю, что язык / платформа так важны.