2

コード例を次に示します。

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <stdio.h>

int main()
{
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
    {
        printf("SDL ERROR: %s", SDL_GetError());
        return 1;
    }

    SDL_Surface *screen;
    screen = SDL_SetVideoMode(128, 128, 32, SDL_SWSURFACE);

    SDL_Surface *img;
    img = IMG_Load("./debug.png");

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

    SDL_Delay(1000);

    SDL_FreeSurface(img);
    SDL_Quit();
    return 0;
}

正常にコンパイルされますが、実行すると時々動作し、ほとんどの場合、画像の一部しか表示されません。何が原因なのか全く想像がつきません…

編集:これは、プログラムをテストするために使用している画像です:

画像

4

1 に答える 1

0

debug.png が main.cpp と同じフォルダーにある場合は、IMG_Load("debug.png") を呼び出すだけで、先頭の ./ は必要ありません。

余談ですが、サーフェスを 1 行で初期化しても問題はありません。

SDL_Surface* screen = SDL_SetVideoMode(128, 128, 32, SDL_SWSURFACE);
//and
SDL_Surface* img = IMG_Load("debug.png");
于 2012-05-11T19:23:43.410 に答える