рдПрд╕рдбреАрдПрд▓ 2 рдкрд░ рд╕рдмрдХ: рдкрд╛рда 1 - рд╣реИрд▓реЛ, рдПрд╕рдбреАрдПрд▓ 2

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореИрдВрдиреЗ рдПрд╕рдбреАрдПрд▓ 2 рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд░реВрд╕реА рдореЗрдВ рдХреБрдЫ рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рд▓реЗрдХрд░ , рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдореИрдВ рдПрд╕рдбреАрдПрд▓ 2 рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдФрд░ рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдХрд░ рддреБрд░рдВрдд рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП:

рдЖрдкрдХреА рдкрд╣рд▓реА рдЦрд┐рдбрд╝рдХреА




рдЪрд▓реЛ рдПрд╕рдбреАрдПрд▓ 2 рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

#include <SDL2/SDL.h> 

рдпрд╣рд╛рдВ рд╣рдо рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред

 const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдЪрд┐рдд рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЦреЛрд▓реЗрдВред

 int main (int argc, char ** args) { if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) { return 1; } SDL_Surface* screen_surface = NULL; SDL_Window* window = NULL; 

рдЖрдЗрдП рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рджреЗрдЦреЗрдВред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓рд╛, рд╣рдо SDL_Init () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде SDL 2 рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП SDL_INIT_EVERYTHING рдкрд╛рд╕ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА SDL рдореЙрдбреНрдпреВрд▓ (рд╡реАрдбрд┐рдпреЛ, рдСрдбрд┐рдпреЛ рдЖрджрд┐) рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред SDL_Init рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдЭрдВрдбреЗ рд╣реИрдВ:

рдЭрдВрдбреЗ
SDL_INIT_TIMER - рдЯрд╛рдЗрдорд░ рдХрдиреЗрдХреНрд╢рди;
SDL_INIT_AUDIO - рдСрдбрд┐рдпреЛ рдХрдиреЗрдХреНрд╢рди;
SDL_INIT_VIDEO - рд╡реАрдбрд┐рдпреЛ рдХрдиреЗрдХреНрд╢рди, рдИрд╡реЗрдВрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ;
SDL_INIT_JOYSTICK - рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрдВрдЯреНрд░реЛрд▓ рдХрдиреЗрдХреНрд╢рди;
SDL_INIT_HAPTIC - рд╕реНрдкрд░реНрд╢рдиреАрдп рдЙрдк-рдкреНрд░рдгрд╛рд▓реА (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдирд╛);
SDL_INIT_GAMECONTROLER - рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ;
SDL_INIT_EVENTS - рдИрд╡реЗрдВрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ;
SDL_INIT_EVERYTHING - рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рдм рдХреБрдЫ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;
SDL_INIT_NOPARACHUTE - рд╕рдВрдЧрддрддрд╛ рдЬрд╛рдБрдЪред

рдЕрдЧрд▓рд╛, SDL_CreateWindow () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВред рдпрджрд┐ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ 1 рд╡рд╛рдкрд╕ рдХрд░реЗрдВред

  window = SDL_CreateWindow("Hello, SDL 2!",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SDL_SCREEN_WIDTH, SDL_SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { return 1; } 

SDL_CreateWindow () рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдВрдбреЛ рдирд╛рдо, OX рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рддрд┐, рдУрдП рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рддрд┐, рд╡рд┐рдВрдбреЛ рдХреА рдЪреМрдбрд╝рд╛рдИ, рд╡рд┐рдВрдбреЛ рдХреА рдКрдБрдЪрд╛рдИ рдФрд░ рдЭрдВрдбреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдзреНрд╡рдЬ SDL_WINDOW_SHOWN рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдорд┐рд▓реЗрдЧрд╛ред

рдПрдХ рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЭрдВрдбреЗ рд╣реИрдВред

рдЭрдВрдбреЗ
SDL_WINDOW_FULLSCREEN - рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдбреЗрд╕реНрдХрдЯреЙрдк рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрджрд▓рддрд╛ рд╣реИ;
SDL_WINDOW_FULLSCREEN_DESKTOP - рдЗрд╕ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддрд╛ рд╣реИ;
SDL_WINDOW_OPENGL - OpenGL рдХреЗ рд╕рдорд░реНрдерди рд╡рд╛рд▓реА рдПрдХ рд╡рд┐рдВрдбреЛ;
SDL_WINDOW_HIDDEN - рд╡рд┐рдВрдбреЛ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ;
SDL_WINDOW_BORDERLESS - рдПрдХ рдлреНрд░реЗрдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЦрд┐рдбрд╝рдХреА;
SDL_WINDOW_RESIZABLE - рдЖрдк рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ;
SDL_WINDOW_MINIMIZED - рд╡рд┐рдВрдбреЛ рдХрдо рд╕реЗ рдХрдо рд╣реИ;
SDL_WINDOW_MAXIMIZED - рд╡рд┐рдВрдбреЛ рдЕрдзрд┐рдХрддрдо рд╣реИ;

рдпрджрд┐ рд╣рдо рдЕрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ 640x480 рд╡рд┐рдВрдбреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рд╕рдлреЗрдж рд░рдВрдЧ рд╕реЗ рднрд░реА рд╣реЛрдЧреА, рдЬреЛ рдПрдХ рдкрд▓ рдХреЗ рдмрд╛рдж рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЕрджреНрднреБрдд! рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХрд╛ рдереЛрдбрд╝рд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SDL_Delay (2000) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рджреЗрдЧрд╛ред

рдмрд╕ рдПрдХ рдЦрд┐рдбрд╝рдХреА рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреВрд▓рд░ рд╣реЛрдЧрд╛, рд╣реИ рдирд╛? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рддрд╣ рдмрдирд╛рдПрдВ рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╕рдм рдХреБрдЫ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдзреЗ рдЦрд┐рдбрд╝рдХреА рдореЗрдВ, рдбреНрд░рд╛рдЗрдВрдЧ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдмрджрд╕реВрд░рдд рдпрд╛ рдХреБрдЫ рд╣реИред

  screen_surface = SDL_GetWindowSurface(window); SDL_FillRect(screen_surface, NULL, SDL_MapRGB(screen_surface->format, 0, 255, 0)); SDL_UpdateWindowSurface(window); 

рдкрд╣рд▓реЗ рд╣рдореЗрдВ SDL_GetWindowSurface () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдХреА рд╕рддрд╣ рдорд┐рд▓рддреА рд╣реИ ред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕рддрд╣ рдХреЗ рдЖрдпрд╛рдо, рдЙрд╕рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рддреИрдпрд╛рд░ рд╕рддрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рддрд╣ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╕рдм рдХреБрдЫ рдЦреБрдж рдХрд░реЗрдЧрд╛ред

рддрдм рд╣рдо рдЕрдкрдиреА рд╕рддрд╣ рдХреЛ рд╣рд░рд╛ рд░рдВрдЧ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП SDL_FillRect () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ SDL_MapRGB рдХреЛ рд▓рд┐рдЦрд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ рд╣рдо RGB (рд░реЗрдб рдЧреНрд░реАрди рдмреНрд▓реВ) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд▓рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЛ SDL_UpdateWindowSurface () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рдХрд┐ рд╣рдордиреЗ рдЙрд╕реЗ рдХреНрдпрд╛ рдмрддрд╛рдпрд╛ред

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

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд░реИрдо рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░реЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕рд╣реА рд╕рдорд╛рдкреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред

  SDL_DestroyWindow(window); SDL_Quit(); 

SDL_DestroyWindow () рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ SDL_Quit () рдлрд╝рдВрдХреНрд╢рди SDL_Init () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдЦреИрд░, рд╕рдмрдХ рдирдВрдмрд░ 1 рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рдпрд╣рд╛рдБ рдореБрдЭреЗ рдЕрдВрдд рдореЗрдВ рдорд┐рд▓рд╛ рдХреЛрдб рд╣реИ:

 #include <SDL2/SDL.h> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main (int argc, char ** args) { if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) { return 1; } SDL_Surface* screen_surface = NULL; SDL_Window* window = NULL; window = SDL_CreateWindow("Hello, SDL 2!",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { return 1; } screen_surface = SDL_GetWindowSurface(window); SDL_FillRect(screen_surface, NULL, SDL_MapRGB( screen_surface->format, 0, 255, 0)); SDL_UpdateWindowSurface(window); SDL_Delay(2000); SDL_DestroyWindow(window); SDL_Quit(); return 0; }; 

рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

рдЕрдЧрд▓рд╛ рдкрд╛рда >>

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


All Articles