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"),前面的 ./ 就不需要了。

顺便说一句,在一行上初始化你的表面没有任何问题:

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