рдПрд╕рдбреАрдПрд▓ 2 рдкрд░ рд╕рдмрдХ: рдкрд╛рда 4 - рдЯреВрдЯрддреА рдкреАрдПрдирдЬреА

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдПрд╕рдбреАрдПрд▓ 2 рдореЗрдВ рдЪреМрдерд╛ рдкрд╛рда рд╣реИред рдореИрдВрдиреЗ рджреЛ рдкрд╛рдареЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рдореЗрдВ рд╡реЗ рдЫреЛрдЯреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЦреИрд░, рд╕рдмрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рддрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред рдЖрдЬ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди (BMP) рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН: PNGред рдХрд╛рд░реНрдп рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдФрд░ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБред рд╣рдо рдЗрд╕ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:

рдЫрд╡рд┐

рд╕реНрдерд╛рдкрдирд╛


рддреЛ, рдкрд╣рд▓реЗ рд╣рдо рд╕реАрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреАрдПрдирдЬреА рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдорд╛рдирдХ SDL 2 рд╕реБрд╡рд┐рдзрд╛ рд╕реЗрдЯ рдореЗрдВ, рдПрдХ рдЧреИрд░ BMP рдкреНрд░рд╛рд░реВрдк рдЫрд╡рд┐ рдХрд╛ рдХреЛрдИ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:

рд╡рд┐рдВрдбреЛрдЬ
рдЖрдк рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдиреБрднрд╛рдЧ рд╕реЗ ZIP рдпрд╛ TAR.GZ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВред

рд▓рд┐рдирдХреНрд╕
рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рдбреЗрдмрд┐рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

apt-cache search libsdl2-image apt-get install libsdl2-image-dev 

рдпрджрд┐ рдпрд▓реЛрдбреЙрдЧ рдЕрдкрдбреЗрдЯрд░, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:

 yum search SDL2_image-devel yum  SDL2_image-devel 


рдореИрдХ рдУрдПрд╕
DMG рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд░реАрдбрдореА рдкрдврд╝реЗрдВред

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛


SDL_image рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рд╣рдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗ, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ 3 рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдмрдирд╛рдПрдВрдЧреЗред

 #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <iostream> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Surface *scr = NULL; SDL_Surface *flower = NULL; 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ SDL_image.h рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред

рдЕрдЧрд▓рд╛, рд╣рдо 3 рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЬреНрдЮрд╛рдд рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдФрд░ рдмрджрд▓реЗрдВрдЧреЗред

Init ()
 bool init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { std::cout << "Can't init video: " << SDL_GetError() << std::endl; return false; } int flags = IMG_INIT_PNG; if ( !( IMG_Init( flags ) & flags ) ) { std::cout << "Can't init image: " << IMG_GetError() << std::endl; return false; } win = SDL_CreateWindow(" PNG", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { std::cout << "Can't create window: " << SDL_GetError() << std::endl; return false; } scr = SDL_GetWindowSurface(win); return true; } 


рдпрд╣рд╛рдБ рд╣рдордиреЗ SDL_image рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрд╕реЗ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдПрдХ рдЕрдВрддрд░ рдЪрд░ рдмрдирд╛рдПрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЭрдВрдбреЗ рд╣реИрдВ , рдФрд░ рдЙрди рд╕рднреА рдЭрдВрдбреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╕рднреА рдЭрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА
SDL_INIT_PNG - PNG рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ;
SDL_INIT_JPG - рдЬреЗрдкреАрдЬреА рдЗрдореЗрдЬ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ;
SDL_INIT_TIF - TIF рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ;

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рд╢рд░реНрдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 if ( !( IMG_Init( flags ) & flags ) ) 

IMG_Init () рдлрд╝рдВрдХреНрд╢рди рдЙрди рдЭрдВрдбреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЕрдЧрд░ рдЙрд╕рдиреЗ рдЭрдВрдбреЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдП, рд▓реЗрдХрд┐рди рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ рд╡рд╣ рдЧрд╛рдпрдм рдерд╛, рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ SDL_GetError рдХреЗ рдмрдЬрд╛рдп IMG_GetError рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ , рдХреНрдпреЛрдВрдХрд┐ рд╣рдо SDL_image рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, SDL_GetError рдирд╣реАрдВред

рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреВрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ - рдпрд╣ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рддрд░реАрдХрд╛ рд╣реИред

рдЖрдЗрдП рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рд▓реЛрдб () рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдкреАрдПрдирдЬреА рдЫрд╡рд┐ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рднрд╛рд░
 bool load() { flower = IMG_Load("flower.png"); if (flower == NULL) { std::cout << "Can't load: " << IMG_GetError() << std::endl; return false; } flower = SDL_ConvertSurface(flower, scr->format, NULL); if (flower == NULL) { std::cout << "Can't convert: " << SDL_GetError() << std::endl; return false; } return true; } 


рдпрд╣рд╛рдВ рд╣рдо рдирдП IMG_Load рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп SDL_LoadBMP рдХреЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реИ - рдпрд╣ SDL_Surface рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо IMG_GetError рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред

рдпрд╣ рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдкрд╣рд▓рд╛, рдереЛрдбрд╝рд╛ рд╕рд┐рджреНрдзрд╛рдВрддред рдХреБрдЫ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдИ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ 24 рдмрд┐рдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдбрд┐рд╕реНрдкреНрд▓реЗ 32 рдмрд┐рдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА, рддреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ 32 рдмрд┐рдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░реАрдореЗрдХ рдХрд░реЗрдВрдЧреЗред SDL_ConvertSurface рдлрд╝рдВрдХреНрд╢рди рдорджрдж рдХрд░реЗрдЧрд╛ред рдпрд╣ 3 рдорд╛рди рд▓реЗрддрд╛ рд╣реИ: рдЬрд┐рд╕ рд╕рддрд╣ рдХреЛ рд╣рдо рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдкреНрд░рд╛рд░реВрдк рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЭрдВрдбреЗред рд╣рдо рдлреВрд▓ рдЫрд╡рд┐ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЦрд┐рдбрд╝рдХреА рдХреА рд╕рддрд╣ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ, рд╣рдо рдЭрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рддрд╣ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рддреБрд░рдВрдд рдлреВрд▓ рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SDL_GetError () рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рддрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡реЗ SDL рд╕реЗ рд╣реИрдВ , рдФрд░ SDL_image рд╕реЗ рдирд╣реАрдВред

рдЖрдЧреЗ рд╣рдо рдХреНрд╡рд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред

рдЫреЛрдбрд╝рдирд╛
 void quit() { SDL_FreeSurface(flower); SDL_FreeSurface(scr); SDL_DestroyWindow(win); SDL_Quit(); IMG_Quit(); } 


рд╣рдордиреЗ SDL_image рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯрд╛рд▓реНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IMG_Quit рдЬреЛрдбрд╝рд╛ред

рдореБрдЦреНрдп


рдЕрдм рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреАрдЬ рдмрдиреА рд╣реБрдИ рд╣реИ - рдореБрдЦреНрдп рдХрд╛рд░реНрдпред

 int main (int argc, char ** args) { if (!init()) { system("pause"); quit(); return 1; } if (!load()) { system("pause"); quit(); return 1; } 

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬреЗрдВ рдмрдирд╛рдПрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред рд╣рдо рдпрд╣рд╛рдВ рдирд╣реАрдВ рд░реБрдХреЗрдВрдЧреЗред

  SDL_Rect bg_flower; bg_flower.w = SCREEN_WIDTH; bg_flower.h = SCREEN_HEIGHT; bg_flower.x = 0; bg_flower.y = 0; 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд░реНрдЧ SDL_Rect рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ ред рд╣рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рджреЗрдВ, рддреЛ рдлреВрд▓ рдХреА рдЫрд╡рд┐ рдЦрд┐рдбрд╝рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 4 рдЧреБрдирд╛ рдЫреЛрдЯреА рд╣реИ (2 рдЧреБрдирд╛ рдкрддрд▓реА рдФрд░ 2 рдЧреБрдирд╛ рдХрдо), рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдЦрд┐рдбрд╝рдХреА рдкрд░ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдЖрдпрдд рдХреА рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ bg_flower рдЦрд┐рдбрд╝рдХреА рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдорд╛рди рд▓рд┐рдЦреЗрдВ, рдФрд░ рдКрдВрдЪрд╛рдИ рдореЗрдВ - рдЦрд┐рдбрд╝рдХреА рдХреА рдКрдВрдЪрд╛рдИред рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ 0 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЫрд╡рд┐ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред

рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  SDL_BlitScaled(flower, NULL, scr, &bg_flower); 

рдЗрд╕рдХреЗ 4 рдЕрд░реНрде рд▓рдЧрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рд╡рд╣ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ рд╡рд╣ рдЖрдпрдд рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рдЫрд╡рд┐ рд╕реЗ рдХрд╛рдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрджрд┐ рд╣рдо рдкреВрд░реА рдЫрд╡рд┐ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо NULL рд▓рд┐рдЦрддреЗ рд╣реИрдВ), рддреАрд╕рд░реА рд╡рд╣ рд╕рддрд╣ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЪреМрдерд╛ рдПрдХ рд╣реА рдЖрдпрдд рд╣реИ, рдЖрдпрд╛рдо рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рдЫрд╡рд┐ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдпрд╛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рдмрд╕ рд╕реНрдХреНрд░реАрди рдХреА рд╕рддрд╣ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рджреЗрд░реА рд╕реЗрдЯ рдХрд░реЗрдВ, рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдФрд░ 0 рд▓реМрдЯреЗрдВред

  SDL_UpdateWindowSurface(win); SDL_Delay(2000); quit(); return 0; }; 

рдпрд╣реАрдВ рдкрд░ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ -lSDL2_image рдХреЛ рдПрдХ рдЕрдиреНрдп рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдФрд░ рдЗрд╕ рдкрд░ рд╣рдо рдЖрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣рд╛рдБ рдХреЛрдб рд╣рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ:

 #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <iostream> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Surface *scr = NULL; SDL_Surface *flower = NULL; bool init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { std::cout << "Can't init video: " << SDL_GetError() << std::endl; return false; } int flags = IMG_INIT_PNG; if ( !( IMG_Init( flags ) & flags ) ) { std::cout << "Can't init image: " << IMG_GetError() << std::endl; return false; } win = SDL_CreateWindow(" PNG", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { std::cout << "Can't create window: " << SDL_GetError() << std::endl; return false; } scr = SDL_GetWindowSurface(win); return true; } bool load() { flower = IMG_Load("flower.png"); if (flower == NULL) { std::cout << "Can't load: " << IMG_GetError() << std::endl; return false; } flower = SDL_ConvertSurface(flower, scr->format, NULL); if (flower == NULL) { std::cout << "Can't convert: " << SDL_GetError() << std::endl; return false; } return true; } void quit() { SDL_FreeSurface(flower); SDL_FreeSurface(scr); SDL_DestroyWindow(win); SDL_Quit(); IMG_Quit(); } int main (int argc, char ** args) { if (!init()) { system("pause"); quit(); return 1; } if (!load()) { system("pause"); quit(); return 1; } SDL_Rect bg_flower; bg_flower.w = SCREEN_WIDTH; bg_flower.h = SCREEN_HEIGHT; bg_flower.x = 0; bg_flower.y = 0; SDL_BlitScaled(flower, NULL, scr, &bg_flower); SDL_UpdateWindowSurface(win); SDL_Delay(2000); quit(); return 0; }; 

рд╕рдмрдХреЛ рдмрд╛рдп!

<< рдкрд┐рдЫрд▓рд╛ рдкрд╛рда || рдЕрдЧрд▓рд╛ рдкрд╛рда >>

Source: https://habr.com/ru/post/hi456656/


All Articles