рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХрд┐ рдкрд░ SDL2.x рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЦреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╣рдо RuNet рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЗрдЦ рдорд┐рд▓реЗ, рдЬреЛ рдореЗрд░реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдПрдХ рддрд┐рд╣рд╛рдИ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рднреА рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред
рдПрд╕рдбреАрдПрд▓ 2.x 1.x рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрддреАрдд рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдерд╛, рддреЛ рдЕрдм рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕рдордЭрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВред
рдЖрдЬ рд╣рдо рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ WASD рдФрд░ рддреАрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдПрдХ рдЬрд╝реВрдорд┐рдд рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред + рд╣рдо рдПрд╕рдбреАрдПрд▓ рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдиреЗрдВрдЧреЗред
рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП :
- SDL2.h
- SDL2_image.h
- SDL2_mixer.h
рдпрд╣ рд╕рдм рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рд╕реЗ рд╣реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рдПрд╕рдбреАрдПрд▓ рдЖрд░рдВрднреАрдХрд░рдг
рдХрдХреНрд╖рд╛
SDL_DisplayMode рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдХрд░ рд╢реБрд░реВ
рдХрд░рддреЗ рд╣реИрдВ ред
рдЕрдЧрд░ рд╣рдо рдлреБрд▓-рд╕реНрдХреНрд░реАрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ SDL рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
SDL_DisplayMode displayMode;
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЦреБрдж SDL рдХреЛ
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
if (SDL_Init(SDL_INIT_EVERYTHING) != 0){ std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; }
SDL_INIT_EVERYTHING
рдзреНрд╡рдЬ рд╕рднреА SDL
SDL_INIT_EVERYTHING
рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдмрд╕ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдХреА рдкрд░ рдЖрдк рдЙрдирдХреА рдкреВрд░реА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдореЗрдВ
рдореЙрдирд┐рдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ
SDL_GetDesktopDisplayMode(*int displayIndex, SDL_DisplayMode* mode)
рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ 0 рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рдФрд░
SDL_GetDesktopDisplayMode(*int displayIndex, SDL_DisplayMode* mode)
рд╕рд╛рде рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА
SDL_GetDesktopDisplayMode(*int displayIndex, SDL_DisplayMode* mode)
ред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ 0 рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдореБрдЦреНрдп рдореЙрдирд┐рдЯрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рд╣рдо
displayMode
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
int request = SDL_GetDesktopDisplayMode(0,&displayMode)
рдпрд╣ рд╣рдорд╛рд░реА
рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ,
SDL_Window
рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдмрдирд╛рдПрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
SDL_Window* SDL_CreateWindow(const char* title, int x, int y, int w, int h, Uint32 flags)
рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдХреНрдпрд╛ рд╣реИред
- рд╢реАрд░реНрд╖рдХ - рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдирд╛рдоред
- x, y - рд╡рд┐рдВрдбреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред рдпрджрд┐ рд╣рдо рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЗрдВ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
0,0
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдбрдмреНрд▓реНрдпреВ, рдПрдЪ - рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ред рд╕реНрдХреНрд░реАрди рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
displayMode
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред - рдЭрдВрдбреЗ - рдпрд╣рд╛рдБ рд╣рдо рдЦрд┐рдбрд╝рдХреА рдЖрд░рдВрднреАрдХрд░рдг рдЭрдВрдбреЗ рд╕реЗрдЯ рдХрд░реЗрдВред рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рдФрд░
SDL_WINDOW_FULLSCREEN
рдзреНрд╡рдЬ SDL_WINDOW_FULLSCREEN
, рдФрд░ рдпрд╣рд╛рдВ рдореИрдВ рдЕрдкрдиреЗ DisplayMode
рд╕рд╛рде рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ SDL_WINDOW_FULLSCREEN
рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ!
рдЙрддреНрдкрд╛рджрдХ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдПрдХ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ рдФрд░ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд╡рд╣реА SDL_WINDOW_FULLSCREEN
рдЕрд╡рд╛рд╕реНрдЯ рдЪрд┐рд▓реНрд▓рд╛рдпрд╛ рдХрд┐ рд╡реЗ рдореБрдЭреЗ рд╣реИрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдереЗред
SDL_WINDOW_SHOWN - рд╡рд┐рдВрдбреЛ рдХреЛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд┐рдореНрди рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:
SDL_Window *win = SDL_CreateWindow("Hello World!", 0, 0, displayMode.w, displayMode.h, SDL_WINDOW_SHOWN); if (win == nullptr){ std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl; return 1; }
рдЕрдм рд╣рдореЗрдВ рдПрдХ
рд░реЗрдВрдбрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
SDL_Renderer* SDL_CreateRenderer(SDL_Window* window, int index, Uint32 flags)
- window - рд╡рд╣ рд╡рд┐рдВрдбреЛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
- рд╕реВрдЪрдХрд╛рдВрдХ - рдЪрд╛рд▓рдХ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдЬреЛ рд░реЗрдВрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк
-1
рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд░реЗрдВрдбрд░ рдкрд╣рд▓реЗ рдЙрдкрдпреБрдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред - рдЭрдВрдбреЗ - рдЭрдВрдбреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рдкреВрд░реА рд╕реВрдЪреА рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡рд┐рдХреА рдкрд░ рд╣реИред
рдореИрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ SDL_RENDERER_PRESENTVSYNC
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдХреНрд╕реЗрд▓реЗрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдФрд░ SDL_RENDERER_PRESENTVSYNC
рдЙрдкрдпреЛрдЧ SDL_RENDERER_ACCELERATED
ред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:
SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == nullptr){ std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl; return 1; }
рдЕрдм рдПрд╕рдбреАрдПрд▓ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ!
рд╕реНрдХреНрд░реАрди рдЖрдЙрдЯрдкреБрдЯ
рдпрд╣ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рд╡рд░реНрдЧ
SDL_Rect
2 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдЬреИрд╕реЗ рд╣рдорд╛рд░реЗ рдмрдирд╛рд╡рдЯ рдХреЗ рднреМрддрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВрдЧреЗред
SDL_Rect player_RECT; player_RECT.x = 0; // player_RECT.y = 0; // Y player_RECT.w = 333; // player_RECT.h = 227; // SDL_Rect background_RECT; background_RECT.x = 0; background_RECT.y = 0; background_RECT.w = displayMode.w; background_RECT.h = displayMode.h;
рдФрд░ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдЪрд░рд┐рддреНрд░ рдкрд░ рдЬрд╝реВрдо рдХрд░ рд╕рдХреЗрдВ:
const int player_WIGHT = 333;
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрдирд╛рд╡рдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИред
рдореИрдВ 2 рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛:
рд▓реЗрдХрд┐рди рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ SDL1.x рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рдереЗ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдм рднреА рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ SDL рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ) рдХреЛрдИ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
SDL рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ 4 рдореБрдЦреНрдп рд╡рд░реНрдЧ / рд╕рдВрд░рдЪрдирд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
SDL_Texture
, SDL_Rect
, SDL_Render
, SDL_Render
ред
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдВрддрд┐рдо 2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рд╣реИ, рдЖрдЗрдП рдЕрдм рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред
SDL_mixer.h
- SDL_mixer.h
рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдереЛрдбрд╝рд╛ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╡рдХреВрдлреА рд╣реИред
рд╡рд┐рд╡рд░рдгрдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЖрдкрдХреЛ рдмрдирд╛рд╡рдЯ рдореЗрдВ рдЖрдЧреЗ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдмреАрдПрдордкреА рдЫрд╡рд┐ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдЕрдореЛрдШ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдЬрд┐рдд рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ: рдПрдХ рд╢реБрджреНрдз рдПрд╕рдбреАрдПрд▓ рдХреЗрд╡рд▓ рдмреАрдПрдордкреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рд░рдВрдЧ рдореЗрдВ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдУрдПрд╕ рдкрд░ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдПрд╕рдбреАрдПрд▓ рдХреЗ рд╕рднреА рд▓рд╛рдн рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреЛ рдЧрдП рд╣реИрдВред
SDL_Texture
- SDL_Texture
рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдмрдирд╛рд╡рдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд░реЗрдВрдбрд░ рдЗрд╕реЗ рдХрд░ рд╕рдХреЗред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд░реЗрдВрдбрд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:
SDL_RenderCopy(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* srcrect, const SDL_Rect* dstrect) SDL_RenderPresent(SDL_Renderer* renderer)
рдЦреИрд░, рд╣рдордиреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!
рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЦреНрдпрд╛ ONCE:рдпрд╣ рд╡рд┐рдзрд┐
SDL_mixer.h
рдФрд░
SDL_Image.h
, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдХреЗрд╡рд▓ SDL2 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
рдореБрдЭ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рдирд╛ рди рднреВрд▓реЗрдВред
рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЛ рдмрд┐рдирд╛ рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
SDL_Texture *player = IMG_LoadTexture(ren,"..\\res\\player.png")
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЪрд░рд┐рддреНрд░ рдмрдирд╛рд╡рдЯ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЦреНрдпрд╛ TWO:рд╣рдо рд╢реБрджреНрдз рдПрд╕рдбреАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдПрдВрдЧреЗред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
рдпрд╣рд╛рдБ рдХреЛрдб! SDL_Surface *BMP_background = SDL_LoadBMP("..\\res\\background.bmp"); if (BMP_background == nullptr){ std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl; return 1; } SDL_Texture *background = SDL_CreateTextureFromSurface(ren, BMP_background); SDL_FreeSurface(BMP_background); // if (player == nullptr){ std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl; return 1; }
рд╢реБрджреНрдз рдПрд╕рдбреАрдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП!
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣реБрд░реНрд░реЗ, рдЗрд╕реЗ
рд╕реНрдХреНрд░реАрди рдкрд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордп
рд╣реИ! SDL_RenderClear(ren); // SDL_RenderCopy(ren,background,NULL,&background_RECT); // SDL_RenderCopy(ren, player, NULL, &player_RECT); // SDL_RenderPresent(ren); //!!
рдШрдЯрдирд╛рдУрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЦреЗрд▓ 2 рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдЪрдорддреНрдХрд╛рд░ рдореЗрдВ рдХреБрдЫ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп!
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЕрдирдВрдд рдЫреЛрд░реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдШрдЯрдирд╛ рди рд╣реЛ рдФрд░ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рди рд╣реЛ:
SDL_Event event; bool quit = false; while(!quit) while(SDL_PollEvent(&event)) { SDL_PumpEvents();
рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕реАрдзреЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
SDL рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ:
- рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╣рдо рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЫреЛрд░реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
SDL_Texture* ARRAY_textures[2] = {background, player}; SDL_Rect* ARRAY_rect[2] = {&background_RECT, &player_RECT}; int ARRAY_texturesState[2] = {1,1};
рдпрд╣ рдЗрд╕ рдпрд╛ рдЙрд╕ рдмрдирд╛рд╡рдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдЕрдм рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрдирд░ рд▓реВрдк рдореЗрдВ рдбрд╛рд▓реЗрдВред
рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рд╣реИ! if(event.type == SDL_QUIT) quit=true; if(event.type == SDL_MOUSEBUTTONDOWN) { if(event.button.button == SDL_BUTTON_LEFT && event.button.x <=10 && event.button.y <=10) quit = true; if(event.button.button == SDL_BUTTON_RIGHT) ARRAY_texturesState[1] = 1; if((event.button.button == SDL_BUTTON_LEFT) && (event.button.x >= player_RECT.x) && (event.button.y >= player_RECT.y) && (event.button.x <= player_RECT.w + player_RECT.x) && (event.button.y <= player_RECT.h + player_RECT.y)) ARRAY_texturesState[1] = 0; }
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ 21 рджрд┐рдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЙрд╕ event.button.button
рд╕реНрдкрд╖реНрдЯ рдХрд░ event.button.button
, рдЬреЛ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рд╣реИ!
рд╣рдо рд╕реНрдХреНрд░реАрди рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рд╣рдо рдЪрд░рд┐рддреНрд░ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рднреА рд╣рдо рдмрд╕ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!
рд╣рд╛рдВ, рдореБрдЭреЗ рдпрд╣ рднреА рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рд╕рддреНрддрд╛ рдХреА рднрд╛рд╡рдирд╛ рд╣рдо рдкрд░ рд╣рд╛рд╡реА рд╣реЛрдиреЗ рд▓рдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рд░реБрдХрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЕрднреА рднреА рдПрдХ рдХреАрдмреЛрд░реНрдб рдЖрдЧреЗ рд╣реИ!
- рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реВрдк рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
const Uint8 *keyboardState = SDL_GetKeyboardState(NULL);
рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдмрдирд╛рдПрдВрдЧреЗред
(рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рдЗрдХрдЯреНрдард╛ рдХрд░рдХреЗ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦреЗрдВрдЧреЗред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ рдЬрд┐рдирдХреА рднрд╛рд╡рдирд╛рдПрдВ рдореБрдЭреЗ рдЪреЛрдЯ рд▓рдЧреА рд╣реИ!)
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб void move_UP (SDL_Renderer* render, SDL_Texture* texture, SDL_Rect &destrect, int offset = 5) { destrect.y -= offset; SDL_RenderClear(render); SDL_RenderCopy(render, texture,NULL,&destrect); } void move_DOWN (SDL_Renderer* render, SDL_Texture* texture, SDL_Rect &destrect, int offset = 5) { destrect.y += offset; SDL_RenderClear(render); SDL_RenderCopy(render, texture,NULL,&destrect); } void move_LEFT (SDL_Renderer* render, SDL_Texture* texture, SDL_Rect &destrect, int offset = 5) { destrect.x -= offset; SDL_RenderClear(render); SDL_RenderCopy(render, texture,NULL,&destrect); } void move_RIGHT(SDL_Renderer* render, SDL_Texture* texture, SDL_Rect &destrect, int offset = 5) { destrect.x += offset; SDL_RenderClear(render); SDL_RenderCopy(render, texture,NULL,&destrect); } void render_UPDATE(SDL_Renderer* render, SDL_Texture* texture[], SDL_Rect* destrect[], int states[]) { SDL_RenderClear(render); if(states[0]) SDL_RenderCopy(render, texture[0],NULL,destrect[0]); if(states[1]) SDL_RenderCopy(render, texture[1],NULL,destrect[1]); }
рдФрд░ рдЕрдм рд╣рдо рдЖрдВрддрд░рд┐рдХ рдкрд╛рд╢ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ, рдХрдИ рдФрд░ рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб if((keyboardState[SDL_SCANCODE_UP])||(keyboardState[SDL_SCANCODE_W])) move_UP(ren,player,player_RECT); if((keyboardState[SDL_SCANCODE_DOWN])||(keyboardState[SDL_SCANCODE_S])) move_DOWN(ren,player,player_RECT); if((keyboardState[SDL_SCANCODE_LEFT])||(keyboardState[SDL_SCANCODE_A])) move_LEFT(ren,player,player_RECT); if((keyboardState[SDL_SCANCODE_RIGHT])||(keyboardState[SDL_SCANCODE_D])) move_RIGHT(ren,player,player_RECT); //ZOOM---------------------------------------------------------------- if(keyboardState[SDL_SCANCODE_KP_PLUS]) { TESTtexture_SCALE += 0.02; player_RECT.h = player_HEIGH * TESTtexture_SCALE; player_RECT.w = player_WIGHT * TESTtexture_SCALE; } if(keyboardState[SDL_SCANCODE_KP_MINUS]) { TESTtexture_SCALE -= 0.02; player_RECT.h = player_HEIGH * TESTtexture_SCALE; player_RECT.w = player_WIGHT * TESTtexture_SCALE; }
рдпрд╣рд╛рдВ рдХреБрдЫ рдЦрд╛рд╕ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ рдХрд┐ keyboardState[flag]
рдирд┐рд░реНрдорд╛рдгред
рдпрджрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдореЗрдВ false
рд╣реЛрддрд╛ true
рддреЛ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди true
рд╣реЛрддрд╛ рд╣реИред
рдЭрдВрдбреЗ рдХреА рд╕реВрдЪреА ... рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдмрд╛рд░ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ!
рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
render_UPDATE(ren, ARRAY_textures, ARRAY_rect, ARRAY_texturesState)
рдкрд╛рд╢ рдмрдВрдж рдХрд░реЛ!
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреВрд░рд╛ рдХрд░рдирд╛ рдерд╛ред
рдкрд░реНрджрд╛!
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЦрддреНрдо рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрдирд╛рд╡рдЯ рдХреЛ рд╕реНрдореГрддрд┐ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
SDL_DestroyTexture(player)
рдФрд░ рдЕрдм рдЖрдк SDL рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
SDL_DestroyRenderer(ren)
рдЕрдВрддрд┐рдо, рддрд╛рд▓рд┐рдпрд╛рдБ! рд╣рдордиреЗ SDL2 рдкрд░ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛! рдХрд┐рд╕ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдореИрдВ рд╣рдореЗрдВ рдмрдзрд╛рдИ рджреЗрддрд╛ рд╣реВрдВ!
рдкреБрдирд╢реНрдЪ
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдореБрдЭреЗ 2 рджрд┐рди рд▓рдЧреЗред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрд╕рдбреАрдПрд▓ 2 рдореИрдиреБрдЕрд▓ рдмрд╣реБрдд рдХрдо рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЦреЛрдЬрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рд╢реВрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ рдФрд░ рдпрд╣ рд░рд╛рдХреНрд╖рд╕ рдЖрдкрд╕реЗ рдЙрддрдирд╛ рд╕рдордп рдирд╣реАрдВ рд▓реЗрдЧрд╛ рдЬрд┐рддрдирд╛ рдореЗрд░рд╛ рд╣реИред
рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред