2015-04-24 1 views
2

Я создаю приложение iOS с Open GL ES 2.0. Простое приложение рисования.OpenGL Blending with Transparent Background?

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

Некоторые настройки:

Если я фреймбуфер очищен с абсолютно чистого цвета ...

glClearColor(0.0, 0.0, 0.0, 0.0); 
glClear(GL_COLOR_BUFFER_BIT) 

С перемешивание в набор, как, например:

glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 
[self render] 
glDisable(GL_BLEND); 

И тогда я рисую простой квадрат над этим с непрозрачностью 50%. Скажем ...

gl_FragColor = vec4(1.0, 0.0, 0.0, 0.5); 

Какой цвет я ожидал бы?

Реальное применение этого вопроса состоит в том, что я хотел бы сделать некоторые вещи в полупрозрачном виде. То есть, я действительно хочу, чтобы мой код GL сочетался с представлением UNDERNEATH моего представления в iOS. Если у кого-то есть более конкретные советы по этому поводу, я бы тоже хотел его услышать!

ответ

1

Получившийся цвет будет тем, с которым вы рисовали-красный, с непрозрачностью 50%. Если ваше GL-представление сидит поверх другого представления (и не является непрозрачным), результат будет идентичен тому, что вы получили бы с любым другим содержимым с красным цветом с 50% -ным содержанием поверх другого представления. glBlendFunc и тому подобное влияет только на рисунок ГЛ на вашем изображении; они не влияют на то, как вы получаете композицию с другими представлениями.

+0

Да, это подтверждает то, что я думал. Не могли бы вы проверить другой вопрос, который будет более явным? http://stackoverflow.com/questions/29854332/ios-opengl-es-view-not-blending-correctly-when-composited-with-background – Herm