对不起,我对SDL和C ++开发有点新意。现在我已经创建了一个从map.txt文件中读取的tile mapper。到目前为止它可以工作,但我想现在添加编辑地图。
SDL_Texture *texture;
texture= IMG_LoadTexture(G_Renderer,"assets/tile_1.png");
SDL_RenderCopy(G_Renderer, texture, NULL, &destination);
SDL_RenderPresent(G_Renderer);
以上是我展示瓷砖的基本方法,但是如果我想进入并实时更改纹理,那就是有点儿麻烦并且效果不好。有没有最适合编辑纹理的方法?感谢您的帮助,我感激不尽。
答案 0 :(得分: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.
有一个很好的解释希望这会让你在正确的方向上轻推一下。如果您需要更多信息,请告诉我们:)