очистить буфер кадров ...OpenGL ES 2.0 IOS, нулевой альфа-пиксел создавая непрозрачный цвет
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);
В том, что коде визуализации, Я просто добавляю квадроцикл и рисую его. В моем шейдере фрагмента у меня есть ...
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
Это дает четкий квадрат. Отлично. Нет цвета, нет альфы, нет ничего ... получилось. Тем не менее, я меняю фрагментный шейдер на ...
gl_FragColor = vec4(1.0, 0.0, 0.0, 0.0);
Я получаю квадрат, заполненный белым. Может ли кто-нибудь объяснить мне, как заполнение квадроцикла полностью прозрачным красным цветом даст непрозрачный белый цвет, а не просто ясный?
Используете ли вы глубинный буфер/глубину? –
Ну, у вас есть 'GL_ONE' как первый аргумент' glBlendFunc() '. Таким образом, вы добавляете цвет фрагмента к целевому значению, независимо от альфа-значения. –
@RetoKoradi справа, поэтому цвет фрагмента (1, 0, 0, 0), а цвет назначения - (0, 0, 0, 0). Добавление их вместе дает (1, 0, 0, 0), правильно? Почему конечное значение (1, 0, 0, 0) выглядит белым? Мне кажется, что это должно быть ясно, так как значение альфа составляет 0 или, по крайней мере, некоторый оттенок красного? – Herm