gpt4 book ai didi

c++ - SDL 图像在 15 秒后消失

转载 作者:行者123 更新时间:2023-11-28 00:15:12 25 4
gpt4 key购买 nike

我正在学习 SDL,但遇到了一个令人沮丧的问题。代码如下。

即使有一个使程序保持事件状态的循环,当我加载图像并将源矩形的 x 值更改为动画时,加载的图像恰好在 15 秒后消失。静态图像不会发生这种情况。只有动画。我确定我缺少一个简单的东西,但我看不到它。

void update(){
rect1.x = 62 * int ( (SDL_GetTicks() / 100) % 12);
/* 62 is the width of a frame, 12 is the number of frames */
}

void shark(){

surface = IMG_Load("s1.png");
if (surface != 0){
texture = SDL_CreateTextureFromSurface(renderer,surface);
SDL_FreeSurface(surface);
}

rect1.y = 0;

rect1.h = 90;
rect1.w = 60;

rect2.x = 0;
rect2.y = 0;

rect2.h = rect1.h+30; // enlarging the image
rect2.w = rect1.w+30;

SDL_RenderCopy(renderer,texture,&rect1,&rect2);
}

void render(){
SDL_SetRenderDrawColor(renderer, 0, 0, 100, 150);
SDL_RenderPresent(renderer);
SDL_RenderClear(renderer);
}

主要是

   update();
shark();
render();

包含SDL_image header 、链接、dll 存在。可能是 dll 坏了?

为了简单起见,我省略了程序的其余部分。如果这还不够,我可以发布整个内容。

最佳答案

每次调用 shark 函数时,它都会加载纹理的另一个拷贝。在一个循环中,就像你拥有它一样,你将很快用完视频内存(除非你在每一帧之后调用 SDL_DestroyTexture,你没有指出)。此时,您将无法再加载纹理。显然,这对您来说大约需要 15 秒。

如果您要反复使用同一张图片,那么只需在主循环之前加载一次即可。

关于c++ - SDL 图像在 15 秒后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768985/

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