Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单游戏-混合状态-2D SpriteBatch_C#_.net_Ios_Xamarin.ios_Monogame - Fatal编程技术网

C# 单游戏-混合状态-2D SpriteBatch

C# 单游戏-混合状态-2D SpriteBatch,c#,.net,ios,xamarin.ios,monogame,C#,.net,Ios,Xamarin.ios,Monogame,我需要SpriteBatch以在WPF或普通UIKit应用程序中预期的方式渲染图像: 正如您所期望的那样,部分透明的PNG彼此重叠渲染 我有一个可以修改的alpha,最好是像使用Color.White和修改A值这样的东西 最近使用的是BlendState.NonPremultiplied,但我看到一些奇怪的线条,其中部分透明的PNG相互重叠 我在Windows上遇到了类似的问题,但通过更改XNA内容项目中的预乘设置来修复了它。我如何为MonoGame做类似的操作?(我希望OpenGL在这里会

我需要
SpriteBatch
以在WPF或普通UIKit应用程序中预期的方式渲染图像:

  • 正如您所期望的那样,部分透明的PNG彼此重叠渲染
  • 我有一个可以修改的alpha,最好是像使用
    Color.White
    和修改
    A
    值这样的东西
最近使用的是
BlendState.NonPremultiplied
,但我看到一些奇怪的线条,其中部分透明的PNG相互重叠


我在Windows上遇到了类似的问题,但通过更改XNA内容项目中的
预乘设置来修复了它。我如何为MonoGame做类似的操作?(我希望OpenGL在这里会有所不同)

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

在Windows和XNA上:

  • 使用
    BlendState.非乘性
  • 将所有PNG的内容项目的默认设置更改为Premultiply=False
  • 要修改精灵的Alpha值,请使用
    Color.White
    并设置
    a
关于MonoGame和iOS:

  • 使用
    BlendState.AlphaBlend
  • 保持PNG不变
  • 要修改精灵的Alpha值,请使用
    Color.White*(float)Alpha/(float)byte.MaxValue
我的PNG不是预先倍增的,它的使用和你从Photoshop中所期望的完全一样