Я работаю над игрой для Android, и мне было интересно, почему всякий раз, когда я рисую изображения с прозрачностью, кажется, что к прозрачным частям всегда добавляется немного черного. Это происходит повсюду, и некоторые из моих эффектов выглядят странно.
Вот пример. Два круга — это просто белые изображения с размытием, но вы можете видеть, что когда один накладывается на другой, у него есть тень. Если я перекрываю два круга, скажем, в Inkscape, я получаю чистый белый цвет там, где они перекрываются.
Я использую
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);
. Вот результат, который я искал.
Единственное, что теперь, это то, что прозрачные изображения, которые у меня были, которые имеют прозрачный черный цвет, игнорируются, что имеет смысл, потому что я думаю, что целевая альфа равна 1. Почему один минус источник добавляет этот серый цвет?