在XNA WP7中使用Alpha透明度进行绑定

时间:2012-04-23 04:09:19

标签: graphics xna windows-phone-7.1 lighting

纹理文件中的平滑alpha渐变存在一些问题,导致绑定问题。

我有一个2D XNA WP7游戏,我想出了一个相当简单的照明系统。我在单独的RenderTarget2D中绘制将被灯光照亮的区域,当您远离光线时应用精灵来调暗边缘,然后将最终照明图像与主图像混合以使某些区域更暗更亮。

这是我到目前为止所得到的:

spotlight mask

light banding example

正如你所看到的,绑扎非常糟糕。 alpha透明度在源图像中非常平滑,但每当我绘制精灵时,它会在颜色之间获得这些巨大的难看的步骤。只是为了检查我用正常的阿尔法混合将聚光灯面罩直接画到场景上,我仍然有条纹。

绘制精灵时有没有办法保持平滑的alpha渐变?

2 个答案:

答案 0 :(得分:1)

  

绘制精灵时有没有办法保持平滑的alpha渐变?

不,你不能。 WP7手机目前使用16位色域系统。一个像素得到:5个红色位,5个蓝色,6个绿色(人类看到更广泛的绿色)。

答案 1 :(得分:1)

发现使用Mango,应用程序现在可以指定它们支持32bpp,并且它可以在支持它的设备上运行!

no light banding example

对于XNA,请将此行放在OnNavigatedTo

的顶部
SharedGraphicsDeviceManager.Current.PreferredBackBufferFormat = SurfaceFormat.Color;

对于Silverlight,将BitsPerPixel="32"添加到App中的WMAppManifest.xml元素。