【问题标题】:MonoGame - BlendState - 2D SpriteBatchMonoGame - BlendState - 2D SpriteBatch
【发布时间】:2012-05-10 01:32:37
【问题描述】:

我需要SpriteBatch 来呈现我在 WPF 或普通 UIKit 应用程序中所期望的图像:

  • 如您所料,部分透明的 PNG 相互叠加呈现
  • 我有一个可以修改的 alpha,最好是使用 Color.White 并修改 A 值。

最近一直在使用BlendState.NonPremultiplied,但我得到奇怪的线条,部分透明的 PNG 相互重叠。

我在 Windows (see here) 上遇到了类似问题,但通过更改 XNA 内容项目中的 Premultiplied 设置修复了它。我怎样才能为 MonoGame 做类似的事情? (我期待这里的 OpenGL 有所不同)

【问题讨论】:

    标签: c# .net ios xamarin.ios monogame


    【解决方案1】:

    我们使用两种不同的设置解决了这个问题。

    在 Windows 和 XNA 上:

    • 使用BlendState.NonPremultiplied
    • 将所有 PNG 的内容项目的默认设置更改为 Premultiply = False
    • 要修改精灵的 Alpha 值,请使用 Color.White 并设置 A

    在 MonoGame 和 iOS 上:

    • 使用BlendState.AlphaBlend
    • 保持 PNG 不变
    • 要修改精灵的 Alpha 值,请使用 Color.White * (float)Alpha / (float)byte.MaxValue

    我的 PNG 没有 预乘,并且完全按照您从 Photoshop 中得到的预期使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多