gpt4 book ai didi

c++ - SDL2 无法解锁表面

转载 作者:行者123 更新时间:2023-11-28 02:53:44 24 4
gpt4 key购买 nike

我最近一直在编写一些 SDL2,今天我重写了我的代码基础,使其更加结构化和更易于使用。

我遇到的问题是当尝试 blit Sprite 表面时,它给我 SDL 错误 Surfaces must not be locked during blit 这似乎是合理的所以我添加了 SDL_UnlockSurface 到我的 blit 函数的开头 SDL_BlitSurface 之前,但仍然返回相同的错误。因为我在文档中看到 SDL_UnlockSurface 是空的,所以我不知道它是否成功,但由于它不是多线程的,所以在我进行 blitting 时没有任何东西可以强制锁定它(而且它只是无论如何在应用程序开始时绘制到表面)。

这是blit函数

bool Sprite::blit(SDL_Surface* targetSurface){
SDL_UnlockSurface(this->surface);
int success = SDL_BlitSurface( this->surface, NULL, targetSurface, NULL );
if ( success != 0){
printf( "Unable to blit surface! SDL Error: %s\n"m SDL_GetError() );
return false;
}
return true;
}

提前致谢!

最佳答案

锁被计算在内。如果您两次锁定表面,则必须将其解锁两次。最好避免这种方案 - 锁定表面在完成工作后应该解锁的功能相同。

您可以查看 surface->locked 变量,它是锁计数,但它没有包含在文档中,所以您不能依赖这个名称 - 它可能会在未来的版本中更改.

关于c++ - SDL2 无法解锁表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22478030/

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