gpt4 book ai didi

c++ - SDL_RenderCopy() 不适用于数组

转载 作者:行者123 更新时间:2023-11-30 21:30:06 26 4
gpt4 key购买 nike

我在互联网和这里搜索过,只找到了 1 个很好的帖子 SDL_RenderCopy with an array of Rectangles 。 (据我所知)没有答案,但我的问题与那里相同。有什么办法可以做到这一点吗?

SDL_RenderCopy(renderer, texture, &rects[index], &sprPos);

这是调试的内容:

Error   1   error C2664: 'int SDL_RenderCopy(SDL_Renderer *,SDL_Texture *,const SDL_Rect *,const SDL_Rect *)' : cannot convert argument 3 from 'SDL_Rect **' to 'const SDL_Rect *'  c:\users\kushnirenko\documents\visual studio 2013\projects\sdl_project\sdl_project\main.cpp 96  1   SDL_Project

2 IntelliSense: argument of type "SDL_Rect **" is incompatible with parameter of type "const SDL_Rect *" c:\Users\kushnirenko\Documents\Visual Studio 2013\Projects\SDL_Project\SDL_Project\main.cpp 96 37 SDL_Project

最佳答案

我解决了这个问题。有一种方法可以将数组设置为 SDL_RenderCopy。这是:

// Sprites atlas regions
SDL_Rect left = { sprite * 32, 32, 32, 32 };
SDL_Rect right = { sprite * 32, 64, 32, 32 };
SDL_Rect up = { sprite * 32, 96, 32, 32 };
SDL_Rect down = { sprite * 32, 0, 32, 32 };

SDL_Rect leftIdle = { 32, 32, 32, 32 };
SDL_Rect rightIdle = { 32, 64, 32, 32 };
SDL_Rect upIdle = { 32, 96, 32, 32 };
SDL_Rect downIdle = { 32, 0, 32, 32 };
// End of sprite atlas

sprPos = { x, y, 32, 32 };

spritesCoords[0] = left;
spritesCoords[1] = right;
spritesCoords[2] = up;
spritesCoords[3] = down;

spritesCoords[4] = leftIdle;
spritesCoords[5] = rightIdle;
spritesCoords[6] = upIdle;
spritesCoords[7] = downIdle;

sprFrame = spritesCoords[spriteIndex]; // This is solutuion.

SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, &sprFrame, &sprPos);
SDL_RenderPresent(renderer);

关于c++ - SDL_RenderCopy() 不适用于数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com