Почему glBlendFunc () ничего не делает в моем приложении OpenGL ES 2.0? - PullRequest
2 голосов
/ 19 июля 2011

Я рисую нетекстурированные треугольники, чья альфа явно установлена ​​на 0,5 в пиксельном шейдере для тестирования. Мое приложение основано на префабе Opengl ES, предоставленном Xcode. Я не коснулся своего класса EAGLView.

я звоню

glEnable(GL_ALPHA)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SC_ALPHA)
glDrawArrays(...)

Мой clearColor - 0,0,0,1, а формат CAEAGLayer - RGBA8.

В результате я вижу, что никакого смешивания не происходит, и нарисованные пиксели просто заменяют то, что находится под ними. Я также пытался использовать GL_ONE, GL_ONE.

Я попытался установить для свойства opaque моего CAEAGLayer значение false. В результате получается, что независимо от режима наложения цвет нарисованных пикселей смешивается с белым на основе значения альфа. Таким образом, gl_FragColor 1,0,0,1 получается как 1,0,0,1, а 1,0,0,0 получается как 1,1,1,?

Это поведение согласовано на устройстве и симуляторе. Что здесь может быть не так?

1 Ответ

6 голосов
/ 19 июля 2011

Вы должны включить GL_BLEND, а не GL_ALPHA. Константа GL_ALPHA имеет совершенно другое назначение (как идентификатор цветового канала). Таким образом, ваш glEnable вызов на самом деле вызывает ошибку GL_INVALID_ENUM или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...