3

私はこのチュートリアルに従ってきましたが、ビットマップをロードして使用する方法を説明するところまで来ました。現在のコードは次のとおりです。

#include "SDL/SDL.h"
#include <stdlib.h>

int main (int arg, char *argc[]) {
    SDL_Surface* screen = NULL;
    SDL_Surface* hello = NULL;

    SDL_Init(SDL_INIT_EVERYTHING);

    screen = SDL_SetVideoMode (256, 256, 32, SDL_SWSURFACE);
    hello = SDL_LoadBMP("hello world.png"); // Here
    if (hello == NULL) exit(0);

    SDL_BlitSurface(hello, NULL, screen, NULL);
    SDL_Flip(screen);

    SDL_Delay(2000);

    SDL_FreeSurface(hello);

    SDL_Quit();

    return 0;
}

ただし、helloはNULL以外の値を取得することはありません。私はCode::Blocksを使用しており、プロジェクトのすべての可能なディレクトリ(bin、obj、Debugのいずれか、.cbpのあるディレクトリ)にhello world.pngを分散させるか、パス全体を指定します。コード内の画像に(SDL_LoadBMP( "C:\ Dir \ hello world.png")のように)helloNULLを取得します。

私は何が間違っているのですか?

OSはWindowsです


編集:わかりました、どうやらSDL_LoadBMPは.bmpファイルしかロードできません!なんてばかげている。

4

2 に答える 2

1

編集: SDL_LoadBMP と IMG_Load を混合しました。これが私の新しい答えです:

IMG_Loadを呼び出すには、 SDL イメージ( SDL_Image.hをインクルードし、SDL_image.lib をリンクし、ファイル タイプに適した DLL が必要な場合はバイナリに含まれていることを確認します) を使用できます。IMG_Load は、ファイル タイプを解決し、適切なロードを使用して新しい SDL サーフェスを作成します。作業が完了したら、サーフェスを解放することを忘れないでください。

于 2012-11-12T16:30:03.690 に答える
0

はい、ビットマップのみをロードします。SDL_Imageを使用して、png などの他のタイプを読み込むことができます。

于 2012-11-12T19:48:08.447 に答える