2012-04-08 27 views
0

わかりやすくするために、私が現在取り組んでいるプロジェクト用に独自の関数を作成したかったのです。SFMLとSDLでイメージを読み込むことができません。

//SDL 
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC) 
{ 
    imgSRC = SDL_LoadBMP(file); 

    if (imgSRC == NULL) 
    { 
     printf("Couldn't load IMG \n", stderr); 
     exit(1); 
    } 
} 


void IMG_HANDLER::SetImage(int x, int y, const char *file, SDL_Surface *dest, SDL_Surface *imgSRC) 
{ 

loadImage(file, imgSRC); 
    SDL_Rect offset; 
    offset.x=x; 
    offset.y=y; 


    SDL_BlitSurface(imgSRC,NULL,dest, &offset); 

} 

//SFML 

bool SpriteLoad::LoadSprite(std::string filename) 
{ 
    if (!Image.LoadFromFile(filename.c_str())) 
    { 
     printf("Can't load image file", stderr); 

     exit(1); 
     return false; 
    } 
    Sprite.SetImage(Image); 
    return true; 
} 

場合は特に、私は、それによってかなり混乱している:残念ながら、それはエラーチェック後に決算に保たれ、私はそれはそれの故障がそれから何かをロードしないようにできることですが、ここでの機能だということが分かりましたコードは完全にコンパイルされます。これをどうやって解決するのですか?一瞬SFMLコードを無視

+0

*特に、コードが完全にコンパイルされていると、かなり混乱します。*すべてのコードがコンパイルされているだけなので... –

+0

ハハ、本当です。私はまだこの種のことに新しいです。 –

答えて

1

は、私は1つの問題はimgSRCの値がloadImageを離れることはありません

//SDL 
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC) 
{ 
    imgSRC = SDL_LoadBMP(file); 

    if (imgSRC == NULL) 
    { 
     printf("Couldn't load IMG \n", stderr); 
     exit(1); 
    } 
} 

だと思います。代わりに参照としてimgSRCを作成するか、値をloadImageから戻すことができます。それは次のとおりです。

void IMG_HANDLER::loadImage(const char * file, SDL_Surface* &imgSRC) 

か:

SDL_Surface *IMG_HANDLER::loadImage(const char * file) 

This questionは最近頼まれた、および動作を説明する必要があります。

これらの両方が機能していない限り、画像ファイルが適切な形式であることを確認してください。

+0

簡単な質問、クラスの関数を配列に入れることはできますか?同様に:image [0] = prompt_img.loadImage( "image.bmp"); –

+0

@JanEstra戻り値を配列に入れることができます。したがって、 'loadImage'がイメージを返した場合は、他の変数と同様に結果を使用します。関数自体を*配列に入れる場合は、配列の型を単に関数ポインタにすることもできますし、*関数の動作を*使用することができます[Functors](http://en.wikipedia.org/wiki/Function_object#In_C_and_C.2B.2B)。 –

関連する問題