2011-11-13 2 views
1

C#XNAではスプライトバッチの代わりにTexture2Dに1文字を描画する方法は?私はbool[,]の文字をchar \ backgroundデータで埋めてその形状を解析したいと思っています。Texture2Dに文字を描画するには?

+0

これはDrawString()にどのように関連しているのかわかりません。 – lesderid

+0

私はDrawString()について言及していませんが、とにかくTexture2Dに描画する方法を理解できません。 – alan2here

+0

私はそれを編集する前にタイトルにあった。補正のために – lesderid

答えて

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

+0

GfxComponentはどこから来たのですか? – alan2here

+0

GfxComponent.CreateRenderTarget(GraphicsDevice、 1、SurfaceFormat.Single)のように見えます。そのセクションのすぐ下に定義されています。つまり、GfxComponentはそのページで定義しているクラスです。 – mike

+0

タイ。私のGrapicsDeviceのSetRenderTargetは、(0、shadowRenderTargetのインスタンス)をパラメータとして使用していませんが、0を取り出すと問題ありません。 – alan2here

関連する問題