рдПрд╕рдбреАрдПрд▓ 2 рдкрд╛рда: рдкрд╛рда 6 - рдЖрджрд┐рдо

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдпрд╣ SDL 2 рдкрд░ рдЫрдард╛ рдкрд╛рда рд╣реИ рдФрд░ рдпрд╣ рдЫреЛрдЯрд╛ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рд╕рднреА рд╕рдмрдХ рдпрд╣рд╛рдБ рд╣реИрдВ ред

рдЗрд╕ рдкрд╛рда рдореЗрдВ рд╣рдо рдЖрджрд┐рдо рд▓реЛрдЧреЛрдВ рдХреА рдбреНрд░рд╛рдЗрдВрдЧ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдкрд╛рда рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдкреБрд░рд╛рддрди


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

рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░рддреЗ рд╣реИрдВ

#include <SDL2/SDL.h> #include <iostream> using namespace std; int SCREEN_WIDTH = 640; int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Renderer *ren = NULL; 

рдореИрдВ рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЪрд▓реЛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

 bool init() { bool ok = true; if (SDL_Init(SDL_INIT_VIDEO) != 0) { cout << "Can't init SDL: " << SDL_GetError() << endl; } win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { cout << "Can't create window: " << SDL_GetError() << endl; ok = false; } ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); if (ren == NULL) { cout << "Can't create renderer: " << SDL_GetError() << endl; ok = false; } return ok; } 

Init рдореЗрдВ, SDL 2 рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдБ рдФрд░ рдпрд╣рд╛рдБ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рднреА, рд▓реИрдВрдЬрд░ рди рдХрд░реЗрдВред

рдореИрдВ рд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рднреА рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдХреНрд╡рд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдмрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдПрд╕рдбреАрдПрд▓ 2 рдХреЛ рд░реЗрдВрдбрд░ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

 void quit() { SDL_DestroyWindow(win); win = NULL; SDL_DestroyRenderer(ren); ren = NULL; SDL_Quit; } 

рдореИрдВ рдХреЙрд▓ рдХреЛ рдЗрдирд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд╣реАрдВ рдЫреЛрдбрд╝реВрдВрдЧрд╛ рдФрд░ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ ред рдЖрдпрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ SDL_Rect рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЖрдпрд╛рдо рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

SDL_Rect рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛: рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ 4 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ: x , y , w рдФрд░ h -ред рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдХреЛрдб: SDL_Rect rect = {1, 1, 1, 1}; - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реАред

рдпрд╣ SDL_Rect рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ , рдЖрдЗрдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

  SDL_SetRenderDrawColor(ren, 0x00, 0x00, 0x00, 0x00); SDL_RenderClear(ren); SDL_SetRenderDrawColor(ren, 0xFF, 0xFF, 0xFF, 0xFF); SDL_Rect rect1 = {10, 10, 50, 50}; SDL_RenderFillRect(ren, &rect1); 

рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдмреНрд▓реИрдХ рдореЗрдВ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рд╡рд┐рдВрдбреЛ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рд╕рдлреЗрдж рд░рдВрдЧ рдореЗрдВ рд░рдВрдЧреЛред рдЕрдЧрд▓рд╛, рд╣рдордиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (10; 10) рдФрд░ рдЖрдпрд╛рдо 50x50 рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрдд рдмрдирд╛рдпрд╛ред SDL_RenderFillRect рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЖрдпрдд рдЦреАрдВрдЪрддрд╛ рд╣реИред

рдХреЗрд╡рд▓ рдЖрдпрдд рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдЦреАрдВрдЪрдирд╛ рдЬреНрдпрд╛рджрд╛ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

  SDL_Rect rect2 = {70, 10, 50, 50}; SDL_RenderDrawRect(ren, &rect2); 

рд╣рдордиреЗ рдПрдХ рдЖрдпрдд рдмрдирд╛рдпрд╛ рдФрд░ SDL_RenderDrawRect рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ ред рд╡рд╣ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдпрдд рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдирд╛ рд╣реИред

  SDL_RenderDrawLine(ren, 10, 70, 640 - 10, 70); 

рдПрдХ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред SDL_RenderDrawLine рдлрд╝рдВрдХреНрд╢рди рд░реЗрдВрдбрд░ рдорд╛рди рдФрд░ рдЪрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпреЗ рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреБ рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред рдореИрдВрдиреЗ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ 10 рдкрд┐рдХреНрд╕реЗрд▓ рддрдХ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

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

  for (int i = 10; i <= 640-10; i +=4 ) { SDL_RenderDrawPoint(ren, i, 90); } 

рд╣рдореЗрдВ рдбреЙрдЯреНрд╕ рдХреА рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рдмрд┐рдВрджреАрджрд╛рд░ рд░реЗрдЦрд╛ рдорд┐рд▓реАред

рдЗрд╕ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рд░реБрдХ рдЧрдИ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдард╣рд░рд╛рд╡ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ, рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдФрд░ 0 рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

  SDL_RenderPresent(ren); SDL_Delay(5000); quit(); return 0; } 

рдЗрд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдкрд╛рда рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ:

 #include <SDL2/SDL.h> #include <iostream> using namespace std; int SCREEN_WIDTH = 640; int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Renderer *ren = NULL; bool init() { bool ok = true; if (SDL_Init(SDL_INIT_VIDEO) != 0) { cout << "Can't init SDL: " << SDL_GetError() << endl; } win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { cout << "Can't create window: " << SDL_GetError() << endl; ok = false; } ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); if (ren == NULL) { cout << "Can't create renderer: " << SDL_GetError() << endl; ok = false; } return ok; } void quit() { SDL_DestroyWindow(win); win = NULL; SDL_DestroyRenderer(ren); ren = NULL; SDL_Quit; } int main (int arhc, char ** argv) { if (!init()) { quit(); system("pause"); return 1; } SDL_SetRenderDrawColor(ren, 0x00, 0x00, 0x00, 0x00); SDL_RenderClear(ren); SDL_SetRenderDrawColor(ren, 0xFF, 0xFF, 0xFF, 0xFF); SDL_Rect rect1 = {10, 10, 50, 50}; SDL_RenderFillRect(ren, &rect1); SDL_Rect rect2 = {70, 10, 50, 50}; SDL_RenderDrawRect(ren, &rect2); SDL_RenderDrawLine(ren, 10, 70, 640 - 10, 70); for (int i = 10; i <= 640-10; i +=4 ) { SDL_RenderDrawPoint(ren, i, 90); } SDL_RenderPresent(ren); SDL_Delay(5000); quit(); return 0; } 

рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣рддрд╛ рд╣реВрдБ, рд╕рдмрдХреЛ рдЕрд▓рд╡рд┐рджрд╛!

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

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


All Articles