[英]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.