在xna上绘制圆圈

时间:2015-01-30 16:51:25

标签: c# xna

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

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

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

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

这样的事情存在吗?

如果确实如此 - 我将如何绘制更加图形化的(与块颜色相反)

1 个答案:

答案 0 :(得分:3)

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

所有这些都不会丢失,因为绘制一个圆圈可以被视为简单地绘制一系列非常短的互连线段,小到足以让你不能告诉它们是线条,但不能太小以至于效率低下。

在XNA中,您可以绘制PrimitiveType.LineStrip

MSDN

  

数据按一系列线段排序;每个线段由一个新顶点和前一个行seqment的最后一个顶点描述。计数可以是任何正整数。

e.g。 (来自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()

告诉我更多