如何将字符绘制到Texture2D?

时间:2011-11-13 17:17:20

标签: c# xna rendering

在C#XNA中,如何将单个字符绘制到Texture2D而不是精灵批处理?我希望这样做是为了使用字符char \ background数据填充bool[,]来分析它的形状。

1 个答案:

答案 0 :(得分:4)

您可以使用渲染目标。基本的想法是,不是将文本渲染到后台缓冲区,而是渲染到单独的缓冲区,然后可以为您提供Texture2D。

见这里:http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.rendertarget(v=xnagamestudio.31).aspx

提问者编辑:

经许可,我已添加到此答案中。在撰写本文时,MSDN上的信息已经过时并且使它看起来比它需要的更复杂,因此我编写了自己的如何执行此操作的示例。

这样做的类可能必须从IDisposable继承并实现void Dispose(),它什么都不做。

PresentationParameters pp = graphicsDevice.PresentationParameters;
byte width = 20, height = 20; // for example

// pp.BackBufferWidth, pp.BackBufferHeight // for auto x and y sizes
RenderTarget2D render_target = new RenderTarget2D(graphicsDevice,
width, height, false, pp.BackBufferFormat, pp.DepthStencilFormat,
pp.MultiSampleCount, RenderTargetUsage.DiscardContents);

graphicsDevice.SetRenderTarget(render_target);
graphicsDevice.Clear(...); // possibly optional
spriteBatch.Begin();
// draw to the spriteBatch
spriteBatch.End();
graphicsDevice.SetRenderTarget(null); // Otherwise the SpriteBatch can't
// be used as a texture, this may also need to be done before using the
// SpriteBatch normally again to render to the screen.

// render_target can now be used as a Texture2D

此时这可能有用。 http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Texture_to_Colors.php