2012-10-28 78 views
0

如何將多個Texture2D合併爲一個大型Texture2D?我試圖通過將地圖分成塊來優化等軸測遊戲。XNA「Texture2D」合併

我試過Google搜索它,發現有關「RenderTarget2D」的文章,但我不確定如何實現這一點。

謝謝, 山姆。

回答

0

沒關係 - 我解決了。

對於任何人也在尋找這個,你基本上使用spriteBatch繪製到「RenderTarget2D」,就像你在屏幕上一樣。

(helpful article)

RenderTarget2D render; //declare target 

render = new RenderTarget2D(GraphicsDevice, (int)(tileSize.X * numberOfTiles.X), (int)(tileSize.Y * numberOfTiles.Y), 0, SurfaceFormat.Color); //assign target, where tileSize is the size of a tile and numberOfTiles is the number of tiles you are rendering 

GraphicsDevice.SetRenderTarget(0, render); //Target the render instead of the backbuffer 

batch.Begin(); 
//draw each tile 
batch.End(); 

GraphicsDevice.SetRenderTarget(0, null); //target the backbuffer again 

Texture2D myTexture = render.GetTexture(); //store texture in Texture2D variable 

對不起,我比較差的解釋 - 我第一次嘗試在一個教程。

+2

請注意,您的最後一行在XNA 4.0中不起作用。你需要用'GetData'和'SetData'將它複製到一個普通的'Texture2D'中。或者你需要處理'RenderTarget2D.ContentLost'。 (另見:[這裏](http://blogs.msdn.com/b/shawnhar/archive/2010/03/26/rendertarget-changes-in-xna-game-studio-4-0.aspx)和[這裏](http://stackoverflow.com/a/5509633/165500)和[這裏](http://stackoverflow.com/a/6900213/165500))。 –