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

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

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

рдХреЛрдб рд╕реАрдПрдордХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ (рдЬреА ++) рдФрд░ рд╡рд┐рдВрдбреЛрдЬ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017) рдХреЗ рддрд╣рдд рдЬрд╛рдВрдЪ рдХреАред рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд, рдХреЛрдб рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:
git clone --recurse-submodules https://github.com/ssloy/hellOGL.git cd hellOGL mkdir build cd build cmake .. make
рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдХрдорд┐рдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ 'git checkout' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд╣реАрдВред рдпрд╣ рдХреЛрдб рдЦреБрд╢реА рд╕реЗ рдФрд░ GLFW рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдХреАрдмреЛрд░реНрдб рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рд╕реНрдХ рд╕реЗ рдЦрд╛рд▓реА рд╡рд░реНрдЯреЗрдХреНрд╕ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбреНрд╕ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯреЗрдЬ рджреЛ: рдПрдХ 3 рдбреА рдореЙрдбрд▓ рд▓реЛрдб рдХрд░рдирд╛
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред рдЗрд╕ рд╕рдордп, рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп 3 рдбреА рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕рдордп рдкреНрд░рдХрд╛рд╢ рдХреА рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рдПрдВ:

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреЛрдиреЛрдВ рд╣реА рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдореЙрдбрд▓ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд┐рдирд┐рд░реЗрдВрдбрд░ рд╕реЗ рд▓рд┐рдпрд╛ред рд╢рд╛рдпрдж рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░реЗрдВрдбрд░рд░ рдЗрддрдирд╛ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ?
рдЖрдзреБрдирд┐рдХ рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рдПрдХ 3 рдбреА рдореЙрдбрд▓ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ 3 * 3 * (рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд░реНрдЬрди рд╕рд░рдгреА рдмрдирд╛рддрд╛ рд╣реВрдВред рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд┐рдХреЛрдг рдореЗрдВ рддреАрди рдХреЛрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ, рд╣реИ рдирд╛? рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рддреАрди рд╕рдВрдЦреНрдпрд╛рдУрдВ (x, y, z) рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, 3 * 3 * model.nfaces () рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
std::vector<GLfloat> vertices(3*3*model.nfaces(), 0); for (int i=0; i<model.nfaces(); i++) { for (int j=0; j<3; j++) { for (int k=0; k<3; k++) vertices[(i*3+j)*3 + k] = model.point(model.vert(i, j))[k]; } }
рдФрд░ рдлрд┐рд░ рд╣рдо рдУрдкрдирдЬреАрдПрд▓ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕рд░рдгреА рд╣реИ, рдбреНрд░рд╛, рджреЗрд╢реА!
while (!glfwWindowShouldClose(window)) { [...] я┐╝ glDrawArrays(GL_TRIANGLES, 0, vertices.size()); [...] }я┐╝
рд╢реАрд░реНрд╖ shader рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛ рдХреЛ рдЯреБрдХрдбрд╝рд╛ shader рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИ:
#version 330 core
рдЦреИрд░,
рдЯреБрдХрдбрд╝рд╛ shader рднреА
рд╕реНрдкрд╖реНрдЯ рд╣реИ ред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдЕрдЪрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ:
#version 330 core
рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИ, рдЕрдм рдпрд╣ рддрдХрдиреАрдХ рдХреА рдмрд╛рдд рд╣реИ!
рд╕реНрдЯреЗрдЬ рдереНрд░реА: рдбрд┐рдлреНрдпреВрдЬрд╝ рд▓рд╛рдЗрдЯрд┐рдВрдЧ
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред рд╣рдореЗрдВ рдпрд╣ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдлреЛрдВрдЧ рдореЙрдбрд▓ рдореЗрдВ рдбрд┐рдлреНрдпреВрдЬрд╝ рд▓рд╛рдЗрдЯрд┐рдВрдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рд╣реИ
рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╡реЗрдХреНрдЯрд░ред рдЗрд╕рд▓рд┐рдП, рдХреЛрдиреЗ рд╕рд░рдгреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдорд╛рдирджрдВрдб рд╕рд░рдгреА рдЬреЛрдбрд╝рд╛ред рдХреЛрдб рджреЗрдЦреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдЖрдХрд╛рд░ рдХрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдирд╛, рдореБрдЦреНрдп .cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
#version 330 core
рдЪрд░рдг рдЪрд╛рд░: рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рдореЙрдбрд▓, рджреГрд╢реНрдп рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдХреЛрдбрд┐рдд рдХрд┐рдпрд╛ред рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╡реЗ рд╕рд┐рд░реНрдл рдПрдХ рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕реНрдкреЗрд╕рдмрд╛рд░ рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореЙрдбрд▓ рдШреВрдордирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛: рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдЪрд┐рддреНрд░ рдЦреАрдВрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ 0.01 рдЕрдХреНрд╖рд╛рдВрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ z рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЙрдбрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реВрдВ:
{
рдпрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рд░реЛрдЯ_рдЬрд╝ () рджрд┐рдП рдЧрдП рдХреЛрдг рджреНрд╡рд╛рд░рд╛ z рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреЗрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдУрдкрдирдЬреАрдПрд▓ рдЕрдкрдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдлреНрд▓реЛрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рд╢реВрдиреНрдп рдПрдХреНрд╕рдкреЛрд░реНрдЯ_рд░реЛ_рдореЗрдЬрд░ () рдЬреЛрдбрд╝рдирд╛ рдерд╛ред

рдкрд╛рдВрдЪ рдЪрд░рдг: рд╕рд╛рдорд╛рдиреНрдп рдирдХреНрд╢реЗ
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдмрдирд╛рд╡рдЯ рдХреЛ рдХреИрд╕реЗ рдУрд╡рд░рд▓реЗ рдХрд░рдирд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╕рд░рд┐рдд рдмрдирд╛рд╡рдЯ рдЙрдмрд╛рдК рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдЪрд┐рддреНрд░ рд▓рд╛рдЧреВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдореЗрдВ рднреАред рд╕рд╛рдорд╛рдиреНрдп рдирдХреНрд╢реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

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

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

рд╕реНрдЯреЗрдЬ рдЫрд╣: рдЪрдХрд╛рдЪреМрдВрдз
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред рдЕрдВрддрд┐рдо рдЪрд░рдг, рдПрдХ рдФрд░ рдмрдирд╛рд╡рдЯ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрдордХрджрд╛рд░ рд╕рддрд╣реЛрдВ рд╕реЗ рдкреНрд░рдХрд╛рд╢ рдХреА рдЪрдордХ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:

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