在实时sdl中更改纹理 对不起,我对SDL和C++开发有点陌生。现在我已经创建了一个从map.txt文件读取的平铺映射器。到目前为止,它的工作,但我想添加编辑地图现在 SDL_Texture *texture; texture= IMG_LoadTexture(G_Renderer,"assets/tile_1.png"); SDL_RenderCopy(G_Renderer, texture, NULL, &destination); SDL_RenderPresent(G_Renderer);
以上是我展示我的瓷砖的基本方式,但是如果我想进去实时改变纹理的话,这有点麻烦,效果不好。是否有一种方法最适合编辑纹理?感谢您的帮助,我非常感激。最基本的方法是用一些纹理设置一个存储容器,您可以重复使用这些纹理;例如向量或字典/地图。例如,使用映射方法,您可以执行以下操作:在实时sdl中更改纹理 对不起,我对SDL和C++开发有点陌生。现在我已经创建了一个从map.txt文件读取的平铺映射器。到目前为止,它的工作,但我想添加编辑地图现在 SDL_Texture *texture; texture= IMG_LoadTexture(G_Renderer,"assets/tile_1.png"); SDL_RenderCopy(G_Renderer, texture, NULL, &destination); SDL_RenderPresent(G_Renderer);,c++,textures,sdl,game-engine,render-to-texture,C++,Textures,Sdl,Game Engine,Render To Texture,以上是我展示我的瓷砖的基本方式,但是如果我想进去实时改变纹理的话,这有点麻烦,效果不好。是否有一种方法最适合编辑纹理?感谢您的帮助,我非常感激。最基本的方法是用一些纹理设置一个存储容器,您可以重复使用这些纹理;例如向量或字典/地图。例如,使用映射方法,您可以执行以下操作: // remember to #include <map> map<string, SDL_Texture> myTextures; // assign using array-like notatio
// 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[textureName], NULL, &destination);
其中textureName
是一个字符串变量,可以在代码中实时更改
这种方法意味着您可以先加载所需的所有纹理,然后根据需要使用它们,这意味着渲染时不需要从文件系统加载:)
这张地图有很好的解释
希望这能给你一个正确的方向。如果您需要更多信息,请告诉我:)
SDL_RenderCopy(G_Renderer, myTextures[textureName], NULL, &destination);