c# - 具有抗锯齿功能的 XNA 3.1 DrawUserPrimitives - 多重采样不起作用?

标签 c# xna antialiasing multisampling

所以这是我今天早些时候提出的问题的延续。我使用 XNA 3.1 的 DrawUserPrimitives 方法为自己构建了一些漂亮的带状轨迹,主要是通过在运动发生时扩展多边形。除了一件事——抗锯齿外,这一切看起来都 super 时尚漂亮。我一辈子都弄不明白如何应用它。

我在游戏构造函数中设置了这个:

graphics.PreferMultiSampling = true;

我还添加了这个来测试硬件:

        graphics.PreparingDeviceSettings += new EventHandler<PreparingDeviceSettingsEventArgs>((sender, e) =>
        {
            PresentationParameters parameters = e.GraphicsDeviceInformation.PresentationParameters;
            parameters.MultiSampleQuality = 0;

        #if XBOX
                pp.MultiSampleType = MultiSampleType.FourSamples;
                return;
        #else

            int quality;
            GraphicsAdapter adapter = e.GraphicsDeviceInformation.Adapter;
            SurfaceFormat format = adapter.CurrentDisplayMode.Format;

            if (adapter.CheckDeviceMultiSampleType(DeviceType.Hardware, format, false, MultiSampleType.FourSamples, out quality))
            {
                parameters.MultiSampleType = MultiSampleType.FourSamples;
            }
            else if (adapter.CheckDeviceMultiSampleType(DeviceType.Hardware, format, false, MultiSampleType.TwoSamples, out quality))
            {
                parameters.MultiSampleType = MultiSampleType.TwoSamples;
            }
        #endif
        });

通过添加一些打印行,我知道我的硬件可以支持 4 个样本 AA,但这一切似乎没有什么区别。我似乎无法让它发挥作用。

这是应用了所有代码的我的其中一条路线的屏幕截图:

See? No AA!

我非常感谢您的帮助。不久前,我查看了这个以寻找解决不同问题的方法,但当时也无法正常工作。

好吧,干杯。

最佳答案

也修复了这个!

问题在于,虽然后台缓冲区获得了正确的抗锯齿设置,但渲染目标却没有。这意味着绘制到渲染目标是在没有 AA 的情况下完成的,但是随后绘制到后台缓冲区的纹理是使用它完成的。我现在已经修好了。

关于c# - 具有抗锯齿功能的 XNA 3.1 DrawUserPrimitives - 多重采样不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805474/

相关文章:

当在带有文本的对象上使用 jQuery fadeIn 时,它在 Safari 中渲染得很糟糕

javascript - 通用应用程序 : call c# method from javascript

c# - 如何实现自动换行?

c# - 绘制文本时 XNA 怪异的 3D 绘制

c - wu的抗锯齿算法

image-processing - 在对半色调漫画图像进行下采样时减少莫尔条纹

c# - Foreach 语句无法对 'object' 类型的变量进行操作,因为 'object' 不包含 'GetEnumerator' 的公共(public)定义

c# - Graphics.DrawImage 意外调整图像大小

c# - 按位/ bool 值选择

c# - 如何在 C# 中创建真人快打游戏?