Прозрачность для объекта треугольная полоса Opengl es 2.0

Я хочу изменить прозрачность объекта, нарисованного с помощью glDrawArrays (GL_TRIANGLE_STRIP, 0, 4);

Я использовал вариант смешивания, например

    glEnable(GL_BLEND);
    //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glBlendFunc(GL_SRC_ALPHA, GL_SRC_ALPHA_SATURATE);

(Я пробовал использовать следующие параметры: GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA_SATURATE) В целом, я получаю изменение цвета при изменении значения Alpha, но не становлюсь прозрачным или полупрозрачным. При альфа = 255 цвет становится ярким, при альфа = 1 черный цвет, но не прозрачный. Если я сделаю альфа = 0, я получу полную прозрачность. Есть ли способ придать полупрозрачность? (Если я даю значение альфа от 1 до 255, скажем, 100, я получаю светлый оттенок, но фоновый объект все еще не отображается. Значит, прозрачность недоступна) Кто-нибудь поможет?

Вот мои используемые API для построения графиков:

    glUniformMatrix4fv(i32Location, 1, GL_FALSE, afIdentity);
    glEnableVertexAttribArray(VERTEX_ARRAY);
    glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

person Arun KR    schedule 17.06.2016    source источник


Ответы (1)


Для стандартного смешивания оператора "поверх" вы хотите использовать: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Альфа-значение нарисованного объекта затем определяет, какая часть переднего плана видна, т.е. результат операции смешивания:

результат = новое_значение * альфа + существующее_значение * (1-альфа)

Если вы рисуете прозрачный объект перед фоновым объектом, вам необходимо изменить тест глубины, чтобы видеть объекты за прозрачным объектом. Вы можете сделать это, отключив проверку глубины (glDisable(GL_DEPTH_TEST);), если вам не нужна проверка глубины для прозрачного объекта, или отключив запись глубины (glDepthMask(GL_FALSE);), если вы хотите проверить глубину для прозрачного объекта, но не хотите, чтобы она перекрывала объекты. за этим.

person Jan-Harald    schedule 18.06.2016