Цвет области пересечения
Я нарисовал два полупрозрачных круга, которые пересекаются друг с другом. Я обнаружил, что область пересечения имеет более глубокий цвет, чем другие области. есть ли способ сделать всю форму одним полупрозрачным цветом (цвет не должен быть глубже в одной области, чем в других)?
Для получения дополнительной информации: http://yfrog.com/0sneedtosolvep
Можно ли отправить мне пример кода для решения проблемы?
Прямо сейчас в методе рисования я использую следующие коды:
spriteBatch.Begin (SpriteBlendMode.AlphaBlend);
spriteBatch.Draw (textureCircle1, spritePositionCircle1, new Color (255, 255, 255, (int) (150))); spriteBatch.Draw (textureCircle2, spritePositionCircle2, new Color (255, 255, 255, (int) (150))); spriteBatch.End ();
base.Draw (GameTime);
2 ответа
Я не парень XNA, так что вам, возможно, придется сделать перевод.
Не могли бы вы сделать их за пределами экрана монохромным белым на черном и взять получившееся изображение, сделать белый цвет желаемым прозрачным, а черный - полностью прозрачным?
Я не уверен, как вы это закодируете, но этот подход я бы исследовал.
Проверьте альфа-значения пикселей, которые вы считаете менее прозрачными (вы рисуете их на своей поверхности, а не непосредственно в буферном буфере, верно?). Они могут казаться менее прозрачными, потому что их комбинированный цвет темнее.
Если они действительно менее прозрачны, измените прозрачность каждого пикселя на поверхности на одно и то же значение (боюсь, я не знаю, как это сделать в XNA).
Если они только кажутся менее прозрачными, попробуйте нарисовать свои спрайты на поверхности полностью непрозрачно (чтобы один полностью перезаписал другой), затем снова измените прозрачность поверхности в целом.