【问题标题】:XNA 3.1 DrawUserPrimitives with Anti Aliasing - MultiSampling doesn't work?XNA 3.1 DrawUserPrimitives with Anti Aliasing - MultiSampling 不起作用?
【发布时间】:2012-12-10 16:54:50
【问题描述】:

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

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

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,但这一切似乎没有任何区别。我似乎无法让它工作。

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

非常感谢一些帮助。不久前,我查看了这个问题的解决方案,但当时也无法让它工作。

好吧,干杯。

【问题讨论】:

  • 这真的是多边形吗?或者您是否正在渲染多边形并应用看起来有别名的纹理?因为多重采样只会使多边形的线条变得平滑,仅此而已。如果您使用纹理并旋转它们以获得拖尾效果,您可能会看到来自变换和映射纹理的锯齿,这是多重采样无法避免的。只是想确定一下。
  • 不,我正在绘制多边形顶点并将颜色映射到它们,以便更准确地遵循运动方向,并保持正确的透明度。没有贴图来绘制轨迹。

标签: c# xna antialiasing multisampling


【解决方案1】:

也修复了这个!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多