рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:
рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз Twinklebear рд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреА рдкрд░рд┐рддреНрдпрдХреНрдд рд╢реНрд░рдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдБ, рдЬреЛ рдХрд┐ InvalidPointer рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рдкрд╛рдареЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рджрдХ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рд╣реИред рд╕реВрдЪреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдкрд╛рда рдЙрдирдХреЗ рд▓реЗрдЦрдХреАрдп рд╣реИрдВред рдЕрдиреБрд╡рд╛рдж рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдорд╛рдореВрд▓реА рд╕рдВрд╢реЛрдзрди рдпрд╛ рдкрд░рд┐рд╡рд░реНрдзрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрд╕рдмрдХ рдХреА рд╕реВрдЪреА:рдПрд╕рдбреАрдПрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдмреАрдПрдордкреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рдбреАрдПрд▓ 2 рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдПрдХрдорд╛рддреНрд░ рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрдИ рдПрд╕рдбреАрдПрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SDL_image рдЖрдкрдХреЛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпрд╛рдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, SDL_ttf рдЯреАрдЯреАрдПрдл рдлреЛрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рда рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП SDL_net рдФрд░ рдорд▓реНрдЯреА-рдЪреИрдирд▓ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП SDL_mixerред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ SDL_image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрд╕рдбреАрдПрд▓ 2 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдЙрд╕реА рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
- рд╡рд┐рдВрдбреЛрдЬ (MinGW рдпрд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ): рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ SDL2 рд╡рд╛рд▓реЗ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ SDL2_image, zlib рдФрд░ рдЕрдиреНрдп .dll рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, libpng) рдХреЛ рдЕрдкрдиреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (рдпрд╛ C: \ Windows \ system32 - рд▓рдЧрднрдЧ рдкреНрд░рддрд┐ред ) рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╡реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВред
- рд▓рд┐рдирдХреНрд╕ : рдЕрдкрдиреЗ рдЗрди-рд╣рд╛рдЙрд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдпрд╛ рд╕реНрд░реЛрдд рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдирдХреНрд╕ рд╣реИ - рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред
- Mac : рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ .dmg рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ Readme рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдкреНрд▓рдЧ-рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ SDL2 рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ SDL2 / SDL_image.h> рдлрд╝рд╛рдЗрд▓, рдпрд╛ рд╡рд╛рдВрдЫрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, SDL рдХреЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рдж рд╣реА .c рдФрд░ .cl рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ SDL_image (рд╡реИрдХрд▓реНрдкрд┐рдХ)
рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ SDL_image рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рд╕реЗ рдереЛрдбрд╝реА рджреЗрд░реА рд╣реЛрдЧреАред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк IMG_Init рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░реА-рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IMG_Init рдЗрд╕ рд╕рдордп рд╕рднреА рдЙрдкрддрдВрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕ рд╕рдордп рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрд░рдореНрдн рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓ рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдВрдн рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрд┐рдд рд╕рднреА рдЙрдкрдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ I. рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреМрдЯрд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд╛рда рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреАрдПрдирдЬреАред SDL_Init рдХреЗ рдмрд╛рдж рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
if ((IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) != IMG_INIT_PNG) { logSDLError(std::cout, "IMG_Init"); SDL_Quit(); return 1; }
рдЖрдпрд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ
рдЗрд╕ рдкрд╛рда рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ SDL_image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреИрд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рд╡рдЯ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдкрд┐рдЫрд▓реЗ рдкрд╛рда рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП - рдЦрд┐рдбрд╝рдХреА рдФрд░ рдЯрд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЪрдХреНрд░ред
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдареАрдХ рдиреАрдЪреЗ рдЯрд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480;
SDL_image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛
SDL_image рдЖрдкрдХреЛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рддреБрд░рдВрдд рдЙрдиреНрд╣реЗрдВ IML_LoadTexture рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде SDL_Texture рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рдкрд╛рда рд╕реЗ рд▓реЛрдбрдЯреЗрдХреНрд╕реНрдЯрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛрдб рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЕрдм рдХреЗрд╡рд▓ IMG_LoadTexture рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдереА, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди SDG_image рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд IMG_GetError SDL_GetError рдХреЗ рдкрд░реНрдпрд╛рдп рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren) { SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str()); if (!texture) { std::cout << IMG_GetError();
рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк рд░реЗрдВрдбрд░рд░ рдХреЛ рдмрдирд╛рд╡рдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рд╡рдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрд▓рдЧ рдПрдХ рдЖрдпрдд рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ SDL2 рддрджрдиреБрд╕рд╛рд░ рд╕реНрдХреЗрд▓ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рд░ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдирд╛рд╡рдЯ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд░реЗрдВрдбрд░рдЯреЗрдХреНрд╕реНрдЯрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рд╡рдЯ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдмрд┐рдирд╛ред
void renderTexture(SDL_Texture *tex, SDL_Renderer *ren, int x, int y, int w, int h) { SDL_Rect dst; dst.x = x; dst.y = y; dst.w = w; dst.h = h; SDL_RenderCopy(ren, tex, NULL, &dst); } void renderTexture(SDL_Texture *tex, SDL_Renderer *ren, int x, int y) { int w, h; SDL_QueryTexture(tex, NULL, NULL, &w, &h); renderTexture(tex, ren, x, y, w, h); }
рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдмрдирд╛рд╡рдЯ
рдЪреВрдВрдХрд┐ рдЗрд╕ рдкрд╛рда рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдкреАрдПрдирдЬреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдПрдХ рдирдП рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЕрдЧреНрд░рднреВрдорд┐ рдЫрд╡рд┐ (рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде) рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдкреАрдПрдирдЬреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рдкреГрд╖реНрдарднреВрдорд┐ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрд▓:

рдЕрдЧреНрд░рднреВрдорд┐ рдХреА рдЫрд╡рд┐ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде, рд╕рд╛рде рд╣реА рдлрд┐рд░ рд╕реЗ рдЗрдореЛрдЯрд┐рдХреЙрдиреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд┐ рд╣реИрдмрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ):

рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛:
SDL_Texture *background = loadTexture("background.png", renderer); SDL_Texture *image = loadTexture("image.png", renderer);
рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдкреГрд╖реНрдарднреВрдорд┐
рдЪреВрдВрдХрд┐ рдЯрд╛рдЗрд▓реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдЯреА рд╣реЛ рдЧрдИ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреВрд░реА рдЦрд┐рдбрд╝рдХреА рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдЯреБрдХрдбрд╝реЗ рд▓рдЧрд╛рдиреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк рдЗрди рдкрджреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдХрд┐рддрдиреА рдЯрд╛рдЗрд▓реЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдКрдВрдЪрд╛рдИ рдХреЗ рд▓рд┐рдПред
рдЕрдЧреНрд░рднреВрдорд┐ рдЫрд╡рд┐ рдЦреАрдВрдЪрдирд╛
рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдЕрдЧреНрд░рднреВрдорд┐ рдЫрд╡рд┐ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмреАрдЪ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
int iW, iH; SDL_QueryTexture(image, NULL, NULL, &iW, &iH); int x = SCREEN_WIDTH / 2 - iW / 2; int y = SCREEN_HEIGHT / 2 - iH / 2; renderTexture(image, renderer, x, y);
рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЦрд┐рдбрд╝рдХреА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рдареАрдХ рджреВрд╕рд░реЗ рдкрд╛рда рдХреА рддрд░рд╣ред
SDL_RenderPresent(renderer); SDL_Delay(2000);
рд╕рдлрд╛рдИ
рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдкрд╛рда 2 рдХреЗ рд╕рдорд╛рди рд╣реИ (рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдПрдХ рдЫрд╡рд┐ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП), рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓ IMG_Quit рдХреЛ рдЫреЛрдбрд╝рдХрд░ред
SDL_DestroyTexture(background); SDL_DestroyTexture(image); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); IMG_Quit(); SDL_Quit();
рд╕рдлрд▓ рд╕рдВрдХрд▓рди рдФрд░ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдЕрдЧрд░ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛, рддреЛ рдЦрд┐рдбрд╝рдХреА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рддреАрд╕рд░реЗ рдкрд╛рда рдХрд╛ рдЕрдВрдд
рддреЛ рдЕрдЧрд▓рд╛ рдкрд╛рда рд╕рдорд╛рдкреНрдд рд╣реБрдЖред рдкрд╛рда 4 рдореЗрдВ рджреЗрдЦреЗрдВ: рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЗрд╡реЗрдВрдЯреНрд╕ред