如何在MonoGame上使用DrawUserPrimitive启用抗锯齿功能

时间:2019-07-11 18:50:08

标签: xna monogame antialiasing

如何使用MonoGame对DrawUserPrimitives启用抗锯齿功能?

我看到了另一个问题:Drawing Bezier curves in MonoGame (XNA) produces scratchy lines

但是代码没有启用抗锯齿。

我在这里设置了一个示例应用程序:https://github.com/viniciusjarina/PrimitiveDraw/blob/master/Game1.cs#L95

即使使用graphics.PreferMultiSampling = true;

这是输出:

enter image description here

1 个答案:

答案 0 :(得分:-1)

已编辑:此答案仅涵盖如何使链接的问题中的代码实际起作用。我无法启用AA。

您需要将剔除设置为顺时针。

        GraphicsDevice.RasterizerState = new RasterizerState
        {
            CullMode = CullMode.CullClockwiseFace
        };

如果这会弄乱您的其他原语,则可以简单地反转路径的顺序

            path.Add(new VertexPositionColor(new Vector3(curvePoints[x] + normal * curveWidth, 0), Color.Firebrick));
            path.Add(new VertexPositionColor(new Vector3(curvePoints[x] + normal * -curveWidth, 0), Color.Firebrick));

            path.Add(new VertexPositionColor(new Vector3(curvePoints[x] + normal * -curveWidth, 0), Color.Firebrick));
            path.Add(new VertexPositionColor(new Vector3(curvePoints[x] + normal * curveWidth, 0), Color.Firebrick));

我使用VertexPositionColor是因为我想要其他颜色。