我可以使用SDL-1.2.15与SDL2图像扩展吗? [英] can i use SDL-1.2.15 with SDL2-image extension?

查看:148
本文介绍了我可以使用SDL-1.2.15与SDL2图像扩展吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有SDL版本1.2.15安装在代码块-12.11当我尝试使用它与SDL2图像扩展我遇到了一定的问题。当我点击运行一个窗口弹出并消失了instanly。从此视频安装sdl2图片扩展程序的说明 http://lazyfoo.net /SDL_tutorials/lesson03/windows/codeblocks/index.php
。这是我做的
i将所有在lib下的文件sdl2-image扩展转移到libblock文件夹的codeblock istallation目录和所有的文件下包括ie-sdl2文件夹下的sdl2-image扩展包括codeblock的目录和lib下的所有文件sdl2-image扩展到程序的exe目录下。
当我运行它没有错误,但窗口出现和现在消失我的程序的代码是

I have SDL version 1.2.15 install in code block-12.11 when i tries to use it with SDL2-image extension i ran into a certain problem .When i click 'run' a window pop up and vanishes instanly .I followed the instruction of installing the sdl2-image extension from this video http://lazyfoo.net/SDL_tutorials/lesson03/windows/codeblocks/index.php .Here is what i did i transfer all the files under lib in sdl2-image extension to lib folder of the codeblock istallation directory and all the files under include i.e-sdl2 folder of sdl2-image extension to include directory of the codeblock and all the files under lib of sdl2-image extension to the exe directory of the program made. when i run it there is no error but the windows appear and vanishes instanly the code of my program is

  #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不兼容? help

is something wrong with the code or installation process or is sdl2-image-2.0.0 extension not compatible with sdl-1.2.15? help

推荐答案

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

You will either need to use an old version of SDL_Image from here: http://www.libsdl.org/projects/SDL_image/release-1.2.html or you will need to update to SDL2.0.1. I would recommend moving to SDL 2.0.1 because it is a much more modern graphics library.

这篇关于我可以使用SDL-1.2.15与SDL2图像扩展吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆