【问题标题】:can i use SDL-1.2.15 with SDL2-image extension?我可以将 SDL-1.2.15 与 SDL2-image 扩展一起使用吗?
【发布时间】:2014-01-27 04:21:24
【问题描述】:

我在代码块 12.11 中安装了 SDL 版本 1.2.15,当我尝试将它与 SDL2-image 扩展一起使用时,我遇到了某个问题。当我单击“运行”时,会弹出一个窗口并立即消失。我跟着从这个视频http://lazyfoo.net/SDL_tutorials/lesson03/windows/codeblocks/index.php安装sdl2-image扩展的说明 .这是我所做的 我将sdl2-image扩展名中lib下的所有文件转移到代码块安装目录的lib文件夹中,并将sdl2-image扩展名的include i.e-sdl2文件夹下的所有文件转移到代码块的包含目录和sdl2-的lib下的所有文件生成的程序的exe目录的图像扩展名。 当我运行它时没有错误但窗口出现并立即消失我的程序代码是

  #include "SDL/SDL.h"
  #include "SDL2/SDL_image.h"
  #include <string>

  //Screen attributes
  const int SCREEN_WIDTH = 640;
  const int SCREEN_HEIGHT = 480;
  const int SCREEN_BPP = 32;

  //The surfaces
  SDL_Surface *background = NULL;
  SDL_Surface *foo = NULL;
  SDL_Surface *screen = NULL;

 //The event structure
 SDL_Event event;

 SDL_Surface *load_image( std::string filename )
{
  //The image that's loaded
  SDL_Surface* loadedImage = NULL;

 //The optimized image that will be used
 SDL_Surface* optimizedImage = NULL;

 //Load the image
 loadedImage = IMG_Load( filename.c_str() );

 //If the image loaded
 if( loadedImage != NULL )
 {
     //Create an optimized image
     optimizedImage = SDL_DisplayFormat( loadedImage );

    //Free the old image
    SDL_FreeSurface( loadedImage );

    //If the image was optimized just fine
    if( optimizedImage != NULL )
    {
        //Map the color key
        Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF );

        //Set all pixels of color R 0, G 0xFF, B 0xFF to be transparent
        SDL_SetColorKey( optimizedImage, SDL_SRCCOLORKEY, colorkey );
     }
  }

  //Return the optimized image
  return optimizedImage;
 }

  void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination )
 {
  //Temporary rectangle to hold the offsets
  SDL_Rect offset;

 //Get the offsets
 offset.x = x;
 offset.y = y;

  //Blit the surface
  SDL_BlitSurface( source, NULL, destination, &offset );
 }

  bool init()
 {
  //Initialize all SDL subsystems
  if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
 {
    return 1;
 }

 //Set up the screen
 screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );

 //If there was an error in setting up the screen
 if( screen == NULL )
 {
    return 1;
 }

 //Set the window caption
 SDL_WM_SetCaption( "Foo says \"Hello!\"", NULL );

 //If everything initialized fine
 return true;
}

bool load_files()
{
 //Load the background image
 background = load_image( "background.png" );

 //If the background didn't load
 if( background == NULL )
 {
     return false;
 }

 //Load the stick figure
 foo = load_image( "foo.png" );

 //If the stick figure didn't load
 if( foo == NULL )
 {
     return false;
 }

 return true;
}

void clean_up()
{
 //Free the surfaces
 SDL_FreeSurface( background );
 SDL_FreeSurface( foo );

 //Quit SDL
 SDL_Quit();
 }

  int main( int argc, char* args[] )
   {
  //Quit flag
  bool quit = false;

  //Initialize
  if( init() == false )
  {
      return 1;
  }

  //Load the files
  if( load_files() == false )
  {
    return 1;
  }

  //Apply the surfaces to the screen
   apply_surface( 0, 0, background, screen );
  apply_surface( 240, 190, foo, screen );

  //Update the screen
  if( SDL_Flip( screen ) == -1 )
  {
    return 1;
  }

  //While the user hasn't quit
  while( quit == false )
  {
      //While there's events to handle
     while( SDL_PollEvent( &event ) )
      {
        //If the user has Xed out the window
        if( event.type == SDL_QUIT )
        {
            //Quit the program
            quit = true;
        }
    }
    }

    //Free the surfaces and quit SDL
    clean_up();

   return 0;
  }   

代码或安装过程有问题还是 sdl2-image-2.0.0 扩展与 sdl-1.2.15 不兼容?帮助

【问题讨论】:

    标签: c++ sdl sdl-2


    【解决方案1】:

    您需要从此处使用旧版本的 SDL_Image:http://www.libsdl.org/projects/SDL_image/release-1.2.html,或者您需要更新到 SDL2.0.1。我建议迁移到 SDL 2.0.1,因为它是一个更现代的图形库。

    【讨论】:

    • 所以是兼容性问题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2018-03-14
    • 2012-12-27
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多