Цвет области пересечения - PullRequest
0 голосов
/ 16 июля 2010

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

Можно ли выслать мне пример кода для решения проблемы?

прямо сейчас в методе рисования я использую следующий код:

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 ]

0 голосов
/ 17 июля 2010

Проверьте альфа-значения пикселей, которые вы считаете менее прозрачными (вы рисуете их на своей поверхности, а не непосредственно в буферном буфере, верно?) . Они могут просто казаться менее прозрачными, потому что их объединенный цвет темнее.

Если они действительно менее прозрачны, измените прозрачность каждого пикселя на поверхности на одно и то же значение (боюсь, я не знаю, как это сделать в XNA).

Если они только кажутся менее прозрачными, попробуйте нарисовать свои спрайты на поверхности полностью непрозрачно (так, чтобы один полностью перезаписал другой), затем снова измените прозрачность поверхности в целом.

0 голосов
/ 16 июля 2010

Я не парень XNA, поэтому вам, возможно, придется сделать какой-то перевод.

Не могли бы вы, возможно, сделать их вне экрана белыми на черном и монохромными, и взять полученное изображение, сделать белый прозрачный цвет, который вы хотите, а черный - полностью прозрачным?

Я не уверен, как вы это закодируете, но такой подход я бы исследовал.

...