我加载SDL_Surface后,我自己定义的类中的SDL_Surface(Actor)返回NULL。经过多次控制台输出并使用GDB查找错误可能出现的位置。 Actor类包含指向SDL_Surface的指针,Actor :: getSurface返回指向SDL_Surface的指针。
当然,您相信显示的更多代码将有助于解决问题,我很乐意与您分享。
我的节目输出是:
--Surface was loaded.
Surface is NULL after loading.
我删除了代码中不重要的部分。
main.cpp中:
SDL_Init( SDL_INIT_EVERYTHING );
Actor sprite;
sprite.loadSurface("images/bg.bmp");
if( sprite.getSurface() == NULL )
std::clog << "Surface is NULL after loading." << std::endl;
Actor.cpp
bool Actor::loadSurface(std::string t_filename)
{
std::clog << "-ACTOR " << m_id << " LOADSURFACE" << std::endl;
SDL_Surface * loadedImage = NULL;
m_surface = NULL;
loadedImage = IMG_Load( t_filename.c_str() );
if( loadedImage != NULL )
{
std::clog << "--Surface was loaded." << std::endl;
m_surface = SDL_DisplayFormatAlpha( loadedImage );
SDL_FreeSurface( loadedImage );
return true;
}
std::clog << "--Surface was not loaded." << std::endl;
return false;
}
答案 0 :(得分:0)
您的SDL_DisplayFormatAlpha
似乎会返回NULL
。
如果您在尝试转换图片之前没有调用SDL_SetVideoMode
,可能会发生这种情况,请确认是这种情况。
导致NULL
返回值的另一个选项是内存不足。