Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° 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).

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ… – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ 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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² 3D-Ρ„Π°ΠΉΠ»ΠΎΠ²

ГрафичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenGL для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² (Assimp) прСдставлСна ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… популярных Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Бамая послСдняя вСрсия экспортируСт 3d-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ нСсколько Π²ΠΈΠ΄ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

АрхитСктура OpenGL

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½ (vertex). Π’Π΅Ρ€ΡˆΠΈΠ½Π° опрСдСляСт Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΈΠ»ΠΈ ΡƒΠ³ΠΎΠ» ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π‘ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Ρ†Π²Π΅Ρ‚, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ, тСкстурныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ Ρ‚.Π΄.), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Π’ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв каТдая Π²Π΅Ρ€ΡˆΠΈΠ½Π° обрабатываСтся нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ….

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ графичСская систСма OpenGL являСтся ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ, состоящим ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… этапов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ OpenGL всСгда ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚, хотя ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ проявится эффСкт ΠΎΡ‚ ΠΈΡ… выполнСния. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв OpenGL прСдоставляСт нСпосрСдствСнный интСрфСйс, Ρ‚.Π΅. ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΊΠ°Π΄Ρ€Π°.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° 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 Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это

Π§Ρ‚ΠΎ это Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

И сразу ΠΆΠ΅ Ρ…ΠΎΡ‡Ρƒ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это вовсС Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Π½Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈ Π½Π΅ слуТба.

OpenGL β€” спСцификация, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для написания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… 2D ΠΈ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ. По сути, это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ изобраТСния Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ΠΎΠΉ.

НазваниС Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Open Graphics Library, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β». ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ инструмСнта ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ любой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π±Π΅Π· всякой ΠΌΠ°Ρ€ΠΆΠΈ ΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… отчислСний.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ кроссплатформСнный: созданныС с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любой срСдС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

ΠŸΡ€ΠΈ этом Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ всС Π² зависимости ΠΎΡ‚ мощности Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции. Вакая рСализация освобоТдаСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° графичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ области примСнСния OpenGL β€” Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Ρ‹, систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ визуализация Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ являСтся DirectX.

О Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ DirectX ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ OpenGL Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² 1982 Π³ΠΎΠ΄Ρƒ Π² унивСрситСтС Бтэнфорда. Аппаратно ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° компания Silicon Graphics, создавшая ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. Π•Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стали основой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ OpenGL.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ OpenGL

Если ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‚ΠΎ OpenGL β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹. ВсСго Π΅ΡΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 150 ΠΊΠΎΠΌΠ°Π½Π΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… программист опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³.Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ этоЭтим ΠΆΠ΅ стандартом ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ настройки: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тройная буфСризация, трассировка Π»ΡƒΡ‡Π΅ΠΉ ΠΈΠ»ΠΈ сглаТиваниС Π² ΠΈΠ³Ρ€Π°Ρ….

НСт нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии графичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для отобраТСния Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… качСства Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ: всС подстраиваСтся Β«Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅Β», исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… программистов ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΡ€ΠΎΡ‰Π΅ говоря, программист опрСдСляСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС, ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ взаимодСйствиС, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡƒΠ³ΠΎΠ» ΠΎΠ±Π·ΠΎΡ€Π° ΠΈ Ρ‚.Π΄., Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†Π²Π΅Ρ‚ ΠΈ тСкстуру, Π° OpenGL ΡƒΠΆΠ΅ заботится ΠΎΠ± ΠΈΡ… Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅.

МоТно ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот инструмСнт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ воспроизводит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅ взаимодСйствуСт с устройствами Π²Π²ΠΎΠ΄Π° β€” ΠΌΡ‹ΡˆΡŒΡŽ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Ρ€ΡƒΠ»Π΅ΠΌ. Π—Π° это, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΎΠΊΠΎΠ½, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ ΡƒΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

НСсмотря Π½Π° ΠΊΠ°ΠΆΡƒΡ‰ΡƒΡŽΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, OpenGL ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΡƒΡŽ структуру ΠΈ простой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ интСрфСйс. ΠŸΡ€ΠΈ этом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТныС сцСны, состоящиС ΠΈΠ· мноТСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностСй трСбуСтся мСньшС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

НСкоторыС вСрсии OpenGL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ сСти: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ рСндСрятся Π½Π° сСрвСрС, Π° клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Благодаря этому ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ воспроизводящиС комплСксы, состоящиС ΠΈΠ· мноТСства ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π° OpenGL ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚, DirectX, Β«Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Β» ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. МногиС ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

НуТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ? На ΠΌΠΎΠΉ взгляд, Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, НСзависимо ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ сущСствСнной Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows.

Если ΠΆΠ΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эмулятор Андроид Π½Π° ПК, Π² этом случаС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ OpenGL: для систСм сСмСйства Unix этот инструмСнт ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ большС.

Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с публикациями Β«Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ DirectXΒ» ΠΈ «Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹Β». Π‘ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½, Ссли Π²Ρ‹ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΡ‚Π΅ этот пост Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях. Π”ΠΎ скорой встрСчи!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

learnopengl. Π£Ρ€ΠΎΠΊ 1.1 β€” OpenGL

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° opengl Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° 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 контСкст ΠΈ нашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прямо Ρ‚ΡƒΡ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *