如何在xna中绘制圆形扇区(如在披萨形状中)?
我想使用一个作为计时器指示器,所以希望能够动态改变它的角度。
在一个理想的世界里,我正在寻找这样的东西:
Drawsector (float startAngle, float endAngle, ... )
这样的事情存在吗?
如果确实如此 - 我将如何绘制更加图形化的(与块颜色相反)
答案 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()
。