Lightcycle рдбреЗрдореЛ WebGL рдХрд╛ рдЙрдкрдпреЛрдЧ (рднрд╛рдЧ 0)

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдореИрдВ рдирдИ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реАрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдирд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдореБрдЭреЗ рднреА TRON рдкрд╕рдВрдж рд╣реИред рджреЛрдиреЛрдВ рдлрд┐рд▓реНрдореЗрдВ, рд╡реИрд╕реЗред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрддрд╛ рдерд╛, рдЫрд╛рддреНрд░ рдШрдиреЗ рд╕рдордп рдореЗрдВ, рдореИрдВрдиреЗ рдЖрд░реНрдордЧреЗрдЯреНрд░реЙрди рдЦреЗрд▓рд╛ рдФрд░ рд▓рд╛рдЗрдЯ рдмрд╛рдЗрдХ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдерд╛ред TRON: рд▓рд┐рдЧреЗрд╕реА рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдЪрд╛рдирдХ рдЕрдкрдиреЗ рдЯреНрд░реЙрди рдХреЛ рдЧреНрд░рд┐рдб рдФрд░ рдЖрдЗрд╕реЛрдореЙрд░реНрдл рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкреНрд░рд┐рдп рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ - рдореЗрд░рд╛ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд╕рд┐рдВрд╣рд╛рд╕рди рдХреЗ рдХреНрд▓реЛрдиреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛? рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдФрд░ рдореЗрд░рд╛ рдЙрддреНрд╕рд╛рд╣ рдХреБрдЫ рд╣рдж рддрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ред рдареАрдХ рдЙрд╕реА рдХреНрд╖рдг рддрдХ рдЬрдм рдореИрдВ WebGL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рд▓реЗрдЦ рдкрд░ рдЖрдпрд╛ рдерд╛ред рдЙрд╕рдХреА рдЖрдБрдЦреЗрдВ рдлрд┐рд░ рд╕реЗ рдЪрдордХ рдЙрдареАрдВ рдФрд░ рдЙрд╕рдХреЗ рд╣рд╛рде рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдЧрдПред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдХрд┐рд╕реА рд╡рд┐рд╖рдп рдореЗрдВ рдСрдлрд╕реЗрдЯ рдкрд░ рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдпрд╛ рдерд╛ред

рддреЛ, рдЖрдЬ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ:


рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдмрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рджреВрд╕рд░реЗ рд▓реЛрдЧ рдЧрд░реНрдореА рдХреА рддрдкрддреА рдзреВрдк рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрдкрдирд╛ рд╕рдордп рдХреИрд╕реЗ рдмрд┐рддрд╛рддреЗ рд╣реИрдВред


рд╣рдо рдЬреЛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ


рдкрд░рд┐рдгрд╛рдо рдПрдХ HTML рдкреГрд╖реНрда рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧреНрд░рд┐рдб рдореЗрдВ рдХрд╣реАрдВ рдЕрдирдВрдд рд╡рд┐рдорд╛рди рдкрд░ рд╕реНрдерд┐рдд рдкреНрд░рдХрд╛рд╢ рдЪрдХреНрд░ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдорд┐рд▓реЗрдЧрд╛ред рдкреНрд░рдХрд╛рд╢ рдЪрдХреНрд░ рдХреЛ рддреЗрдЬ, рдзреАрдорд╛, рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдореЛрдбрд╝рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рджреАрд╡рд╛рд░ рдХреЗ рдкреАрдЫреЗ рдЫреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдорд╕реЛрдХрд┐рд╕реНрдЯ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдбреЗрдореЛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрдЧреАред рдорд╛рд░реНрдХрдЕрдк, рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╢реЗрдбреНрд╕, рдореЙрдбрд▓ - рд╕рдм рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЫреЛрдЯреЗ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрдореЛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдлрд┐рдЧред рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдПрдХ рд╣реА tdl.js , рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЗрдЦ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдореЛ рдХрд╛ рд╡рд┐рдХрд╛рд╕, рдЬреЛ рдореИрдВ рдЕрдВрддрддрдГ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рддрд╛рдХрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рд░рдг рдХрд╛ рдЦрддрд░рд╛ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИред

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

рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЦреАрдВрдЪрддреЗ, рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ? рдУрдкрдирдЧреЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдгред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗред

рд╣рдо рдЗрд╕ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рд╡реЗрдмрдЬреАрдПрд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?


рдЗрд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд▓рд┐рдВрдХ рд╡реЗрдмрд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдЬ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, WebGL рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП OpenGL ES 2.0 рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдЕрднреА рднреА рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рдХреЛрдИ рдзреНрд╡рдирд┐ рдФрд░ рдкреВрд░реНрдг рдкреНрд░рд▓реЗрдЦрди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧ рдЗрд╕реЗ рдореБрдЦреНрдп рдФрд░ рдореБрдЦреНрдп рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ <canvas /> рдЯреИрдЧ рдХреЛ рдбреНрд░реЙрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛, <canvas /> рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред canvas.getContext("experimental-webgl") рдПрд▓рд┐рдореЗрдВрдЯ canvas.getContext("experimental-webgl") рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ canvas.getContext("experimental-webgl") рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЗрдВрдЬрди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди


рдпрд╣ рд╕рдм рдкреЗрдЬ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред JQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдИрд╡реЗрдВрдЯ рдкрд░ рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдореЗрдВ, рд╣рдо рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреАрдПрд▓ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЬрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
 $(function() { loadResources(); var gl = $("#viewport")[0].getContext("experimental-webgl"); engineStartup(gl); }); 

рдлрд┐рд░ рд╣рдореЗрдВ рдЙрди рдЫрд╛рдпрд╛рджрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдореЛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:
 function buildShaders(gl, count) { var shaders = []; for (var i = 0; i < 1; i++) { shaders[i] = composeProgram(gl, localStorage.getItem("step " + i + " vertex shader"), localStorage.getItem("step " + i + " fragment shader")); } return shaders; } //   http://www.guciek.net/webgl_shortest/en function composeProgram(gl, vertex_shader, fragment_shader) { var program = gl.createProgram(); var addShader = function(type, source) { var shader = gl.createShader(type); gl.shaderSource(shader, source); gl.compileShader(shader); if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { throw "Could not compile " + (type == gl.VERTEX_SHADER ? "vertex" : "fragment") + " shader:\n\n" + gl.getShaderInfoLog(shader); } gl.attachShader(program, shader); }; addShader(gl.VERTEX_SHADER, vertex_shader); addShader(gl.FRAGMENT_SHADER, fragment_shader); gl.linkProgram(program); if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { throw "Could not link the shader program."; } return program; } 

рд╣рд╛рдВ, рд╣рд╛рдВ, рдореИрдВ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рдореИрдВ рдПрдХ рдРрд╕рд╛ рд╡рд┐рдХреГрдд рд╣реВрдБред рд╡реИрд╕реЗ, рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:
"chrome --allow-file-access-from-files" ред

рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐рд╕реА рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ - shader рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЗрд╕рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╢реЗрдбрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдЬреЛ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ WebGL рдореЗрдВ рдПрдХ рд╢реЗрдбрд░ рдХреНрдпрд╛ рд╣реИ ред

рдПрдХ рд╢рд╛рдпрд░ рдРрд╕реА рдЪреАрдЬ рд╣реИ ...


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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, createProgram() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреАрдПрд▓ рдХреЛ createProgram() рдХрд┐ рд╣рдо рдПрдХ shader рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╡рд░реНрдЯреЗрдХреНрд╕ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд░ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, shader рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ gl.createShader() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ shaderSource() рдлрд╝рдВрдХреНрд╢рди рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ shaderSource() , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж compileShader() рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд shader рдХреЛ attachShader() рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдФрд░ рдПрдХ shader рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рджреЛ рд░реЗрдбреА-рдЯреВ-рдпреВрдЬрд╝ рд╢реЗрдбреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ linkProgram() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдпрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрди рд▓реЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рднреВрд╕реА рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдмрд╛рдК рд╣реИред рдмреЗрд╣рддрд░ рд╣реИ рдЖрдЧреЗ рдмрдврд╝реЛред

рд░рд╛рдЗрдЯрд┐рдВрдЧ рд╢реЗрдбреНрд╕


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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг shader рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреВрдВрдЧрд╛ рдЬреЛ рд╕рднреА рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
 // Vertex shader attribute vec3 aVertexPosition; attribute vec4 aVertexColor; uniform mat4 uMVMatrix; uniform mat4 uPMatrix; varying vec4 vColor; void main() { gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); vColor = aVertexColor; } // Fragment shader #ifdef GL_ES precision highp float; #endif varying vec4 vColor; void main() { gl_FragColor = vColor; } 


рдкрд░рд┐рдгрд╛рдо рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ - рдПрдХ рдврд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрджрд┐рдоред рдЪрд▓реЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рддреЗ рд╣реИрдВред

рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЪрд░ рдореЗрдВ рдЪрд░

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

рд╡реИрдХреНрдЯрд░ рджреЛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ-, рддреАрди- рдпрд╛ рдЪрд╛рд░-рдШрдЯрдХ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рдЧрдгрд┐рдд рдХреЗ рд╕реНрдХреВрд▓ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░реА рд╣рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЗрд╕реЗ рдЪрд╛рд░-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдПрдХ рдЫрд╛рдпрд╛ рдореЗрдВ рдЪрд╛рд░-рдЖрдпрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЪреМрдерд╛ рдШрдЯрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдореЗрдВ рдЧрд╣рд░рд╛рдИ рдХреНрдпрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, shaders рдореЗрдВ рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ, рдорд╛рдирджрдВрдбреЛрдВ, рдмрдирд╛рд╡рдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЬрдиреНрдо рдХреА рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рдЬреЛ рднреА рдЖрдкрдХреЗ рджрд┐рд▓ рдХреА рдЗрдЪреНрдЫрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рд╛рджрд░реЛрдВ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдорд╣рддреНрд╡ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдлрд╝рд░реНрд╕ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рдЪрд╛рд░-рдШрдЯрдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдХрдИ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ 2-3-4 рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░реЛрдВ рдХреЛ рдХрд┐рд╕реА shader рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдХрд┐рдлрд╛рдпрддреА рдФрд░ рд╕рд╣реА рддрд░реАрдХрд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдзрдХреЗрд▓рдирд╛ рд╣реИред рд╣рдо рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдПрдВрдЧреЗред

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

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдиреЗ рдЪрд░ gl_Position рдФрд░ gl_FragColor рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИред Shader рдЗрди рдЪрд░реЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред gl_Position рддреАрди рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред gl_FragColor рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рд╢реИрдбрд░ рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХрд░реВрдк рдЪрд░ рдкреВрд░реЗ рдЖрджрд┐рдо рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ? рдЗрд╕реАрд▓рд┐рдП рдЖрджрд┐рдо рдкрд░ рдПрдХ рдврд╛рд▓ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдореЛ рдореЗрдВ рдЬрд┐рди рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡реЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдФрд░ рдСрд▓-рдСрд▓


рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рд╣реЛрдЧрд╛ рдХрд┐ GPU рдХреЛ рдХреИрдорд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд░реНрдЯрд┐рдХреНрд╕ рд╢реЗрдбрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрд╕реЗ рдпрд╣ рд╕рд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреИрдорд░рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрди рджреЛ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд┐рд░ рдХреЗ рд╕рд╛рде рдЧрдгрд┐рдд рдореЗрдВ рдЙрддрд░реЗрдВрдЧреЗред

рд╕рд┐рджреНрдзрд╛рдВрдд

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рд╣реИрдВ ред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкреНрд▓реЗрди рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдиреНрд╡реЗрдпрд░ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдорд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЬреАрдбреА рдХреА рдорд╣рд┐рдорд╛;)ред рдЖрдк рдореЗрдВ рд╕реЗ рдЬреЛ рд▓реЛрдЧ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рдирд╛рд░рд╛рдЬ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ - рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдХреИрдорд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдХреИрдорд░рд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рд╣реЛрддрд╛ рд╣реИ - рдореВрд▓ - рдФрд░ рдЬреЗрдб рдЕрдХреНрд╖ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рдЬрдм рд╣рд░ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓реЗрдЦрдХ рдХреЛ рдЫреЛрдЯреЗ рдмрд╣реБрднреБрдЬ рдореЗрдВ рдлрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдлреНрд▓реЗрдХреНрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реВрдВ "рдлрд┐рд░ рдХреНрдпреЛрдВред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рд╕рд┐рд░ рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ? тАЭред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ GPU рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рддреАрди-рдЖрдпрд╛рдореА рдмрд┐рдВрджреБ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕реВрддреНрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрд╡рд╢реНрдпрдХ рдЧрдгрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдареАрдХ рд╣реИ, рдпрд╛ рддреЛ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддреНрд╡рд░рдХ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХреИрдорд░реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдорд┐рд▓рддреА рд╣реИред рдпрд╣реА рд╣реИ, рдЬрдм рдЖрдк рдорд╛рдЙрд╕ рдХреЛ рднреВрдХрдВрдк рдореЗрдВ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШреВрдорддрд╛ рд╣реБрдЖ рдХреИрдорд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░рд╛ рджреГрд╢реНрдп рдЬреЛ рдореВрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдШреВрдорддрд╛ рд╣реИред рдЬрд┐рдЬреНрдЮрд╛рд╕реБрдУрдВ рдХреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд╡рд┐рд╕реНрдерд╛рдкрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ - рд╡реЗ рджреЛрдиреЛрдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд┐рд╕реНрдерд╛рдкрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗрд╡рд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рдгрд╛рдореА рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреГрд╢реНрдп рдХрд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣рд┐рд╕реНрд╕рд╛ рдлреНрд░реЗрдо рдореЗрдВ рд╣реЛ рдЬрд╛рдПред рдпрд╣ рдЬрд╛рдирдХрд░ рдХрд┐ рдЖрдкрдХреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдЖрджрд┐рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЖрдк рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ - рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдореЙрдбрд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдФрд░ рдлрд┐рд░ рдкреВрд░реА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдореИрдЯреНрд░рд┐рд╕ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬрд╡рд╛рдм рд╣реИ рд╣рд╛рдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдУрдкрдирдЬреАрдПрд▓ рд╣рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдореЛрд░реА рдореЗрдВ рд╕реАрдзреЗ рд╡рд░реНрдЯрд┐рдХрд▓ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдмрд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд░реНрдЯрд┐рдХреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред

рдЕрднреНрдпрд╛рд╕

рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдврд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░рд┐рдХреЛрдг рдФрд░ рдПрдХ рд╡рд░реНрдЧ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреИрдорд░рд╛ рд▓реЗ рдЬрд╛рдиреЗ рджреЗрддреЗ рд╣реИрдВред

рд╣рдо рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рдЬрдЯрд┐рд▓ рд▓реЗрддреЗ рд╣реИрдВ


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

рдмрдлрд╝рд░реНрд╕, рдмрдлрд╝рд░реНрд╕ ...

рдЪрд▓реЛ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╢реАрд░реНрд╖ рдХреА рдЫрд╛рдпрд╛рдХрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпрд╛рдВ рд╣реИрдВред рдПрдХ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред createBuffer() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, createBuffer() GL рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдмрдлрд░ bindBuffer() рдЪрдпрди bindBuffer() рдХрд░реЗрдВред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрдлрд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирдиреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдмрдлрд░ рдореЗрдВ рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо bufferData() рдФрд░ рд╕рд░рдгреА рдФрд░ рдЙрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдмрдлрд░ рдирд┐рд░реНрдорд╛рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛):
  var buffers = []; buffers[0] = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffers[0]); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.0, 0.0]), gl.STATIC_DRAW); buffers[0].itemSize = 3; buffers[0].itemCount = 3; buffers[0].attributeLocation = gl.getAttribLocation(shaders[0], "aVertexPosition"); gl.enableVertexAttribArray(buffers[0].attributeLocation); 

рд╡реИрд░рд┐рдПрдмрд▓ itemSize рдХрд╛ рдЖрдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди, itemCount рдФрд░ attributeLocation рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЕрднреА рдЙрдирдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред getAttribLocation() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдмрд╛рдж рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЯреЗрдХрд░ рд╢реЗрдбрд░ рдХреА рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдкрджреЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред enableVertexAttribArray() рдлрд╝рдВрдХреНрд╢рди рдареАрдХ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЗрд╕рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ?

рджрд░рдЕрд╕рд▓, рдЗрд╕ рд╕рдордп рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ shader рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рджреЛ рдмрдлрд╝рд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдореЗрдВ рдЖрджрд┐рдо рдХреЗ рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдЙрдирдХреЗ рд░рдВрдЧ рд╣реИрдВ RGBA float32 (рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рдерд╛, рдПрдХ 32-рдмрд┐рдЯ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рдкреНрд░рддрд┐ рдЪреИрдирд▓)ред рдЖрдк рдЗрди рд╕рднреА рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдФрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдкрд░ рд╕реНрдХреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрддрдирд╛ рдЧрд░реНрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рдлрд┐рд░ рд╕реЗ рдореИрдЯреНрд░рд┐рд╕реЗрд╕

рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдореИрдВ glMatrix.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ , рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧрдгрдирд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдбреАрдмрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рд╕рдВрдЪрд▓рди рдХреНрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдВрджреБ A (1; 1; 1) рдХреЛ рд▓реЗрдВ рдФрд░ Z рдЕрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ +1 рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдореЗрд░реЗ рдорди рдореЗрдВ рдХреБрдЫ рдЧрд┐рдирдиреЗ рдХреЗ рд▓рдВрдмреЗ рдФрд░ рджрд░реНрджрдирд╛рдХ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдмрд┐рдВрджреБ A (1; 1; 2) рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдПрдХ рдпрд╛ рдХрдИ рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдмрд╕ рдмрд┐рдВрджреБ рдХреЗ рд╕рдВрдЧрдд рдШрдЯрдХ рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдм рдЖрдЗрдП X рдЕрдХреНрд╖ рдХреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрд┐рд╢рд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ XY рд╡рд┐рдорд╛рди рдореЗрдВ рдмрд┐рдВрджреБ A (1; 1; 0) 45 рдбрд┐рдЧреНрд░реА рдХреЛ рдШреБрдорд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рджрд░реНрджрдирд╛рдХ рддрд░реАрдХреЗ рд╕реЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рд╢рд╛рдВрдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЙрдЪреНрдЪ рдЧрдгрд┐рдд рд╕реЗ рдХреБрдЫ рд╕рдорд╛рди рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░, quaternions рдФрд░ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЕрдВрдЧреНрд░реЗрдЬреА рдкрд╛рдардХ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдЬрд╛рдирдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ 4x4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рддреАрди рдЕрдХреНрд╖реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд░реЛрдЯреЗрд╢рди рдФрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрди рдЪрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЖрджрд┐рдо рдФрд░ рдПрдХ рд╡рд╕реНрддреБ рднреАред

рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕ-рдмрджрди рдмрд┐рдВрджреБ A (1; 1; 0) рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкрд╣рдЪрд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдмрд┐рдВрджреБ рдкрд░ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдХрд░реНрдг рдФрд░ рд╢реВрдиреНрдп рдЕрдиреНрдп рдкрджреЛрдВ рдкрд░ рд╣реИрдВред рдлрд┐рд░, рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рд╡рд┐рд╕реНрдерд╛рдкрди ( translate() рдлрд╝рдВрдХреНрд╢рди), рд░реЛрдЯреЗрд╢рди ( rotate() рдлрд╝рдВрдХреНрд╢рди, рдХреНрд░рдорд╢рдГ) рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ ( scale() рдлрд╝рдВрдХреНрд╢рди)ред рдирддреАрдЬрддрди, рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
  var matrix = mat4.create(); mat4.identity(matrix); matrix.rotate(matrix, Math.PI / 4, [1, 0, 0]); 

рдирддреАрдЬрддрди, рд╣рдо рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖ рдХреА рдЫрд╛рдпрд╛ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╕рд░рд▓ рд╣реИред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдПрдХ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ (рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕, рдФрд░ рдПрдХ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╡реЗрдХреНрдЯрд░ рднреА) GLSL рдореЗрдВ рд╕рд░рд▓ "*" рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 attribute vec3 aVertexPosition; attribute vec4 aVertexColor; uniform mat4 matrix; varying vec4 vColor; void main() { gl_Position = matrix * vec4(aVertexPosition, 1.0); vColor = aVertexColor; } 

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдПрдХ рд╕рдорд╛рди рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдХреИрдорд░рд╛ рд╡рд┐рд╡рд░рдг

рдЕрдЧрд░ рдореВрд╡рд┐рдВрдЧ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рдХреНрд╕ рдЕрдм рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рджрд┐рдорд╛рдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╢реИрддрд╛рди рдЗрддрдирд╛ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╡рд╣ рдЪрд┐рддреНрд░рд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╕рднреА рдПрдХ рд╣реА рдореВрд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ (рджрдВрдб рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдХреИрдорд░рд╛ рдореВрд▓ рдкрд░ рд╣реИред рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ Z рдЕрдХреНрд╖ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рдЧ рдореЗрдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреИрдорд░реЗ рдХреЛ 90 рдбрд┐рдЧреНрд░реА (рдПрдХреНрд╕ рдЕрдХреНрд╖ рдкрд░, рдпрд╛рдиреА) рдХреЛ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕реА рдПрдХреНрд╕ рдЕрдХреНрд╖ рдкрд░ рдореВрд▓ рд╕реЗ рджреГрд╢реНрдп рдХреЛ 90 рдбрд┐рдЧреНрд░реА рдиреАрдЪреЗ рдШреБрдорд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдХреЗрд╡рд▓ Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдореВрд▓ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рд╣реИред рд╣рдореЗрдВ рдЕрднреА рддрдХ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреИрдорд░реЗ рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

glMatrix.js рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдЕрд▓рдЧ рдЕрд▓рдЧ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВ: perspective(), ortho()рдФрд░ frustrum()ред рд╣рдо рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ perspective()ред рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдордирдорд╛рдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рдпреЛ рдФрд░ рдЯреНрд░рд┐рдирд┐рдЯреА рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИ ред

рдФрд░ рдлрд┐рд░ рднреА рд╡рд╣ рдШреВрдорддрд╛ рд╣реИ!

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣рдорд╛рд░реЗ рддреНрд░рд┐рдХреЛрдг рдХреЛ рдШреБрдорд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИред
 //  ,       , //        . //       . function drawFrame(gl, shaders, buffers, matrices) { gl.viewport(0, 0, gl.canvas.clientWidth, gl.canvas.clientHeight); gl.clearColor(0.0, 0.0, 0.0, 1); gl.clear(gl.COLOR_BUFFER_BIT); gl.useProgram(shaders[0]); mat4.perspective(75, gl.canvas.clientWidth / gl.canvas.clientHeight, 0.1, 100.0, matrices[0]); mat4.rotate(matrices[1], Math.PI / 100, [1, 1, 1]); gl.bindBuffer(gl.ARRAY_BUFFER, buffers[0]); gl.vertexAttribPointer(buffers[0].attributeLocation, buffers[0].itemSize, gl.FLOAT, false, 0, 0); gl.bindBuffer(gl.ARRAY_BUFFER, buffers[1]); gl.vertexAttribPointer(buffers[1].attributeLocation, buffers[1].itemSize, gl.FLOAT, false, 0, 0); gl.uniformMatrix4fv(matrices[0].uniformLocation, false, matrices[0]); gl.uniformMatrix4fv(matrices[1].uniformLocation, false, matrices[1]); gl.drawArrays(gl.TRIANGLES, 0, buffers[0].itemCount); } 

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдПрдХ рдХреЗ - рдПрдХ getUniformLocation()рд╕рдорд╛рди рдЪрд░реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ shader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╣рдо рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╕реНрд░реЛрдд, рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ viewport()рд╣рдорд╛рд░реЗ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЫрд╡рд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ clearColor()рдФрд░ clear()рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рдВрдЧ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рд╡реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреЗрдЬ рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╣рдо рдкрд░рд┐рдЪрд┐рдд bindBuffer()рд╣реИрдВ , рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рддрдм vertexAttribPointer()рд╡рд░реНрдЯреЗрдХрд░ рдЫрд╛рдпрд╛ рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЪрд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ ред рдлрд┐рд░ рджреЛ рдХреЙрд▓ рдлреЙрд▓реЛ рдХрд░рддреЗ рд╣реИрдВредuniformMatrix4fv()рдЬреЛ рд╢реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдорд╛рди рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдХреИрдорд░рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рджреВрд╕рд░рд╛ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рд╣реИред рдЦреИрд░, рдЕрдВрдд рдореЗрдВ, drawArrays()рд╣рдорд╛рд░рд╛ рддреНрд░рд┐рдХреЛрдг рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рд░рд╛рдЧ


рд▓реЗрдЦ рдЧрд▓рддреА рд╕реЗ рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдмрдврд╝ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддрд╛рдХрд┐ рдкрд╛рдардХ рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдХреЗ OpenGL рдкрд░ рдПрдХ рдФрд░ рдШреВрд░реНрдгрди рддреНрд░рд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗ, рдЕрдВрдд рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд╢ рдЪрдХреНрд░ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбрд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред

рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡

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

рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рддреБрд░рдВрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдПрдХ рдЦрд╛рдореА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ - рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╡рд░реНрдЯреАрдХрд▓реНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЖрджрд┐рдореЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рджреВрд╕рд░рд╛ рд╣реИ -drawElements()ред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдФрд░ рдЙрдЪрд┐рдд рдХреЛрдиреЗ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреЛ рддреНрд░рд┐рднреБрдЬреЛрдВ рдХреЛ рджреЛ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП drawElements()рд╡рд░реНрдЯреЗрдХреНрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд░рдгреА рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЖрджрд┐рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдЪреНрдЫреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓ рдХреЗ TRIANGLE_STRIPрдмрдЬрд╛рдп рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛TRIANGLESdrawArrays()ред рддреНрд░рд┐рдХреЛрдг рдХреА рдкрдЯреНрдЯреА рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдиреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдкрд╣рд▓реЗ рддреНрд░рд┐рдХреЛрдг рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде [0,1,2] рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ TRIANGLESред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░реЗ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдХреЛрдиреЗ [1,2,3] рд╣реЛрдВрдЧреЗ, рдЬрдмрдХрд┐ TRIANGLESрджреВрд╕рд░реЗ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ , рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ [3,4,5]ред рд╕рд╛рде рд╣реА рдЕрдЪреНрдЫреА рдореЗрдореЛрд░реА рд╕реЗрд╡рд┐рдВрдЧ рднреАред рдореИрдВ рдЬрд┐рд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ (рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ) рдореЗрдВ рдкрд╣рд▓реЗ рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рддреНрд░рд┐рдХреЛрдг рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдХреЛрдиреЗ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк drawElements()рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ TRIANGLESред рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЛ рдирд╣реАрдВ рдЫрд╛рдБрдЯреВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ рдПрдХ рдкрдЯреНрдЯреА рдмрдирд╛ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдореЙрдбрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ

JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдореЙрдбрд▓ рдореЗрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреА рдПрдХ рд╕рд░рдгреА, рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА, рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИред рдкрд╛рд░реНрд╕рд┐рдВрдЧ jQuery рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╣реИ - рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реЗрдбрд░реНрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмрджрд▓реЗред
  gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffers[2]); gl.drawElements(gl.TRIANGLES, buffers[2].itemCount, gl.UNSIGNED_SHORT, 0); 

рддреАрд╕рд░реЗ рдмрдлрд╝рд░ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ GL рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП drawElements()ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рд╢реАрд░реНрд╖ рдмрдлрд░ рдФрд░ рд╡рд░реНрд╕реЗрдЯ рдХрд▓рд░ рдмрдлрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдЧрднрдЧ рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдиреЗ рдХреЗ рд░рдВрдЧ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рдиреЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореЙрдбрд▓ рдХреЛ рдордЬрд╝реЗрджрд╛рд░ рдкреЗрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд░реЛрдд рдпрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдФрд░ рдпрд╣рд╛рдБ рд╡рд╣ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ:


рджреБрд░реНрднрд╛рдЧреНрдп


рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЧрдгрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП - рджреЛрдиреЛрдВ рдХреЛ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдХреБрдЫ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗред

рдпрджрд┐ рд╡рд┐рд╖рдп рдПрдХ рд╣рдмреНрд░ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдирд┐рд░рдВрддрд░рддрд╛ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдирд╣реАрдВ - рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╢реМрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдореИрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ:


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

рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓реЗрдЦ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИред

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


All Articles