Как рисовать символы в Texture2D? - PullRequest
1 голос
/ 13 ноября 2011

В C # XNA как отдельный символ рисуется на Texture2D вместо пакета спрайтов? Я хочу сделать это для того, чтобы заполнить bool[,] символами char \ background data для анализа его формы.

1 Ответ

4 голосов
/ 13 ноября 2011

Вы можете использовать цель рендеринга.Основная идея состоит в том, чтобы вместо рендеринга вашего текста в задний буфер, вы рендерили в отдельный буфер, который затем может дать вам 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

...