代码之家  ›  专栏  ›  技术社区  ›  user2056166

在xna上绘制圆段

  •  -1
  • user2056166  · 技术社区  · 10 年前

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

    我想用一个作为计时器指示器,这样就可以动态地改变它的角度。

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

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

    这样的事情存在吗?

    如果是这样的话——我该如何绘制一幅更具图形感的作品(而不仅仅是方块色)

    1 回复  |  直到 10 年前
        1
  •  3
  •   user585968 user585968    10 年前

    XNA only provides an API for drawing primitive elements called surprisingly primitives .

    所有这些都不会丢失,因为绘制一个圆可以被视为简单地绘制一系列非常短的相互连接的线段,小到你无法分辨它们是线,但也不能太小以至于效率低下。

    在XNA中,您将绘制 PrimitiveType.LineStrip .

    MSDN :

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

    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() 一直在游戏循环中。

    告诉我更多