这是我的 main.cpp
#include <cstdlib>
#include <iostream>
#include "Sprite.h"
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include "SDL/SDL_mixer.h"
#undef main
SDL_Surface* m_pScreen;
SDL_Surface* bg_image;
int main(int argc, char* argv[]){
SDL_Event evt;
bool p_running = true;
// initialize SDL
SDL_Init(SDL_INIT_EVERYTHING);
SDL_EnableUNICODE( SDL_ENABLE );
TTF_Init();
// set the title bar text
SDL_WM_SetCaption("test1", NULL);
// create the screen surface
m_pScreen = SDL_SetVideoMode(500, 400, 32, SDL_DOUBLEBUF);
bg_image = NULL;
bg_image = Sprite::Load("images/bg.png");
Sprite::Draw(m_pScreen, bg_image, 0, 0);
while(p_running)
{
SDL_WaitEvent(&evt);
if(evt.type == SDL_QUIT)
p_running = false;
}
SDL_Quit();
system("pause");
return 0;
}
雪碧.h:
#ifndef _SPRITE_H_
#define _SPRITE_H_
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
class Sprite
{
public:
Sprite();
static SDL_Surface* Load(char* pFile);
static bool Draw( SDL_Surface* dest, SDL_Surface* src, int x, int y );
static bool Draw( SDL_Surface* dest, SDL_Surface* src, int x, int y, int x2,
int y2, int width, int height );
};
// constructor
Sprite::Sprite() {}
SDL_Surface* Sprite::Load( char* File )
{
SDL_Surface* temp = NULL;
SDL_Surface* optimized = NULL;
if(( temp = IMG_Load(File)) == NULL )
{
return NULL;
}
optimized = SDL_DisplayFormatAlpha(temp);
SDL_FreeSurface(temp);
//Uint32 colorkey = SDL_MapRGB( optimized->format, 0xFF, 0x80, 0xC0 );//0xFF, 0x04, 0xC1 );
//SDL_SetColorKey( optimized, SDL_RLEACCEL | SDL_SRCCOLORKEY, colorkey );
return optimized;
}
bool Sprite::Draw( SDL_Surface* dest, SDL_Surface* src, int x, int y )
{
if(dest == NULL || src == NULL)
{
return false;
}
SDL_Rect destR;
destR.x = x;
destR.y = y;
SDL_BlitSurface(src, NULL, dest, &destR);
return true;
}
#endif
我创建了一个名为 images 的文件夹,并在其中添加了一个名为 bg.png 500x400 的文件,带有一些黑色背景和一些白线,因此我可以将其设置为我的背景...
问题是我总是得到黑屏而不是我尝试加载的图像