XNA: применение цвета SpriteBatch.Draw() только к непрозрачным пикселям

У меня есть спрайт, загруженный из PNG с альфа-каналом. Образ содержит непрозрачный диск, а остальная его часть прозрачна.

Я хочу использовать аргумент color для SpriteBatch.Draw(...), чтобы изменить оттенок диска. Однако поведение смешивания по умолчанию применяет цвет ко всему спрайту, поэтому я получаю непрозрачный квадратный контур вокруг окрашенного диска.

Есть ли способ изменить режим наложения, чтобы аргумент color не влиял на прозрачные пиксели?


person kpozin    schedule 18.05.2009    source источник


Ответы (2)


Я никогда не видел, чтобы это происходило, и я работал с такими прозрачными PNG с самого начала в XNA. Вы смешиваете 2D и 3D? Если это так, ваши настройки 3D-рендеринга могут сбивать с толку SpriteBatch, но я думал, что SpriteBatch должен был установить их правильно для вас. Может быть, что-то не так с изображением PNG, которое вы используете?

person Bill Reiss    schedule 18.05.2009

Билл, ты прав. Я забыл очистить фон в одном из PNG. Вопрос следует удалить.

person kpozin    schedule 18.05.2009
comment
Нет, не удалять! Для этого существует StackOverflow. Если кто-то столкнется с похожей проблемой, этот QA может фактически указать им направление, о котором они не думали. - person Peter Lillevold; 18.05.2009
comment
Кстати, вместо того, чтобы отвечать Биллу на свой вопрос, используйте систему комментариев. - person Peter Lillevold; 18.05.2009
comment
Извините, я думал, что мне нужно 50 очков репутации, чтобы иметь возможность оставлять комментарии. - person kpozin; 18.05.2009