рд╕рдорд╕реНрдпрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЦреЗрд▓ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ 60 рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░ рдкрд░ 60 рдПрдлрдкреАрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рддреЗрдЬреА рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рд▓реЗ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк vsync рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдЧреЗрдо рд▓реВрдк рд▓рд┐рдЦреЗрдВ:
while(running) { update(); render(); display(); }
рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ! рдЕрдм рдЦреЗрд▓ 60 рдПрдлрдкреАрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдШрдбрд╝реА рдХреА рдХрд▓ рдХреА рддрд░рд╣ рдЪрд▓рддрд╛ рд╣реИред рд╣реЛ рдЧрдпрд╛ред рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЦреИрд░, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдордЬреЛрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ рдЬреЛ 60fps рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЧрддрд┐ рд╕реЗ рдЧреЗрдо рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдЙрди рд╢рд╛рдВрдд рдирдП 144 рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░ рдореЗрдВ рд╕реЗ рдПрдХ рдЦрд░реАрджрд╛? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╡рд╣ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ vsync рдХреЛ рдмрдВрдж рдХрд░ рджреЗ?
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдореБрдЭреЗ рдХрд╣реАрдВ рд╕рдордп рдорд╛рдкрдиреЗ рдФрд░ рд╕рд╣реА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдореЗрдВ рд╕рдордп рдЬрдорд╛ рдХрд░реЗрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдпрд╣ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ 1/60 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред
while(running) { deltaTime = CurrentTime()-OldTime; oldTime = CurrentTime(); accumulator += deltaTime; while(accumulator > 1.0/60.0){ update(); accumulator -= 1.0/60.0; } render(); display(); }
рд╣реЛ рдЧрдпрд╛, рдХрд╣реАрдВ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреЗрдо рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рд╣реИред рдпрд╣ рд╕рдордп рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЭрдЯрдХреЗ (рд╣рдХрд▓рд╛рдирд╛) рдФрд░ рдЕрдиреНрдп рдмреЗрдореЗрд▓ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдЖрдо рд╣реИ: рдлреНрд░реЗрдо рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ 1/60 рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм vsync рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдореЗрдВ рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝рд╛ рд╢реЛрд░ рд╣реЛрддрд╛ рд╣реИ (рдФрд░ OS рдЯрд╛рдЗрдорд░ рдХреА рд╕рдЯреАрдХрддрд╛ рдореЗрдВ)ред рдЗрд╕рд▓рд┐рдП, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА рдЬрдм рдЖрдк рдПрдХ рдлреНрд░реЗрдо рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЧреЗрдо рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЕрднреА рддрдХ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдмреИрдЯрд░реА рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдВрд╢ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝ рд░рд╣реА рд╣реИ), рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕реА рдлреНрд░реЗрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЦреЗрд▓ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрджреНрдпрддрдиред рдпрд╣рд╛рдБ рдЪрд┐рдХреЛрдЯреА рд╣реИ!
Googling, рдЖрдк рдЗрд╕ рдЪрд┐рдХреЛрдЯреА рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреЗрдо рдПрдХ рд╕реНрдерд┐рд░ рд╕рдордп рдЪрд░рдг рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╕ рд╕рдордп рдХреЛрдб рдореЗрдВ рдмреИрдЯрд░реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдЖрдк рдЧреНрд▓реЗрди рдлреАрд▓реНрдбрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд▓реЗрдЦ "
рдлрд┐рдХреНрд╕ рдпреЛрд░ рдЯрд╛рдЗрдорд╕реНрдЯреЗрдк " рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЗрдВрдЯрд░рдкреЛрд▓рд┐рдВрдЧ рд░реЗрдВрдбрд░рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░рдВрддрд░ рд╕рдордп рдХрджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЖрдк рдЯрд╛рдЗрдорд░ рдХреЛрдб рдХреЛ рд░реАрдореЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрд▓рд┐рдХ рдПрдВрдЯрд░рдЯреЗрдирдореЗрдВрдЯ рдХреЗ
рдлреНрд░реЗрдо рдЯрд╛рдЗрдорд┐рдВрдЧ рдЗрд╢реНрдпреВрдЬрд╝ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдмреНрд▓реЙрдЧ рдЕрдм рдирд╣реАрдВ рд╣реИ)ред
рдлрдЬреА рд╕рдордп
рдореЗрд░реЗ рдЗрдВрдЬрди рдореЗрдВ "рдлрдЬреА рдЯрд╛рдЗрдорд┐рдВрдЧ" рдХреЗ рд╕рд╛рде рд╕реНрд▓реАрдХ рдПрдВрдЯрд░рдЯреЗрдирдореЗрдВрдЯ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЦреЗрд▓ рддрд░реНрдХ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рддреЛ
рдж рдПрдВрдб рдЗрди
рдирд┐рдШ I рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдЗрдВрдЬрди рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдордп рдХреА рдмреЗрдореЗрд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХреЛ "рдереЛрдбрд╝рд╛ рдкрд╣рд▓реЗ" рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЧреЗрдо рдореЗрдВ vsync рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ vsync рдХреЛ рдЧреЗрдо рдХреЗ рдореБрдЦреНрдп рдЯрд╛рдЗрдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЪрд┐рдХрдиреА рддрд╕реНрд╡реАрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдЕрдкрдбреЗрдЯ рдХреЛрдб рдЕрдм 62 рдПрдлрдкреАрдПрд╕ рдкрд░ ("рдЧреЗрдо" рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рд░ рдмрд╛рд░ рдХрджрдо рдЙрдард╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ 60fps рдкрд░ рд╣реИред рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реАрдорд┐рдд рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдмреИрдЯрд░реА рдХрд╛ рдорд╛рди 0 рд╕реЗ рдиреАрдЪреЗ рди рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: "рдЦреЗрд▓ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрджрдо рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ 60fps рд╕реЗ 62fps рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ":
while(accumulator > 1.0/62.0){ update(); accumulator -= 1.0/60.0; if(accumulator < 0) accumulator = 0; }
рдпрджрд┐ vsync рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЧреЗрдо рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд┐рдЪ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдореЙрдирд┐рдЯрд░ рдХреА рддрд╛рдЬрд╝рд╛ рджрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЪрд┐рдХрдиреА рддрд╕реНрд╡реАрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм vsync рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЧреЗрдо
рдереЛрдбрд╝рд╛ рддреЗрдЬ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд░ рдЗрддрдирд╛ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд╕реНрдкреАрдб рд░рдирд░ред рд╕реНрдкреАрдбрд░рдирд░ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗред рдЦреЗрд▓ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдХреБрдЫ рд╣реА рд╕рдордп рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕реНрдкреАрдбрд░рди рд╣рд╛рдИрд╕реНрдХреЛрд░ рд╕реВрдЪреА рдХреЗ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдпрд╛рддреНрд░рд╛ рдХрд╛ рд╕рдордп рдЦрд░рд╛рдм рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдерд╛ред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдХрд╛рд░рдг рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдордп рдФрд░ рдЦреЗрд▓ рдореЗрдВ vsync рдХрд╛ рд╡рд┐рдпреЛрдЧ (рдпрд╛ 144 рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░) рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЖрдкрдХреЛ vsync рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдлрд╝рд┐рдЬрд╝рдиреЗрд╕ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдУрд╣, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ vsync рдЕрдХреНрд╖рдо рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП OS рдкрд░ рдХреЛрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрджреНрдпрдкрд┐ рд╣рдо vsync рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдУрдПрд╕ рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣реЛ рд╕рдХрддреА рд╣реИ рд╡рд╣ рд╣реИ рдлреНрд░реЗрдо рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЙрд╕реА рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред рдареАрдХ рдпрд╣реА рдореИрдВрдиреЗ
рдж рдПрдВрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛
рд╣реИ ред рдпрджрд┐ рдЦреЗрд▓ 60 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде vsync рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ "рд╕рдЦреНрдд 60 рдПрдлрдкреАрдПрд╕" рдХреЗ рд╕рд╛рде рдореВрд▓ рдлреНрд░реЗрдо рдЯрд╛рдЗрдорд░ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдЧреЗрдо рдХреЛ рдлрд╝рд┐рдЬрд╝рдиреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдкреАрдб рд░рдирд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╕рдЯреАрдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдЯреАрдХ рдЗрди-рдЧреЗрдо рдЯрд╛рдЗрдорд░ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдСрдЯреЛрд╕рдкреНрд▓рд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдкрд░рдорд╛рдгреБ рд╕рдордп рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред
рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЕрднреА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рд╕рд╛рдордпрд┐рдХ рдЭрдЯрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреА, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреЗ рджреБрд░реНрд▓рдн рд▓рдЧ рд░рд╣реЗ рдереЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдУрдПрд╕ рдШрдЯрдирд╛рдУрдВ рдпрд╛ рдЕрдиреНрдп рдмрд╛рд╣рд░реА рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВред рд╣реИ рди?
рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдЯрд╛рдЗрдорд░ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдЬреАрдм рджреЗрдЦрд╛ред рдмреИрдЯрд░реА рдХреЛ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ 1/60 рд╕реЗрдХрдВрдб рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ рдЦреЗрд▓ рдХреЛ рд▓рдЧрд╛ рдХрд┐ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдФрд░ рдПрдХ рджреЛрд╣рд░рд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдореЙрдирд┐рдЯрд░ 59.94 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ 60 рд╣рд░реНрдЯреНрдЬ рдХрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ 1000 рдлреНрд░реЗрдо рдХреЛ рдЙрд╕реЗ "рдкрдХрдбрд╝рдиреЗ" рдХреЗ рд▓рд┐рдП рдПрдХ рдбрдмрд▓ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдмрд╕ рдЕрдиреБрдореЗрдп рдлреНрд░реЗрдо рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдмрджрд▓реЗрдВ (60 рд╕реЗ 62 рддрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 59 рд╕реЗ 61 рддрдХ)ред
while(accumulator > 1.0/61.0){ update(); accumulator -= 1.0/59.0; if(accumulator < 0) accumulator = 0; }
рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП vsync рдФрд░ рдЙрдЪреНрдЪ-рдЖрд╡реГрддреНрддрд┐ рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдпрджрд┐ рдореЙрдирд┐рдЯрд░ рдХреЛ 60 рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝
рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдЦреНрдд рдЯрд╛рдЗрдорд░ рдкрд░ рд░реЛрд▓рдмреИрдХ)ред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИ? рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдирд┐рдЯрд░, рдмрдирд╛рдо рдФрд░ рдмрд┐рдирд╛ vsync рдЪрд╛рд▓реВ рд╣реБрдП, рдФрд░ рдЗрддрдиреЗ рдкрд░? рд╕рд┐рд░ рдореЗрдВ рдЗрди рд╕рднреА рдЯрд╛рдЗрдорд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рдВрдЫрдиреАрдп, рдЕрдЬреАрдм рдЫреЛрд░реЛрдВ рдФрд░ рдкрд╕рдВрдж рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред
рдореЙрдирд┐рдЯрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░
"59.94 рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░ рдХреА рд╕рдорд╕реНрдпрд╛" рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдорд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдирд┐рдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЭрдЯрдХреЗ рдпрд╛ рдЯрд╛рдЗрдо рд╢рд┐рдлреНрдЯ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдореЙрдирд┐рдЯрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рджреГрд╢реНрдп рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдпрд╣ "рдЧрдВрджрд╛ рдФрд░ рддреЗрдЬрд╝" рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ "рдореЙрдирд┐рдЯрд░ рдСрдкрд░реЗрд╢рди" рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рдерд╛, рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рд▓рддрдо рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
20211012021011202111020211102012012102012[...]
TOTAL UPDATES: 10001
TOTAL VSYNCS: 10002
TOTAL DOUBLE UPDATES: 2535
TOTAL SKIPPED RENDERS: 0
GAME TIME: 166.683
SYSTEM TIME: 166.7
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ vsync рдкрд┐рдЫрд▓реЗ vsync рдХреЗ рдмрд╛рдж рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП "рдЕрдкрдбреЗрдЯ" рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдареЛрд╕ 1 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рднреА рдорд╛рди рдПрдХ рдЪрд┐рдХреЛрдЯреА рддрд╕реНрд╡реАрд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдХреЛрдб рд╕рдВрдЪрд┐рдд рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
59.94-рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░ рдкрд░ "рдлрдЬреА рдЯрд╛рдЗрдорд░" (60тАУ62fps рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
111111111111111111111111111111111111111111111[...]
TOTAL UPDATES: 10000
TOTAL VSYNCS: 9991
TOTAL DOUBLE UPDATES: 10
TOTAL SKIPPED RENDERS: 0
GAME TIME: 166.667
SYSTEM TIME: 166.683
рдлреНрд░реЗрдо рдХрд╛ рдорд░реЛрдбрд╝рдирд╛ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рдХреЗ рд╕рд╛рде рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдЖрдВрдХрдбрд╝реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЦреЗрд▓ рдиреЗ рдпрд╣рд╛рдВ рдХрдИ рджреЛрд╣рд░реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЭрдЯрдХреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ (59-61 рдПрдлрдкреАрдПрд╕ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде), 0 рд╕реНрдХрд┐рдк рдХрд┐рдП рдЧрдП рдпрд╛ рджреЛрд╣рд░реЗ рдЕрдкрдбреЗрдЯ рд╣реИрдВред
рдЖрдк vsync рдХреЛ рдЕрдХреНрд╖рдо рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдХреА рдХреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЯрд╛рдЗрдо рд╢рд┐рдлреНрдЯ" (рдЦреЗрд▓ рд╕рдордп рдХрд╣рд╛рдБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдо рд╢рд┐рдлреНрдЯ) рдХреА рднрдпрд╛рд╡рд╣рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
GAME TIME: 166.667
SYSTEM TIME: 169.102
рдЗрд╕реАрд▓рд┐рдП рдЬрдм vsync рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдЦреНрдд рдЯрд╛рдЗрдорд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпреЗ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рд╕рдордп рдХреЗ рд╕рд╛рде рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
рдЕрдЧрд░ рдореИрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЯрд╛рдЗрдо рдХреЛ .02 рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╛рдиреА, "рдПрдХ рдлреНрд░реЗрдо рд╕реЗ рдЕрдзрд┐рдХ" рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ), рддреЛ рдореБрдЭреЗ рдПрдХ рдЪрд┐рдХреЛрдЯреА рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЦреЗрд▓ рдХрд╛ рдкреИрдЯрд░реНрди 202020202020 рдЬреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдорд╛рди рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдЯрд╛рдЗрдорд░ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдмрд╛рдж рдореЗрдВ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЯреНрд░рд╛рдпрд▓ рдПрдВрдб рдПрд░рд░, рдмреЗрдмреА!
while(accumulator >= 1.0/61.0){ simulate_update(); accumulator -= 1.0/60.0; if(accumulator < 1.0/59.0тАУ1.0/60.0) accumulator = 0; }
рдЖрдк
рдПрдХ рдореЙрдирд┐рдЯрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдордп рдЧрдгрдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдмреЗрд╣рддрд░ рд▓рдЧреЗ рддреЛ
рдореБрдЭреЗ рдИрдореЗрд▓ рдХрд░реЗрдВ ред
рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдп рд╕реЗ 100% рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдБ (рдпрд╣ рдЕрднреА рднреА "vsync рдорд╛рдиреНрдпрддрд╛" рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЭрдЯрдХреЗ desynchronization рдХреЗ рджреМрд░рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрджрдо рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ "рд╕реНрд╡реАрдХрд╛рд░реНрдп" рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдЯреНрд░реЗрдб рд╢рд┐рдлреНрдЯ рдореЗрдВ рдЯрд╛рдЗрдо рд╢рд┐рдлреНрдЯ рдФрд░ рдбрдмрд▓ / рд╕реНрдХрд┐рдкреНрдб рдлрд╝реНрд░реЗрдо рдХреЗ рдмреАрдЪ рд╣реИред рдпрджрд┐ рдЖрдк 50 рд╣рд░реНрдЯреНрдЬ рдкрд╛рд▓ рдореЙрдирд┐рдЯрд░ рдкрд░ 60 рд╣рд░реНрдЯреНрдЬ рдЧреЗрдо рдЪрд▓рд╛рддреЗ рд╣реИрдВ ... рддреЛ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЖрдк рдЬрдВрдЧрд▓реА рдорд░реЛрдбрд╝рддреЗ рд╣реИрдВ, рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдзреАрдореА рдЦреЗрд▓ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдЦрд░рд╛рдм рд▓рдЧрддреЗ рд╣реИрдВред
рдЕрд▓рдЧ рдкреНрд░рддрд┐рдкрд╛рджрди
рдкрд┐рдЫрд▓реЗ рддрд░реАрдХреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ "рд▓реЙрдХрд╕реНрдЯреЗрдк рд░реЗрдВрдбрд░рд┐рдВрдЧ" рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реВрдВред рдЦреЗрд▓ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЦреЗрд▓ рдХреА рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рдЕрдкрдбреЗрдЯ рдПрдХ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ "
рдлрд┐рдХреНрд╕ рдпреЛрд░ рдЯрд╛рдЗрдорд╕реНрдЯреЗрдк " рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐
рдХрд░рддрд╛ рд╣реИ ред рдореИрдВ рдЦреБрдж рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛, рдЖрдкрдХреЛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдЬрд░реВрд░ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ) рдПрдПрдП рдЧреЗрдо рдФрд░ рдЗрдВрдЬрди рдЬреИрд╕реЗ рдХрд┐ рдПрдХрддрд╛ рдФрд░ рдЕрдирд╛рд░реНрдп (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд╣рди 2 рдбреА рд╕рдХреНрд░рд┐рдп рдЧреЗрдо рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрджрдо (рд▓реЙрдХрд╕реНрдЯреЗрдк) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА рд╕рдЯреАрдХрддрд╛ рдЬреЛ рдЖрдкрдХреЛ рджреЗрддреА рд╣реИ рдпрд╣ рд╡рд┐рдзрд┐)ред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЧреНрд▓реЗрди рдХреА рдкреЛрд╕реНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлреНрд░реЗрдо рджрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдЗрдВрдЯрд░рдкрд▓реЗрд╢рди рдЦреЗрд▓ рдХреЗ "рд╡рд░реНрддрдорд╛рди" рдФрд░ "рдкрд┐рдЫрд▓реЗ" рд░рд╛рдЬреНрдп рдХреЗ рдмреАрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдмреИрдЯрд░реА рдореВрд▓реНрдп рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрд╢рди рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд┐рд╕реА рднреА рдлреНрд░реЗрдо рджрд░ рдкрд░ рд░реЗрдВрдбрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЧреЗрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рддрд╕реНрд╡реАрд░ рд╣рдореЗрд╢рд╛ рдЪрд┐рдХрдиреА рд╣реЛрдЧреАред рдХреЛрдИ рдорд░реЛрдбрд╝рддрд╛ рдирд╣реАрдВ, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
while(running){ computeDeltaTimeSomehow(); accumulator += deltaTime; while(accumulator >= 1.0/60.0){ previous_state = current_state; current_state = update(); accumulator -= 1.0/60.0; } render_interpolated_somehow(previous_state, current_state, accumulator/(1.0/60.0)); display(); }
рддреЛ, рдкреНрд░рд╛рдердорд┐рдХред рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдПрдХ рдорд┐рдирдЯ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЧреНрд▓реЗрди рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЧреЗрдо рд╕реНрдЯреЗрдЯ рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред рдПрдиреАрдореЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд┐рдирд╛рд╢, рдФрд░ рдЪреАрдЬреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рд╛рде рд╣реА, рдЦреЗрд▓ рдХреЗ рддрд░реНрдХ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╕реНрддреБ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЙрд╕реЗ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдкреЛрд▓рд░ рдЦреЗрд▓ рд╡рд╕реНрддреБ рджреНрд╡рд╛рд░рд╛ рдЙрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдкрд░ рдмрдирд╛рдП рдЧрдП рдорд╛рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рдзрд╛рд░рдгрд╛ рди рдмрдирд╛рдПред рдЕрд╕рд▓реА рдЕрд░рд╛рдЬрдХрддрд╛ рдореЛрдбрд╝ рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдПрдХ рдлреНрд░реЗрдо рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рдмрд╛рд░реА 180 рдбрд┐рдЧреНрд░реА рд╕реЗ рдЕрдзрд┐рдХ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЗрдВрдЬрди рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред рдпрджрд┐ рд╡рд╕реНрддреБ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИ, рддреЛ рдЖрдк рдЭрдЯрдХреЗ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдПрдиреАрдореЗрд╢рди рдлреНрд░реЗрдо рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдФрд░ рдПрдХ рдлреНрд░реЗрдо рддрдХ рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд░реНрдорд╛рдг / рд╡рд┐рдирд╛рд╢ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдмрди рдЬрд╛рдПрдЧреА рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рдЦреЗрд▓ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ рдЬреЛ рдЦреЗрд▓ рдХреЗ 1 рд░рд╛рдЬреНрдп рджреНрд╡рд╛рд░рд╛ рджреЗрд░ рд╕реЗ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рд╕рд┐рдореБрд▓реЗрд╢рди рдЕрдм рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдЕрдЧреЛрдЪрд░ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрд░реА рдХреЗ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рджреЗрд░реА рдФрд░ рддрд╛рдЬрд╝рд╛ рджрд░реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдЗрд╕рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдмрд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА рдЧреЗрдордкреНрд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╕реНрдкреАрдб рдзрд╛рд╡рдХ) рдЦреЗрд▓ рдореЗрдВ рд▓реЙрдХрд╕реНрдЯреЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
рдЕрдкрдиреЗ рдЗрдВрдЬрди рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 60 рд╣рд░реНрдЯреНрдЬ рдореЙрдирд┐рдЯрд░ рдФрд░ рдПрдХ рддреЗрдЬрд╝ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ, рддреЛ vsync рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рд▓реЙрдХрд╕реНрдЯреЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрджрд┐ рдореЙрдирд┐рдЯрд░ рдореЗрдВ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рддрд╛рдЬрд╝рд╛ рджрд░ рд╣реИ, рдпрд╛ рдЖрдкрдХрд╛ рдХрдордЬреЛрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд▓рдЧрд╛рддрд╛рд░ 60 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдлрд╝реНрд░реЗрдо рдЗрдВрдЯрд░рдкреЛрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ "рдЕрдирд▓реЙрдХ рдлрд╝реНрд░реИрдорд░реЗрдЯ" рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓реЛрдЧ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рд╕реАрдзрд╛ рд╕рд╛ рдЕрд░реНрде рд╣реИ "рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдЪреНрдЫрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ рддреЛ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред" рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╛рдж рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рджрд░рдЕрд╕рд▓, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕
рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред
рдЪрд░ рд╕рдордп рдХрджрдо рдЕрджреНрдпрддрди
рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдХреНрд╕рд░ рдХрд╣рддреЗ рд╣реИрдВ: "рдпрджрд┐ рдЦреЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЗрд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рд╕рдордп рдХрджрдо рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"ред
while(running) { deltaTime = CurrentTime()-OldTime; oldTime = CurrentTime(); update(deltaTime); render(); display(); }
рд╕рдордп рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд┐рд╖рдорддрд╛ рдирд╣реАрдВред рдХреЛрдИ рдЕрдЬреАрдм рдкреНрд░рдХреНрд╖реЗрдк рдкреНрд░рддрд┐рдкрд╛рджрдиред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддреЛ, рдкреНрд░рд╛рдердорд┐рдХред рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдФрд░ рдЕрдм рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП! рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ!
рдЕрдм рдЦреЗрд▓ рддрд░реНрдХ рдХреЛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИред рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдЗрд╕ рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
position += speed;
рдЗрд╕ рдкрд░:
position += speed * deltaTime;
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмрджрд▓реЗрдВ:
speed += acceleration; position += speed;
рдЗрд╕ рдкрд░:
speed += acceleration * deltaTime; position += speed * deltaTime;
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмрджрд▓реЗрдВ:
speed += acceleration; speed *= friction; position += speed;
рдЗрд╕ рдкрд░:
Vec3D p0 = position; Vec3D v0 = velocity; Vec3D a = acceleration*(1.0/60.0); double f = friction; double n = dt*60; double fN = pow(friction, n); position = p0 + ((f*(a*(f*fN-f*(n+1)+n)+(f-1)*v0*(fN-1)))/((f-1)*(f-1)))*(1.0/60.0); velocity = v0*fN+a*(f*(fN-1)/(f-1));
... рддреЛ рд░реБрдХреЛ
рдпрд╣ рд╕рдм рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛?
рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЛ рд╕рдЪрдореБрдЪ рдореЗрд░реЗ рдЗрдВрдЬрди рдХреЗ рд╕рд╣рд╛рдпрдХ рдХреЛрдб рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ "рдШрд░реНрд╖рдг-рд╕реАрдорд┐рдд рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА, рдлреНрд░реЗрдо рджрд░-рд╕реНрд╡рддрдВрддреНрд░ рдЧрддрд┐" рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрдЪрд░рд╛ (рдЗрди рдЧреБрдгрд╛ рдФрд░ рднрд╛рдЧ 60) рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рд╕рдордп рдХрджрдо рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ "рд╕рд╣реА" рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореИрдВрдиреЗ
рд╡реБрд▓реНрдлрд░рд╛рдо рдЕрд▓реНрдлрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред
рдЕрдм рд╡реЗ рдореБрдЭрд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ:
speed += acceleration * deltaTime; speed *= pow(friction, deltaTime); position += speed * deltaTime;
рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИред рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред DeltaTime = 1 рдХреЗ рд╕рд╛рде рджреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрдкрдбреЗрдЯ deltaTime = 2 рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреАрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕реА рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ, рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд▓реНрдЯрд╛ рд╣рдореЗрд╢рд╛ рд▓рдЧрднрдЧ рдПрдХ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреБрдЫ рдирд┐рд░рдВрддрд░ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рд╛рдБред рдпрд╣ рд╕рд╣реА рд╣реИ, рдЕрдм рд╣рдо рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ "рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВред"
рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рд░рд╛рдХреНрд╖рд╕реА рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЧрддрд┐ рдкреИрдЯрд░реНрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╡рд╕реНрддреБрдПрдВ рднрд╛рдЧ рд▓реЗрддреА рд╣реИрдВ, рдФрд░ рдЬреИрд╕реЗред рдЕрдм рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рд╕рд╣реА" рд╕рдорд╛рдзрд╛рди рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИред рдЕрдзрд┐рдХрддрдо рдЬреЛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ "рдореЛрдЯрд╛ рдЕрдиреБрдорд╛рди" рд╣реИред рдЖрдЗрдП рдЕрдм рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдВ, рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА" рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдорд╣рд╛рди, рд╕рд╣реА?
рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдореИрдВрдиреЗ
рдмреЙрдореНрдмрд░рдмреЙрдЯреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛ред рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд▓рдЧрднрдЧ 1 рдЯрд╛рдЗрд▓ рдЙрдЫрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЦреЗрд▓ 1 рдЯрд╛рдЗрд▓ рдореЗрдВ рдмреНрд▓реЙрдХреЛрдВ рдХреА рдЧреНрд░рд┐рдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдмреНрд▓реЙрдХ рдкрд░ рдЙрддрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░рд┐рддреНрд░ рдХреЗ рдкреИрд░ рдмреНрд▓реЙрдХ рдХреА рдКрдкрд░реА рд╕рддрд╣ рд╕реЗ рдКрдкрд░ рдЙрдардиреЗ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдпрд╣рд╛рдВ рдЯрдХрд░рд╛рд╡ рдХреА рдкрд╣рдЪрд╛рди рдПрдХ рдЕрд╕рддрдд рдХрджрдо рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрдЧрд░ рдЦреЗрд▓ рдХрдо рдлреНрд░реЗрдо рджрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрднреА-рдХрднреА рдкреИрд░ рдЯрд╛рдЗрд▓ рдХреА рд╕рддрд╣ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕реА рдШреБрдорд╛рд╡ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛, рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдЙрдард╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рджреАрд╡рд╛рд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдПрдХ рдЪрдХреНрд░ рд╕рдордп рдЪрд░рдг рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕реБрд╕рдВрдЧрддрддрд╛ рдФрд░ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЗрдирдкреБрдЯ, рдирд┐рдпрддрд╛рддреНрдордХ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рдХреЗ рдЧреЗрдо рд░реАрдкреНрд▓реЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд░рд┐рдлреНрд▓реЗрдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рддреЗрдЬ 2 рдбреА рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рддрд╛ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдФрд░ рдзрд╛рд╡рдХ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╣реИрд▓реЛ)ред
рдпрджрд┐ рдЖрдк рд╕рдордп рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рди рддреЛ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реЛрдВ рдФрд░ рди рд╣реА рдмрд╣реБрдд рдЫреЛрдЯреЗ, рддреЛ рдЖрдк рдЪрд░ рд╕рдордп рдЪрд░рдг рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореБрдЦреНрдп рд▓рд╛рдн рдЦреЛ рджреЗрдВрдЧреЗ, рдФрд░ рдЖрдк рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЕрдиреНрдп рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЦреЗрд▓ рдореЛрдордмрддреНрддреА рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдЦреЗрд▓ рддрд░реНрдХ (рдЧрддрд┐ рдХреЗ рд╕рд╣реА рдЧрдгрд┐рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ) рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдирд┐рд░реНрдзрд╛рд░рдХрддрд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдкреАрдбрд╝рд┐рддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЧреАрдд рддрд╛рд▓ рдХреЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ (рдЬрд┐рд╕рдореЗрдВ рдЧрддрд┐ рдХреЗ рд╕рдореАрдХрд░рдг рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХрддрдо рдЬрд╡рд╛рдмрджреЗрд╣реА рдФрд░ рд╕рд╣рдЬрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрджреНрдпрддрди рдЪреБрдиреВрдВрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧреЗрдо рдХреЛ 60fps рдХреА рдирд┐рд░рдВрддрд░ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА
рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВред