繁体   English   中英

在方形精灵周围画一条像素线

[英]Draw a one pixel line around square sprite

我有一个15 x 15像素的盒子,可以使用以下几种颜色绘制不同的颜色:

spriteBatch.Draw(texture, position, colour);

我想做的是在外部以不同的颜色画一条像素线,从而使其成为一个17 x 17的框,(例如)蓝色轮廓线为一个像素宽,中间为灰色。

我能想到的唯一方法是绘制两个框,一个为轮廓色的17x17,一个为框色的15x15,然后对其进行分层以显示轮廓:

spriteBatch.Draw(texture17by17, position, outlineColour);
spriteBatch.Draw(texture15by15, position, boxColour);

显然,位置矢量将需要修改,但我认为这可以清楚地了解该想法。

问题是:有没有更好的方法?

考虑XNA不能画“线”等的OpenGL立即模式可以,这是更为有效的绘制尽管预先生成的纹理四 (2个三角形)比来绘制动态纹理附加几何特别是当一个单一的“线”每个需要1个三角形; 2个三角形与4个三角形 前者中的三角形和顶点也更少。

因此,我不会尝试使用试图模仿另一个外部的线条的其他几何形状来绘制“细”线,而是继续您的工作-绘制2个不同的精灵(无论如何都是四边形)

3D绘制的每个对象都是使用三角形绘制的。 - 您想了解更多吗?

您可以使用DrawUserIndexedPrimitives绘制线和三角形,有关更多详细信息,请参见在MSDN上使用“列表”或“条”绘制3D基元 其他图形(例如矩形和圆形)是由线构造的,但是您需要自己实现它们。

若要以2D渲染线,只需使用正投影即可镜像SpriteBatch变换矩阵。

您可以找到带有PrimitiveBatch类的更完整的示例,该类在XBox Live Indie Games的示例Primitives中封装了绘图的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM