2013-11-26 52 views
1

對不起,我對SDL和C++開發有點新了。現在我已經創建了一個從我的map.txt文件讀取的tile貼圖器。到目前爲止它工作,但我想現在添加編輯地圖。實時更改紋理sdl

SDL_Texture *texture; 
texture= IMG_LoadTexture(G_Renderer,"assets/tile_1.png"); 
SDL_RenderCopy(G_Renderer, texture, NULL, &destination); 
SDL_RenderPresent(G_Renderer); 

以上是我展示我的瓷磚的基本方式,但如果我想去和改變紋理實時它是一種越野車,並不能很好地工作。有沒有最適合編輯紋理的方法?感謝您的幫助,我欣賞一切。

回答

1

最基本的方法是設置一個存儲容器,其中包含一些您將重複使用的紋理;例如矢量或字典/地圖。使用地圖的方法,例如,你可以這樣做:

// remember to #include <map> 
map<string, SDL_Texture> myTextures; 
// assign using array-like notation: 
myTextures["texture1"] = IMG_LoadTexture(G_Renderer,"assets/tile_1.png"); 
myTextures["texture2"] = IMG_LoadTexture(G_Renderer,"assets/tile_2.png"); 
myTextures["texture3"] = IMG_LoadTexture(G_Renderer,"assets/tile_3.png"); 
myTextures["texture4"] = IMG_LoadTexture(G_Renderer,"assets/tile_4.png"); 

然後利用不同的紋理,你所要做的就是使用的東西線沿線的:

SDL_RenderCopy(G_Renderer, myTextures["texture1"], NULL, &destination); 
SDL_RenderPresent(G_Renderer); 

這可以進一步通過改變第一線控制爲

SDL_RenderCopy(G_Renderer, myTextures[textureName], NULL, &destination); 

其中textureName是一個字符串變量,其可以在代碼改變實時。

這種方法意味着您可以加載如以後需要你將需要前手和簡單地利用他們的所有紋理,這意味着沒有從文件系統加載,同時渲染:)

有地圖here.的一個很好的解釋

希望這會給你一個正確的方向推動。讓我知道如果你需要更多的信息:)