在 xna 上绘制圆段

Draw segments of circle on xna

如何在 xna 中绘制一个圆形扇区(如一片披萨形状)?

我想用一个作为定时器指示器,所以希望能够动态改变它的角度。

在理想世界中,我正在寻找这样的东西:

Drawsector (float startAngle, float endAngle, ... )

有这种东西吗?

如果是这样 - 我将如何绘制一个更加图形化的(而不是仅仅块颜色)

没有。 XNA only provides an API for drawing primitive elements called surprisingly primitives

一切都没有丢失,因为画一个圆可以看作是简单地画一系列非常短的相互连接的线段,小到你不能分辨它们是线,但又不能太小以至于效率低下。

在 XNA 中你会画一个 PrimitiveType.LineStrip.

MSDN:

The data is ordered as a sequence of line segments; each line segment is described by one new vertex and the last vertex from the previous line seqment. The count may be any positive integer.

例如(来自 MSDN

GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionColor>(
    PrimitiveType.LineStrip,
    primitiveList,
    0,   // vertex buffer offset to add to each element of the index buffer
    8,   // number of vertices to draw
    lineStripIndices,
    0,   // first index element to read
    7    // number of primitives to draw
);

您需要创建自己的函数来确定与要绘制的弧相匹配的顶点。您应该将其保存到永久索引和顶点缓冲区中,而不是一直在游戏循环中执行 DrawSector()

告诉我更多