Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在实时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 - Fatal编程技术网

在实时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);