在 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()
。
告诉我更多
如何在 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()
。