Прозрачные изображения OpenGL имеют черный цвет

Я работаю над игрой для Android, и мне было интересно, почему всякий раз, когда я рисую изображения с прозрачностью, кажется, что к прозрачным частям всегда добавляется немного черного. Это происходит повсюду, и некоторые из моих эффектов выглядят странно.

Вот пример. Два круга — это просто белые изображения с размытием, но вы можете видеть, что когда один накладывается на другой, у него есть тень. Если я перекрываю два круга, скажем, в Inkscape, я получаю чистый белый цвет там, где они перекрываются.

enter image description here

Я использую

GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);

для смешивания.

Есть идеи, почему это происходит и как этого избежать?

Редактировать :единственное, о чем я могу думать, это то, что два изображения имеют одинаковую z, поэтому, может быть, они смешиваются только с фоном, а не друг с другом?

Редактировать :Я изменил

GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);

на

GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_DST_ALPHA);

. Вот результат, который я искал.

enter image description here

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

5
задан EmbMicro 30 April 2012 в 03:42
поделиться