Sdl 2 表面不';我没有彩色钥匙

Sdl 2 表面不';我没有彩色钥匙,sdl-2,Sdl 2,我回到了几个月前用SDL2.0.5AFAIR编写的一个项目,现在我将它更新到最新的可用版本 当我的应用程序调用SDL\u CreateTextureFromSurface(渲染器,曲面)时,SDL\u GetError()抱怨曲面没有颜色键消息 我几乎可以肯定这个错误是新的,但我不知道为什么 我的代码是: SDL_Surface* surface = IMG_Load( imgName ); SDL_ClearError(); texture = SDL_CreateTextureFromSur

我回到了几个月前用SDL2.0.5AFAIR编写的一个项目,现在我将它更新到最新的可用版本

当我的应用程序调用
SDL\u CreateTextureFromSurface(渲染器,曲面)
时,
SDL\u GetError()
抱怨
曲面没有颜色键
消息

我几乎可以肯定这个错误是新的,但我不知道为什么

我的代码是:

SDL_Surface* surface = IMG_Load( imgName );
SDL_ClearError();
texture = SDL_CreateTextureFromSurface( renderer, surface );
if (strlen(SDL_GetError()) > 0)
{
    LOG_mes(WID_ERR_NO_TEXTURE, SDL_GetError());
}

如果您能帮助我,请告诉我SDL2_图像文档,因为找到的信息对我没有帮助,因为链接似乎已断开。

您怎么会认为有错误?
纹理
是否为空?如果没有,就没有理由查看
SDL\u GetError
,它可能包含任何内容(SDL有时会在次要的非关键事件上引发错误消息)。@keltar,如果我调用
SDL\u CleaError()
然后在调用SDL函数后在
SDL\u GetError()
中获取某些内容,我真的不同意,这意味着一个生成的错误可能很小,但出了问题。我可以相信返回值不是空的,但我肯定我以前没有得到它,所以2.0.8中可能有小错误,2.0.9中可能有严重错误,如何知道?我宁愿解决它<代码>该消息仅在SDL功能发出错误信号时适用。必须检查SDL函数调用的返回值,以确定何时正确调用SDL_GetError()。。由于SDL内部的原因,可能会设置错误消息,但如果它是在SDL本身中处理的,并且您没有理由查看错误消息,则可以。例如,
SDL_Init(SDL_Init_VIDEO)
几乎总是在X11上设置错误消息,这是完全正确的。为了澄清这与错误的严重性无关,所讨论的函数使用了其他SDL函数,其中一些函数可能会引发错误消息,但更高级别的函数会优雅地处理错误消息并产生所需的结果;不会返回任何错误指示,因此可能设置的任何消息都不再有意义(在引发该消息时有意义,但不是您调用了错误引发函数,并且该错误已得到处理)。清除每个操作上的错误会适得其反,对性能有害,因此SDL不会这样做。所以这不是一个提示或警告,您不应该检查错误消息。@keltar。好的,我明白了,非常感谢。