2012-05-05 2 views
0

мне нужно SpriteBatch для визуализации изображений, как я бы ожидать в WPF или нормальный UIKit приложение:MonoGame - BlendState - 2D SpriteBatch

  • частично прозрачные PNGs оказывают друг на друга, как и следовало ожидать
  • У меня есть альфа, которую я могу изменить, желательно что-то вроде использования Color.White и изменения значения A.

Ближайшее использует BlendState.NonPremultiplied, но я получаю странные линии, где частично прозрачные PNG перекрываются друг с другом.

У меня были подобные проблемы в Windows (see here), но исправлено это, изменив настройку Premultiplied в проекте контента XNA. Как я могу сделать подобное для MonoGame? (Я ожидаю, что здесь есть разница в OpenGL)

ответ

1

Мы решили это, используя две разные настройки.

В Windows и XNA:

  • Использование BlendState.NonPremultiplied
  • Изменить настройки по умолчанию для предварительного умножения = False на проекте содержимого всех PNG файлов
  • Для изменения значения альфа спрайта, используйте Color.White и установить A значение

На MonoGame и IOS:

  • Использование BlendState.AlphaBlend
  • Оставить PNGs как есть
  • Чтобы изменить значение альфа спрайта, используйте Color.White * (float)Alpha/(float)byte.MaxValue

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

Смежные вопросы