0

SDL_Surface をロードした後、独自に定義したクラス Actor 内の SDL_Surface が 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;

アクター.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;
}
4

1 に答える 1

0

SDL_DisplayFormatAlpha戻ってきたようNULLです。

SDL_SetVideoModeこれは、画像を変換する前に呼び出さなかった場合に発生する可能性があります。これが事実であることを確認してください。

戻り値の原因となる別のオプションはNULL、メモリが不足している場合です。

于 2013-01-12T11:48:51.107 に答える