【问题标题】:SDL Surfaces Randomly LockSDL 曲面随机锁定
【发布时间】:2015-07-06 09:41:47
【问题描述】:

我是 SDL 的新手,刚开始学习它,遇到了一个有趣的问题。该程序的窗口会闪烁,然后永远消失。此外,SDL_BlitSurface 偶尔会出现 exec 错误。 SDL_GetError() 表明它是表面锁定。但是,当检查屏幕表面的锁时,通过使用->locked,屏幕表面总是会有一个随机数量的锁,范围从正数到负数。

经理类:

//apply image
if(SDL_BlitSurface(SDLProcess::getInstance().getImage(0), NULL, SDLProcess::getInstance().getScreenSurface(), NULL) < 0)
{

    ErrorManagement::callSDLError();
}

屏幕表面类:

ScreenSurface::ScreenSurface(SDL_Window* window)
{
//std::cout << window << std::endl;
p_screensurface = SDL_GetWindowSurface(window);

assert(p_screensurface != NULL);

//std::cout << p_screensurface << std::endl;
}

ScreenSurface::~ScreenSurface()
{
    printf("screen surface destroyed");
}

SDL_Surface* ScreenSurface::getScreenSurface()
{
//std::cout << p_screensurface << std::endl;
return p_screensurface;
}

控制台报错信息(上面的数字是锁的数量,下面的数字是错误信息):

37792424
SDL Error: Surfaces must not be locked during blit

还有一个例子:

42068296
SDL Error: Surfaces must not be locked during blit

【问题讨论】:

  • 使用SDL_Texture*。 Blitting 已经过时了。 SDL_Texture 使用硬件加速。

标签: c++ sdl sdl-2


【解决方案1】:

修复它。之后开始调用 SDL init 是一个愚蠢的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多