ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° opengl ΡΡΠΎ ΡΡΠΎ
ΠΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΌ. Π. Π. ΠΠ°ΡΠΌΠ°Π½Π°
Bauman National Library
ΠΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
OpenGL (Open Graphics Library)
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 300 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ, Π‘ΠΠΠ , Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π½Π°ΡΡΠ½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ .
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenGL Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ° Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΠΈΡΠΎΠΊΠΈΠΌ ΡΠΏΠ΅ΠΊΡΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΅Π΅ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²:
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° OpenGL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ΅Π΄Π΅ Microsoft Windows, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Apple, Unix-ΠΏΠ»Π°ΡΡΠΎΡΠΌ, PlayStation 3. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΡ Mesa (ΠΏΠ°ΠΊΠ΅Ρ API Π½Π° Π±Π°Π·Π΅ OpenGL) ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² Linux. ΠΠ· Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Mesa ΡΠ²Π»ΡΠ΅ΡΡΡ «Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉβ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ OpenGL, Ρ ΠΎΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Ρ Π½Π΅ΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π°.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenGL ΠΏΠ΅ΡΠ΅ΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠΎΠΌ ARB (Architecture Review Board). ΠΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠ³ΠΎ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ API. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ°ΠΉΡΡ OpenGL, ΡΠ»Π΅Π½Π°ΠΌΠΈ ARB Ρ ΡΠ΅ΡΠ°ΡΡΠΈΠΌ Π³ΠΎΠ»ΠΎΡΠΎΠΌ Π½Π° Π½ΠΎΡΠ±ΡΡ 2004 Π³ΠΎΠ΄Π° ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² SGI, 3Dlabs, Matrox ΠΈ Evans & Sutherland (Π²ΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ATI ΠΈ NVIDIA, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel, ΠΈ ΠΈΠ·Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ IBM, Apple, Dell, Hewlett-Packard ΠΈ Sun Microsystems, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΠΈΠ΄Π΅ΡΠΎΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ id Software. Microsoft, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΈΠΊΠΎΠ² ΠΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠ°, ΠΏΠΎΠΊΠΈΠ½ΡΠ»Π° Π΅Π³ΠΎ Π² ΠΌΠ°ΡΡΠ΅ 2003 Π³ΠΎΠ΄Π°. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΠ»Π΅Π½ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ Π³ΠΎΠ΄ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΡΡΠ°Π½ΠΎΠ²ΡΡΠΈΡ ΡΡ ΡΠ°ΡΡΡΡ OpenGL ARB Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΠΊΡΡΠ³ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ OpenGL ΡΡΠ°ΡΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΡΡΠΎΡΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ OpenGL
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenGL, ΠΊΠ°ΠΊ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π° Π² 1992 Π³ΠΎΠ΄Ρ. ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π°ΡΠ»Π° ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π£ΡΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΡ ΠΌΠ΅ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΎΠ³ΡΠ°ΡΠΈΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠ΅ΡΡΡΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠ»ΡΠΌΡ (βΠ¨ΡΠ΅ΠΊβ, βΠΡΡΠΎΡΠΈΡ ΠΈΠ³ΡΡΡΠ΅ΠΊβ ΠΈ Π΄Ρ.). Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΡΡΡ ΠΌΠ΅ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠΈΡΠΎΠ².
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ. Π 1990-Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π±ΡΠ»Π° ΡΠΎΠΏΡΡΠΆΠ΅Π½Π° Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΜΠΌΠΈ ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΡΠΎΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΡΠ°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΠ»ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ. [ΠΡΡΠΎΡΠ½ΠΈΠΊ 2]
OpenGL 1.0
Silicon Graphics Incorporated (SGI) ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ². Π―Π²Π»ΡΡΡΡ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ Π² ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅, SGI Π²ΠΈΠ΄Π΅Π»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ Π±Π°ΡΡΠ΅ΡΡ Π² ΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΠ°. ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ OpenGL, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ΅ ΠΏΡΡΡΠΌ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΎΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎ Π½Π° Π½ΠΈΡ Π·Π°ΡΡΠ°ΡΡ.
Π 1995 Π³ΠΎΠ΄Ρ Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Direct3D ΠΎΡ Microsoft. ΠΡΠΊΠΎΡΠ΅ Microsoft, SGI ΠΈ Hewlett-Packard Π½Π°ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Fahrenheit, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π» ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Direct3D ΠΈ OpenGL. ΠΠ΄Π΅Ρ ΠΊΠ°Π·Π°Π»Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠ°ΡΡΠ΅ΠΉ, ΠΏΡΠΈΠ·Π²Π°Π½Π½ΠΎΠΉ Π½Π°Π²Π΅ΡΡΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ Π² SGI ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ» Π·Π°ΠΊΡΡΡ.
OpenGL 2.0
Π ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 2001 Π³ΠΎΠ΄Π° 3DLabs ΡΠ°ΡΠΊΡΡΠ»Π° ΡΠ²ΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ OpenGL 2.0. ΠΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ DirectX Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ (ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ OpenGL), Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. OpenGL Π²Π΅ΡΡΠΈΠΈ 2.0 Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° 3Dlabs Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΡΡΡΠΊΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ OpenGL. 3Dlabs ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»Π° ΡΡΠ΄ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΄ΡΡ OpenGL ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΎΠ½ΠΎΠ² GLSL. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ OpenGL Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ bump mapping, normal mapping, parallax mapping, HDR ΠΈ Ρ. Π΄.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡ Π΄ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡ OpenGL ΡΠ·ΡΠΊΠ° GLSL ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΡΡΡΠ΅ΠΊΡΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° (ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ vertex_program, fragment_program) ΠΈ Cg (NVidia C for Graphics). ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π² Π²Π΅ΡΡΠΈΠΈ OpenGL 2.0, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ.
OpenGL 2.1
ΠΡΡΠ΅Π» Π² ΡΠ²Π΅Ρ 2 ΠΈΡΠ»Ρ 2006 Π³ΠΎΠ΄Π°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GLSL Π²Π΅ΡΡΠΈΠΈ 1.2
OpenGL 3.0
11 Π°Π²Π³ΡΡΡΠ° 2008 Π³ΠΎΠ΄Π° Khronos Group ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL.
OpenGL 3.1
24 ΠΌΠ°ΡΡΠ° 2009 Π³ΠΎΠ΄Π° Khronos Group Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»Π° OpenGL 3.1. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΡΠΈΡΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ, Π½ΠΎ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ Π² OpenGL 3.0 Π΄Π»Ρ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ API (ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· GL_ARB_compatibility extension).
OpenGL 3.2
3 Π°Π²Π³ΡΡΡΠ° 2009 Π³ΠΎΠ΄Π° Khronos Group Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»Π° OpenGL 3.2. ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenGL, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ GPU.
OpenGL 3.3
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ OpenGL 4.0 11 ΠΌΠ°ΡΡΠ° 2010 Π³ΠΎΠ΄Π°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ OpenGL 4.0 Π½Π° Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ.
OpenGL 4.0
11 ΠΌΠ°ΡΡΠ° 2010 Π³ΠΎΠ΄Π° Khronos Group ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 4.0 ΠΈ ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΎΠ½ΠΎΠ² GLSL 4.0. OpenGL 4.0 ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ OpenGL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² OpenGL 3.2.
OpenGL 4.1
26 ΠΈΡΠ»Ρ 2010 Π³ΠΎΠ΄Π°, Khronos Group Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenGL 4.1. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ GLSL Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 4.10.
OpenGL 4.2
8 Π°Π²Π³ΡΡΡΠ° 2011 Π³ΠΎΠ΄Π° Khronos Group ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenGL 4.2 ΠΈ ΡΠ·ΡΠΊΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² GLSL 4.2. [ΠΡΡΠΎΡΠ½ΠΈΠΊ 3]
OpenGL 4.3
6 Π°Π²Π³ΡΡΡΠ° 2012 Π³ΠΎΠ΄Π° Khronos Group ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Π½Π° SIGGRAPH 2012 ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 4.3. ΠΡΠΎΠΌΠ΅ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, OpenGL 4.3 ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΡΠ΅ΡΠ΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ GL_ARB_compute_shader. ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ.
OpenGL 4.4
22 ΠΈΡΠ»Ρ 2013 Π³ΠΎΠ΄Π° Khronos Group Π½Π° SIGGRAPH Π² ΠΠ½Π°Ρ Π°ΠΉΠΌ, ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 4.4.
OpenGL 4.5
11 Π°Π²Π³ΡΡΡΠ° 2014 Π³ΠΎΠ΄Π° Khronos Group Π½Π° SIGGRAPH Π² ΠΠ°Π½ΠΊΡΠ²Π΅ΡΠ΅, ΠΠ°Π½Π°Π΄Π° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 4.5.
OpenGL 4.6
31 ΠΈΡΠ»Ρ 2017 Π³ΠΎΠ΄Π° Khronos Group ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 4.6.
Vulkan
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ OpenGL ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΠΈ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΠΏΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ:
ΠΡΠΈ ΡΡΠΎΠΌ OpenGL ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ»Π°ΠΉΠ½ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ΅ΠΉ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈ Ρ.Π΄.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ OpenGL
OpenGL ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ GL. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ, OpenGL Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (ΡΠΈΡ. 1).
ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠΈΠ»ΠΈΡ GL(GLU β GL Utility). ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ΅ΡΠ΅Π· Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ GL. Π ΡΠΎΡΡΠ°Π² GLU Π²ΠΎΡΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² (ΠΊΡΠ±, ΡΠ°Ρ, ΡΠΈΠ»ΠΈΠ½Π΄Ρ, Π΄ΠΈΡΠΊ), ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΏΠ»Π°ΠΉΠ½ΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΈ Ρ.ΠΏ.
OpenGL Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° GLUT (GL Utility Toolkit). Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ GLUT Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² OpenGL, Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ Π΅Π³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. GLUT ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ OpenGL-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° GLX ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
DevIL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΈ ΠΠ‘ (Microsoft Windows, Linux, macOS). [ΠΡΡΠΎΡΠ½ΠΈΠΊ 4]
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ :
ΠΡΠΈΠΌΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ OpenGL Orbit Camera ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 2
ΠΠΌΠΏΠΎΡΡ Π°ΠΊΡΠΈΠ²ΠΎΠ² 3D-ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenGL Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π°ΠΊΡΠΈΠ²ΠΎΠ² (Assimp) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π‘Π°ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ 3d-ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΡΠ°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° OpenGL
ΠΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΡΠΈΠ½ (vertex). ΠΠ΅ΡΡΠΈΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΊΡ, ΠΊΠΎΠ½Π΅Ρ ΠΎΡΡΠ΅Π·ΠΊΠ° ΠΈΠ»ΠΈ ΡΠ³ΠΎΠ» ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π‘ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ Π°ΡΡΠΎΡΠΈΠΈΡΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, ΡΠ²Π΅Ρ, Π½ΠΎΡΠΌΠ°Π»Ρ, ΡΠ΅ΠΊΡΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ Ρ.Π΄.), Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ. Π ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΊΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΡΠΈΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ .
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ, ΡΠΎΡΡΠΎΡΡΠΈΠΌ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°ΠΏΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠΌΠ°Π½Π΄Ρ OpenGL Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ, Ρ ΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ²ΠΈΡΡΡ ΡΡΡΠ΅ΠΊΡ ΠΎΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² OpenGL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Ρ.Π΅. ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΠΊΠ°Π΄ΡΠ°.
OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, OpenGL ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π½ΠΎΡΠΌΠ°Π»ΠΈ, ΡΠ²Π΅ΡΠ°, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠ΅ΠΊΡΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ². ΠΡΡ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΡΡΠΈΠ½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΠ³ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° Π²Ρ ΠΎΠ΄ΠΈΡ. Π‘ΠΌΠ΅Π½Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ GL Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ gl.h, Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ GLU Π½ΡΠΆΠ½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» glu.h. ΠΠ΅ΡΡΠΈΠΈ ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Microsoft Visual C++ ΠΈΠ»ΠΈ Borland C++ 5.02.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠ°ΠΊΠ΅Ρ GLUT Π½ΡΠΆΠ½ΠΎ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΡΠ΅Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ OpenGL Π΄Π°Π½Π° Π² ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π‘.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ ΠΎΠ΄ΡΡ ΡΡΡΡΠΈΠΊΡΡ, Π½Π΅ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΡΠ»Π΅ ΠΈ ΡΠΈΠΏΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π OpenGL ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠΌΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° C++. ΠΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ OpenGL Π½Π΅ ΡΠ°ΡΡΡΠΈΡΠ°Π½ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½.
Π’ΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ OpenGL, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (ΠΊΠ»ΠΈΠ΅Π½Ρ) OpenGL ΠΈ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΡΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ OpenGL API.
ΠΡΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β ΡΠΈΡΡΠ΅Ρ Π² ΡΠ΅Π½ΡΡΠ΅ ΠΎΠΊΠ½Π° ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ.
OpenGL β ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Π° ΡΠ°ΠΊΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°?
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Π΄ΠΎΡΠΎΠ³ΠΈΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ OpenGL β ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠΎ ΡΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ.
Π§ΡΠΎ ΡΡΠΎ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
Π ΡΡΠ°Π·Ρ ΠΆΠ΅ Ρ ΠΎΡΡ ΡΡΠΎΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Π½Π΅ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, Π½Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ Π½Π΅ ΡΠ»ΡΠΆΠ±Π°.
OpenGL β ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ 2D ΠΈ 3D Π³ΡΠ°ΡΠΈΠΊΡ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠΎΠΉ.
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Open Graphics Library, ΡΠΎ Π΅ΡΡΡ Β«ΠΡΠΊΡΡΡΠ°Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Β». ΠΡΠΊΡΡΡΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±Π΅Π· Π²ΡΡΠΊΠΎΠΉ ΠΌΠ°ΡΠΆΠΈ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΡ ΠΎΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ: ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΠ΄ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ°Π½ΡΠΈΠΈ. Π’Π°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ OpenGL β Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³ΡΡ, ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Windows Π³Π»Π°Π²Π½ΡΠΌ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ DirectX.
Π ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ DirectX ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π²ΠΎΡ ΡΡΡ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ OpenGL Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π² 1982 Π³ΠΎΠ΄Ρ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ΅ Π‘ΡΡΠ½ΡΠΎΡΠ΄Π°. ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Silicon Graphics, ΡΠΎΠ·Π΄Π°Π²ΡΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°. ΠΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ OpenGL.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ OpenGL
ΠΡΠ»ΠΈ ΡΠΌΠΎΡΡΠ΅ΡΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΠΎ OpenGL β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ. ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ 150 ΠΊΠΎΠΌΠ°Π½Π΄, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.ΠΡΠΈΠΌ ΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠΉΠ½Π°Ρ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΠΈΠ³ΡΠ°Ρ
.
ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π³ΡΠ°ΡΠΈΠΊΠΈ: Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Β«Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠ΅Β», ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ³ΠΎΠ» ΠΎΠ±Π·ΠΎΡΠ° ΠΈ Ρ.Π΄., Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π΅Ρ ΠΈ ΡΠ΅ΠΊΡΡΡΡΡ, Π° OpenGL ΡΠΆΠ΅ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ± ΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅.
ΠΠΎΠΆΠ½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½ΠΎ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π²Π²ΠΎΠ΄Π° β ΠΌΡΡΡΡ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ³ΡΠΎΠ²ΡΠΌ ΡΡΠ»Π΅ΠΌ. ΠΠ° ΡΡΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΎΠΊΠΎΠ½, ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΊΠ°ΠΆΡΡΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, OpenGL ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠΊΠΎ ΠΏΡΠΎΠ΄ΡΠΌΠ°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ OpenGL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ: ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ΅Π½Π΄Π΅ΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΎΡΠ½ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ².
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ° OpenGL ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ»Π°Π²Π½ΡΠΉ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½Ρ, DirectX, Β«Π·Π°ΡΠΎΡΠ΅Π½Β» ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΈΠ³ΡΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
ΠΡΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ? ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅, ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Windows.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΌΡΠ»ΡΡΠΎΡ ΠΠ½Π΄ΡΠΎΠΈΠ΄ Π½Π° ΠΠ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ OpenGL: Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Unix ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅.
Π’Π°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ Β«Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ DirectXΒ» ΠΈ Β«ΠΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡΒ». ΠΡΠ΄Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»Π΅Π½, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΡΡΠ°ΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΏΠΎΡΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ . ΠΠΎ ΡΠΊΠΎΡΠΎΠΉ Π²ΡΡΡΠ΅ΡΠΈ!
learnopengl. Π£ΡΠΎΠΊ 1.1 β OpenGL
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π΅Π»Ρ Π½Π°Π·Π°Π΄ Ρ Π½Π°ΡΠΈΠ½Π°Π» ΡΠ΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ OpenGL. ΠΠΎ Π½Π° 4 ΡΡΠ°ΡΡΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ
Π°Π±ΡΠΎΠ²ΡΠ°Π½ΠΈΠ½ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΌΠΎΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΡΡΠ°ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΡΡΠ΅Π±Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π°ΡΡΡΠ°Π»ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ. ΠΠ»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΡΡ ΠΊ Π°Π²ΡΠΎΡΠ°ΠΌ ΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΡΠΎΠΊΠΎΠ², Π½ΠΎ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΡΠΌΠΎΠ³ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ ΡΠ²ΡΠ·Π°Π»ΡΡ Ρ Π°Π²ΡΠΎΡΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ (Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅) ΠΊΡΡΡΠΎΠ³ΠΎ, Π½Π°Π±ΠΎΡΠ° ΡΡΠΎΠΊΠΎΠ² ΠΏΠΎ OpenGL: Joey de Vries. Π ΠΎΠ½ Π΄Π°Π» ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΡΠΎΠΊΠΎΠ². ΠΠ³ΠΎ ΡΡΠΎΠΊΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ»ΡΠΉ Π½Π°Π±ΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΠ°ΡΡΡΠ½ΡΡΡΡ Π½Π° Π΄ΠΎΠ»Π³ΠΎ. Π Ρ ΠΎΠ±Π΅ΡΠ°Ρ, Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π²ΡΠΈΡ
ΡΡ ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
Π’Π°ΠΊΠΆΠ΅ Ρ Π²ΡΡΠ°Π» Π½Π° ΡΠ°ΡΠΏΡΡΡΠ΅: Π»ΠΈΠ±ΠΎ Ρ ΠΎΠΏΠΈΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ Π²ΡΠΎΠ΄Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΡΡΠ°ΡΡΡ Π½Π΅ Π²ΡΡΠΊΠΈΠΉ ΠΎΡΠΈΠ»ΠΈΡ; Π»ΠΈΠ±ΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅ Π±ΡΠ΄Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ, ΠΎΠΏΠΈΡΠ°ΡΡΡ Π½Π° ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. Π― ΡΠ΅ΡΠΈΠ» Π²ΡΠ±ΡΠ°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠΊΠΎΠ² ΠΏΠΎ Vulkan: ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΠΌΠ½Π΅ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎΠΊΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ API ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΊΡΠ΄Π½ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Vulkan API, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΊΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ API Π±ΡΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ.
Π§Π°ΡΡΡ 1.1 β OpenGL
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ Π½Π°ΡΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ Π½Π°ΠΌ ΡΡΠΎΠΈΠ»ΠΎ Π±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ OpenGL. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΠ΄ OpenGL ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ API (ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ OpenGL ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Khronos Group.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenGL ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°ΡΡ. Π ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π»Π΅ΠΆΠΈΡ Π½Π° ΠΏΠ»Π΅ΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ OpenGL, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌ.
ΠΡΠ΄ΠΈ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠ΅ OpenGL Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π·Π°ΡΠ°ΡΡΡΡ, ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ. ΠΠ°ΠΆΠ΄Π°Ρ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΠΊΡΠΏΠ°Π΅ΡΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ OpenGL ΠΈΠ· Π½Π°Π±ΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΡΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Apple ΡΠΈΡΡΠ΅ΠΌΡ, OpenGL Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Apple, ΠΏΠΎΠ΄ Linux ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ ΠΎΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΉ ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠΈ Π²Π΅ΡΡΠΈΡ OpenGL ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π·Π½Π°ΡΠΈΡ, Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ β ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ, Π΄Π»Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π³ΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ. ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΡΠΎΠΊΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ.
Khronos Π²ΡΠ»ΠΎΠΆΠΈΠ»Π° Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π²ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΉ OpenGL. ΠΠ°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π²ΡΠΈΠΉΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenGL 3.3 (ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ Π²Π΅ΡΡΠΈΡ OpenGL ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ) Π·Π΄Π΅ΡΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
Core-profile ΠΈ Immediate mode (ΠΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ)
Π Π°Π½ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenGL ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π² Immediate mode (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ (fixed function pipeline)), ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΡΠΎΡΡΠ° Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° OpenGL Π±ΡΠ»ΠΎ ΡΠΊΡΡΡΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΠΈ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ OpenGL.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ°Π»Π° Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ, Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΈ. Immediate mode Π±ΡΠ» ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Π½ΠΎ ΠΎΠ½ Π±ΡΠ» ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΊΠ°Π·Π°Π»Π° Immediate mode ΠΊΠ°ΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ, ΠΈ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.2 Π½Π°ΡΠ°Π»Π° ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Core-profile ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΊΠ»ΡΡΠ°Π» Π²Π΅ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π».
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ core-profile, OpenGL Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, OpenGL Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ β ΡΡΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, Π½ΠΎ ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π±ΠΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ. Immediate mode ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΠ»ΡΡΠ΅ΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠ΅ΠΉ ΠΈ ΠΎΠ½ ΡΠΊΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ OpenGL ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΡΡΠ°ΡΡ, Π½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ OpenGL Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ OpenGL ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π°ΡΠΈ ΡΡΠΎΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Core-Profile OpenGL Π²Π΅ΡΡΠΈΠΈ 3.3.
Π₯ΠΎΡΡ ΠΎΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π½ΠΎ ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ.
Π‘Π΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ Π²ΡΡΠ»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ OpenGL (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ 4.5) ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ: Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΡΡΠ°ΡΡ OpenGL 3.3, ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π²ΡΡΠ΅Π» 4.5? ΠΡΠ²Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ. ΠΡΠ΅ ΡΡΠ°ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ OpenGL, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ 3.3 Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠΈ. ΠΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡΠ΅ ΠΊ OpenGL 3.3 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ Π²Π΅ΡΡΠΈΡΠΌ OpenGL.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ OpenGL ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΡΠΏΠΎΠ»Π½ΡΡΡ Π½ΠΎΠ²Π΅ΠΉΡΠΈΠ΅ API ΡΠΌΠΎΠ³ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈΡΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠΈΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π² Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π΅ΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ. ΠΡΠ»ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, Π·Π½Π°ΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠΉ, ΠΈΠ»ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π· ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡΡ OpenGL, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠΎΠΉ. ΠΠ°ΡΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΏΡΠΎΡΠΎΠΌ, Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ OpenGL.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π°Π΄ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ). Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Ρ Π½Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ :
C OpenGL 3.3 Π½Π°ΠΌ ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ½Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ½Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ.
ΠΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ
OpenGL ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ β ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ: Π½Π°Π±ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ OpenGL. ΠΠΎΠ΄ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ OpenGL Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π²ΠΈΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ OpenGL. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL, ΠΌΡ ΡΠ°ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ OpenGL, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π°ΡΠ°ΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π»ΠΈΠ½ΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΡΠΎ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ OpenGL, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΎΠΏΡΠΈΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΡΡ Π·Π° ΡΠΎ ΠΊΠ°ΠΊ OpenGL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ OpenGL, Π½Π° ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π»ΠΈΠ½ΠΈΠΉ, Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ OpenGL ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ OpenGL. ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π΄Π΅ΡΠΆΠΈΡΠ΅ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ OpenGL β ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π±ΡΠ΄Π΅Ρ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΠ½Π°.
ΠΠ±ΡΠ΅ΠΊΡΡ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° C ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, Π½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΎ C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ· ΡΠ·ΡΠΊΠ° C Π½Π΅ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ OpenGL Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΊΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² OpenGL.
ΠΠ±ΡΠ΅ΠΊΡ Π² OpenGL β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΎΠΏΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ OpenGL. Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠΊΠ½Π°; ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²Π΅ΡΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ:
ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ OpenGL ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ OpenGL. ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ float Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΡΠΈΡΡΠ°Π²Π½ΠΎΠΉ GL. Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ int, uint char, bool ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. OpenGL ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΅Π³ΠΎ GL ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΡ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ:
ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° β ΡΠΎ, ΡΡΠΎ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ OpenGL. Π Π½Π°ΡΠ°Π»Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° (id). (Π Π΅Π°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΡΡΠ°Π½Ρ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° (Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΊΠ½Π° ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π°Π΄Π°Π½ΠΎ, ΠΊΠ°ΠΊ `GL_WINDOW_TARGET`). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΉ ΠΎΠΊΠ½Π° ΠΈ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΎΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² id Π² 0. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· objectId ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ ΡΠ½ΠΎΠ²Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊ GL_WINDOW_TARGET.
ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π»ΠΈΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ OpenGL. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΈΡΠΊΠ° ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ ΠΎΠΏΡΠΈΠΈ ΠΈ ΠΊΠΎΠ³Π΄Π° Π±Ρ ΠΌΡ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ OpenGL ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π½Π°ΡΠΈΠΌΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΎ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π° ΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Π°Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ·Π½Π°Π»ΠΈ ΠΏΡΠΎ OpenGL ΠΊΠ°ΠΊ ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. Π£Π·Π½Π°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ OpenGL. ΠΠ΅ ΡΠ°ΡΡΡΡΠ°ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΡΠ»ΠΈ, Π΄Π°Π»Π΅Π΅ ΠΌΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ°ΠΌ ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ Ρ ΠΈΡΡΠΎΡΠΏΠ»Π΅ΡΠ΅Π½ΠΈΡΡ OpenGL. ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Ρ Π½Π°ΡΠ°ΡΡ β ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ OpenGL ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ Π½Π°ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΡΠΌΠΎ ΡΡΡ.