рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкрд╛рда рд▓реЗрдХрд░ рд╡рд╛рдкрд╕ рдЖрдпрд╛ рд╣реВрдБ! рдФрд░ рдЕрдЧрд░ рдЖрдк рдЕрдЪрд╛рдирдХ рдореБрдЭрд╕реЗ рд╕рдмрдХ рд▓реЗрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдердХ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдЗрди рдкрд╛рдареЛрдВ рдХреЛ
рдпрд╣рд╛рдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдЦреИрд░, 7 рд╡реЗрдВ рдкрд╛рда рдХреЛ рд╢реАрд░реНрд╖рдХ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╡реНрдпреВрдкреЛрд░реНрдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЬрдЧрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИ, рдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдЬрдЧрд╣ рд╣реИред рд╕рд╛рд░ рдпрд╣ рд╣реИ: рд╣рдо рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рд╕рддрд╣ рдХреЛ рдкреВрд░реА рдЦрд┐рдбрд╝рдХреА рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЧреЗрдо рдореЗрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ, рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдбрд╝рддреЗ рд╣реИрдВред
#include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <iostream> using namespace std; const int SCREEN_SIZE[2] = {640, 480}; SDL_Window *window = NULL; SDL_Renderer *ren = NULL; SDL_Texture *flower = NULL;
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрд╢рд╛ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рдлреВрд▓ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред
init bool init() { if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) { cout << "Can't init SDL: " << SDL_GetError() << endl; return false; } int flags = IMG_INIT_PNG; if (!(IMG_Init(flags)&flags)) { cout << "Can't init IMG: " << IMG_GetError() << endl; return false; } window = SDL_CreateWindow("VIEWPORT", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_SIZE[0], SCREEN_SIZE[1], SDL_WINDOW_SHOWN); if (window == NULL) { cout << "Can't create window: " << SDL_GetError() <<endl; return false; } ren = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == NULL) { cout << "Can't create renderer: " << SDL_GetError() <<endl; return false; } return true; }
рднрд╛рд░ bool load() { SDL_Surface *temp_surf = NULL; temp_surf = IMG_Load("flower.png"); if (temp_surf == NULL) { cout << "Can't load image: " << IMG_GetError() << endl; return false; } flower = SDL_CreateTextureFromSurface(ren, temp_surf); if (flower == NULL) { cout << "Can't create texture from surface: " << SDL_GetError() << endl; SDL_FreeSurface(temp_surf); temp_surf = NULL; return false; } return true; }
рдЫреЛрдбрд╝рдирд╛ void quit() { SDL_DestroyWindow(window); window = NULL; SDL_DestroyRenderer(ren); ren = NULL; SDL_DestroyTexture(flower); flower = NULL; SDL_Quit(); IMG_Quit(); }
рдореИрдВ рдЖрд░рдВрднреАрдХрд░рдг, рдЫрд╡рд┐ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдбреА-рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓рдЧрднрдЧ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдереЗред
рдФрд░ рдЕрдм рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП:
int main() { if (!init()) { quit(); return 1; } if (!load()) { quit(); return 1; } SDL_Rect top_vp = {0, 0, SCREEN_SIZE[0], SCREEN_SIZE[1] / 2}; SDL_Rect bottom_vp = {0, SCREEN_SIZE[1] / 2, SCREEN_SIZE[0], SCREEN_SIZE[1] / 2};
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ
рдПрд╕рдбреАрдПрд▓ рдореЗрдВ рдкреНрд▓рдЧ рдХрд┐рдпрд╛, рдПрдХ рддрд╕реНрд╡реАрд░ рдЕрдкрд▓реЛрдб рдХреА, рдФрд░ рджреЛ рдЖрдпрддреЗрдВ рдмрдирд╛рдИрдВ рдЬреЛ рдПрдХ рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╣реИрдВ рдФрд░ рдЦрд┐рдбрд╝рдХреА рдХреА рдкреВрд░реА рдЪреМрдбрд╝рд╛рдИ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреА рд╣реИрдВред рдпреЗ рд╣рдорд╛рд░реЗ
рд╡реНрдпреВрдкреЛрд░реНрдЯ рд╣реИрдВ ред
SDL_RenderSetViewport(ren, &top_vp); SDL_RenderCopy(ren, flower, NULL, NULL); SDL_RenderSetViewport(ren, &bottom_vp); SDL_RenderCopy(ren, flower, NULL, NULL);
рдЕрдЧрд▓рд╛, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдЬрдЧрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣
SDL_RenderSetViewport рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ: рдПрдХ рд░реЗрдВрдбрд░ рдФрд░ рдПрдХ рдЖрдпрдд рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдлреВрд▓ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд
SDL_RenderCopy рд╡рд┐рдзрд┐ рд╕реЗ
рдбреНрд░рд╛ рдХрд░реЗрдВ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рджреВрд╕рд░реА рдЖрдпрдд рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рджреЛрд╣рд░рд╛рдПрдВред
SDL_RenderPresent(ren); SDL_Delay(2000); quit(); return 0; }
рдлрд┐рд░ рд╣рдо рд╡рд┐рдВрдбреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, 2 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЛ рдЪрдкрдЯрд╛ рдлреВрд▓ рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣реА рд╕рдм рдореИрдВ рдЖрдЬ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдЦреИрд░, рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдмрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред рдЕрд▓рд╡рд┐рджрд╛!
<< рдкрд┐рдЫрд▓рд╛ рдкрд╛рда