ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ срСдствами OpenGL Π² Π‘#

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ OpenGL, с ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, позволяСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ производитСлям Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ устройства, поставляСмого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, которая… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ срСдствами OpenGL Π² Π‘# (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ ВюмСнский ГосударствСнный УнивСрситСт Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ЕстСствСнных Наук ΠΈ Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡ

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

По Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

На Ρ‚Π΅ΠΌΡƒ

Π Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ срСдствами OpenGL Π² Π‘#

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»:

студСнт ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

Π‘Π°Π΄Ρ‹ΠΊΠΎΠ² Π ΠΎΠΌΠ°Π½ Π’Π°Π»Π΅Ρ€ΡŒΠ΅Π²ΠΈΡ‡ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»:

Π΄ΠΎΡ†Π΅Π½Ρ‚ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Π‘Ρ‚ΡƒΠΏΠ½ΠΈΠΊΠΎΠ² АндрСй ΠΠ½Π°Ρ‚ΠΎΠ»ΡŒΠ΅Π²ΠΈΡ‡ ΠΠΎΡΠ±Ρ€ΡŒΡΠΊ 2013

  • 1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OpenGL
  • 2. Direct3D vs. OpenGL
  • 3. БпСцификация
  • 4. АрхитСктура
  • 5. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
  • 6. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • 7. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠ° программирования
  • 8. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ вСрсий
  • 9. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€
    • 10. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tao OpenGL Π² Π‘#.
      • 11. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ OpenGL Π² C# .NET .
      • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OpenGL

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² срСдствами OpenGL Π² C#, Ρ‡Ρ‚ΠΎ ΠΈΠ· ΡΠ΅Π±Ρ прСдставляСт OpenGL, основныС спСцификации, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, возмоТности ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

OpenGL (Open Graphics Library — открытая графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, графичСскоС API) — спСцификация, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ нСзависимый ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠ° программирования платформонСзависимый ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для написания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΈ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ.

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 250 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для рисования слоТных Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… сцСн ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ создании ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€, БАПР, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдованиях. На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ с Direct3D, Ρ‚Π°ΠΊΠΆΠ΅ извСстным ΠΊΠ°ΠΊ DirectX.

2. Direct3D vs. OpenGL

На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь, ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° API, Direct3D ΠΈ OpenGL. РасскаТу ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ.

ВсСм извСстна ΠΎΠ΄Π½Π° ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅ΠΊ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Microsoft, производитСля Direct3D: ΠΈΡ‰Π΅ΠΌ пСрспСктивныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡΠΊΡƒΠΏΠ°Π΅ΠΌ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΡƒΡŽ компанию, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π½Π° ΡΡ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π”Π°, Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈ Ρ Direct3D. Когда-Ρ‚ΠΎ компания Rendermorphics Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ API, Π° Π²Π΅Π·Π΄Π΅ΡΡƒΡ‰Π°Ρ Microsoft ΠΊΠ°ΠΊ Ρ€Π°Π· Π² ΡΡ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄ΡƒΠΌΠ°Π»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΡΠΎΠ²Π΅Ρ‚Π° OpenGL ARB (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ARB Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π½ΠΎ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡΡƒΡ‚ΠΈ OpenGL Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»Π° Microsoft ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, Π° ΠΎΠ½Π° Π±Π΅Π· сомнСний Π»ΡŽΠ±ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚. Π’ΠΎΡ‚ ΠΈ Ρ€Π΅ΡˆΠΈΠ»Π° Microsoft ΡΠΊΡƒΠΏΠΈΡ‚ΡŒ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠΎΠ±Ρ€Π°Π·Π° соврСмСнного Direct3D, ΠΈ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ своими силами. Π’Π°ΠΊ Π½Π° ΡΠ²Π΅Ρ‚ появился Direct3D.

Direct3D — это нСкая ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Microsoft, DirectX (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для создания ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ), которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ графичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Direct3D Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ OpenGL): всС Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ обновлСния. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Direct3D построСн ΠΏΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM (Component Object Model).

Π”Ρ€ΡƒΠ³ΠΈΠΌ популярным срСдством для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ являСтся OpenGL. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ OpenGL являСтся компания SGI (Ρ€Π°Π½ΡŒΡˆΠ΅ Silicon Graphics).

Когда-Ρ‚ΠΎ Π΄Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ сущСствовал 3D API ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ IRIS GL. Как ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, этот API Π±Ρ‹Π» качСствСнным ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ. Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ IRIS GL использовался Π² ΠΌΠΎΡ‰Π½Ρ‹Ρ… графичСских станциях Silicon Graphics. Но Π²Ρ€Π΅ΠΌΡ Π΄Π΅Π»Π°Π΅Ρ‚ своё Π΄Π΅Π»ΠΎ — IRIS GL ΠΊΠ°Π½ΡƒΠ» Π² Π»Π΅Ρ‚Ρƒ.

На ΠΎΡΠ½ΠΎΠ²Π΅ IRIS GL, SGI ΠΈ Π΅Ρ‰Ρ‘ нСсколько ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ (Microsoft, IBM, Intel, DEC) создали Π½ΠΎΠ²Ρ‹ΠΉ 3D API, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ OpenGL. Он Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ΅, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ срСдство для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Он ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ Π½Π°Π΄ΡΡ‚Ρ€ΠΎΠ΅ΠΊ, Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° графичСской систСмы. Для контроля ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ия OpenGL, Π±Ρ‹Π» создан ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ совСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ARB — Architecture Review Board. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΡ€Π³Π°Π½ΠΎΠΌ OpenGL.

Одно ΠΈΠ· ΠΏΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π² OpenGL состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся бСсплатным для использования ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ, с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, OpenGL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π»ΠΈΠΆΠ΅ всСго ΠΊ Π²Π°ΠΌ: C, C++, C#, Java, Delphi, Visual Basic ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ спросит, Π° Π½Π΅Π»ΡŒΠ·Ρ Π»ΠΈ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ API, Π²ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΉ Π² ΡΠ΅Π±Π΅ всС прСимущСства Π½Ρ‹Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…? Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚, ΠΈΠ³Ρ€ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ Direct3D, ΠΈ OpenGL ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Вакая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π±Ρ‹Π»Π°. НовоиспСчСнный совСт ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ (кстати, вСсьма сильно ΠΏΠΎΡ…ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΉ Π½Π° OpenGL ARB) пытался ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ 3D API ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Fahrenheit, Π½ΠΎ ΠΊΠ°ΠΊ всСгда пошло Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ. Никакая компания Π½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»Π° Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ компаниями всСми своими Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ ΠΈ Π°Π²Ρ‚орскими ΠΏΡ€Π°Π²Π°ΠΌΠΈ просто Ρ‚Π°ΠΊ. Бвою Ρ€ΠΎΠ»ΡŒ сыграли Π΅Ρ‰Ρ‘ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ отсутствиС ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ срСдствами для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ).

2. БпСцификация

На Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, OpenGL — это просто спСцификация, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ оборудования Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ этой спСцификации ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ — Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Π±ΠΎΡ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ спСцификации. РСализация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ возмоТности оборудования Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Если Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ эмулирована ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ спСцифичСскиС тСсты (conformance tests — тСсты Π½Π° ΡΠΎΠΎΡ‚вСтствиС) ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ рСализация Π±ΡƒΠ΄Π΅Ρ‚ классифицирована ΠΊΠ°ΠΊ OpenGL-рСализация. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния достаточно Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, описанныС Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, оставив ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ послСдних Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ OpenGL ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для Windows, Unix-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, PlayStation 3 ΠΈ Mac OS. Π­Ρ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ изготовитСлями Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ возмоТности послСдних. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ спСцификации OpenGL, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Mesa. Из Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… сообраТСний Mesa являСтся «Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ OpenGL, хотя ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с Π½Π΅ΠΉ совмСстима Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ускорСниС ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ².

БпСцификация OpenGL пСрСсматриваСтся консорциумом ARB (Architecture Review Board), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сформирован Π² 1992 Π³ΠΎΠ΄Ρƒ. ΠšΠΎΠ½ΡΠΎΡ€Ρ†ΠΈΡƒΠΌ состоит ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, заинтСрСсованных Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённого ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠ³ΠΎ 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 ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ интСрфСйсом ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ назначСния с Π±ΠΎΠ»ΡŒΡˆΠΈΠΌ количСством возмоТностСй.

ΠšΡƒΡ€Ρ‚ Π­ΠΊΠ»ΠΈ (Kurt Akeley) ΠΈ ΠœΠ°Ρ€ΠΊ Π‘ΠΈΠ³Π°Π» (Mark Segal) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ спСцификации OpenGL. ΠšΡ€ΠΈΡ ЀрэзиСр (Chris Frazier) Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π²Π΅Ρ€ΡΠΈΡŽ 1.1. Π™ΠΎΠ½ Π›ΠΈΡ‡ (Jon Leech) Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» вСрсии с 1.2 ΠΏΠΎ Π²Π΅Ρ€ΡΠΈΡŽ 2.0.

4. АрхитСктура

OpenGL ориСнтируСтся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Β· Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ слоТности Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… 3D-ускоритСлСй, прСдоставляя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ API.

Β· Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ различия Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ях Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, трСбуя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ эмуляции.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ OpenGL являСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€ΠΎΠ² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ матСматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ΠΌ растровой ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΈ/ΠΈΠ»ΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ. Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ трансформации ΠΈ Ρ€Π°ΡΡ‚Сризация Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ графичСским ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ (graphics pipeline), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡΡƒΡ‚ΠΈ прСдставляСт собой дискрСтный Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚. ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ OpenGL ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… Π³Ρ€ΡƒΠΏΠΏ: Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ графичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π½Π° Π²Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ исполнСниС трансформаций.

OpenGL являСтся Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ API, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ программиста Π΄ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шагов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π°ΡΡ‚Ρ€ΠΎΠ²ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ (ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄). Π­Ρ‚ΠΎ являСтся основным ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΎΡ‚ Π΄Π΅ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° вся сцСна пСрСдаСтся Π² Π²ΠΈΠ΄Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‡Π°Ρ‰Π΅ всСго Π΄Π΅Ρ€Π΅Π²Π°), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обрабатываСтся ΠΈ ΡΡ‚роится Π½Π° ΡΠΊΡ€Π°Π½Π΅. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π° Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ знания Π·Π°ΠΊΠΎΠ½ΠΎΠ² Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΌΠ°Ρ‚СматичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны — Π΄Π°Ρ‘Ρ‚ свободу внСдрСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ.

5. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ OpenGL, с ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, позволяСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ производитСлям Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ устройства, поставляСмого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚. НапримСр, компания NVIDIA ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ NV, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Ρ‘ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, glCombinerParameterfvNV (), Π° Ρ‚Π°ΠΊΠΆΠ΅ констант, GL_NORMAL_MAP_NV. ΠœΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° EXT, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, glDeleteRenderbuffersEXT. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ одобряСтся консорциумом ARB, ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ ARB ΠΈ ΡΡ‚ановится стандартным Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹Π΅ консорциумом, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… спСцификаций OpenGL.

Бписок зарСгистрированных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

6. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

БущСствуСт ряд Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, созданных ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ OpenGL. НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLU, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ практичСски стандартным Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ OpenGL ΠΈ Π²ΡΠ΅Π³Π΄Π° Π΅Ρ‘ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π°Ρ, построСна ΠΏΠΎΠ²Π΅Ρ€Ρ… послСднСй, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ своих возмоТностСй. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GLUT ΠΈ SDL, созданы для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ возмоТностСй, нСдоступных Π² OpenGL. К Ρ‚Π°ΠΊΠΈΠΌ возмоТностям относятся созданиС интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΎΠΊΠ½Π°, ΠΊΠ½ΠΎΠΏΠΊΠΈ, мСню ΠΈ Π΄Ρ€.), настройка контСкста рисования (ΠΎΠ±Π»Π°ΡΡ‚ΡŒ рисования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°ΡΡΡ OpenGL), ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний ΠΎΡ‚ ΡƒΡΡ‚ройств Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΌΡ‹ΡˆΡŒ ΠΈ Π΄Ρ€.), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Ρ… возмоТностСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, WGL Π² Windows ΠΈΠ»ΠΈ GLX Π² X Window System, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GLUT ΠΈ SDL ΡΠ²Π»ΡΡŽΡ‚ΡΡ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ пСрСнос написанных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GLEW (The OpenGL Extension Wrangler Library) ΠΈ GLEE (The OpenGL Easy Extension library) созданы для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ вСрсиями OpenGL. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для программистов Π² Windows, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, поставляСмыС с Visual Studio, находятся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ вСрсии OpenGL 1.1.

OpenGL ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ гСомСтричСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² (Ρ‚ΠΎΡ‡ΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ) ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ всС Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ создании сцСн. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ²Π΅Ρ€Ρ… OpenGL Π±Ρ‹Π»ΠΈ созданы Π±ΠΎΠ»Π΅Π΅ высокоуровнСвыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Open Inventor ΠΈ VTK. Π”Π°Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТными Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈ ΡƒΡΠΊΠΎΡ€ΡΠ΅Ρ‚ созданиС Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ сцСны. графичСский информация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ directx

GLM (OpenGL Mathematics) — Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ программистам Π½Π° C++ классы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании 3D-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ OpenGL. Одной ΠΈΠ· Ρ…арактСристик GLM являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ рСализация основана Π½Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ GLSL. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ GLM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ MIT.

7. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠ° программирования

Для подтвСрТдСния нСзависимости ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠ° программирования Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ привязки (binding) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ OpenGL ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСнСсСны Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки. Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Java 3D, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ускорСниС OpenGL. ΠŸΡ€ΡΠΌΠ°Ρ привязка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Lightweight Java Game Library, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΡΠΌΡƒΡŽ привязку OpenGL для Java. Sun Ρ‚Π°ΠΊΠΆΠ΅ выпустила Π²Π΅Ρ€ΡΠΈΡŽ Java OpenGL (JOGL), которая прСдоставляСт ΠΏΡ€ΡΠΌΡƒΡŽ привязку ΠΊ Π‘ΠΈ-функциям OpenGL, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Java 3D, которая Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚ΠΎΠ»ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт OpenGL ΠΈΠΌΠ΅Π΅Ρ‚ ссылки Π½Π° ΠΏΡ€ΠΈΠ²ΡΠ·ΠΊΠΈ для языков Java, Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ 90, Perl, Pike, Python, Ada, Visual Basic ΠΈ Pascal. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ привязки OpenGL для языков C++ ΠΈ C#.

8. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ вСрсий

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° нашла ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π£Ρ‡Ρ‘Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² модСлирования. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠšΠΈΠ½Π΅ΠΌΠ°Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ спСцэффСкты ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΠΌΡ‹ («Π¨Ρ€Π΅ΠΊ», «Π˜ΡΡ‚ория ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ» ΠΈ Π΄Ρ€.). Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹, максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΈΡ€ΠΎΠ².

Π Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ сопутствовали свои трудности. Π’ 1990;Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, способного Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΎΠΌ количСствС графичСского оборудования, Π±Ρ‹Π»Π° сопряТСна с Π±ΠΎΠ»ΡŒΡˆΠΈΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΌΠΈ ΠΈ Ρ„инансовыми Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ. Π‘Ρ‹Π»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° графичСских Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Ρ€Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ сильно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΠ»ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

Silicon Graphics (SGI) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ высокотСхнологичСского графичСского оборудования ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств. Являясь Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ Π² Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅, SGI Π²ΠΈΠ΄Π΅Π»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹ Π² Ρ€ΠΎΡΡ‚Π΅ Ρ€Ρ‹Π½ΠΊΠ°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа ΠΊ Π³Ρ€Π°Ρ„ичСской Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ появился ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс OpenGL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стандартизируСт доступ ΠΊ Π³Ρ€Π°Ρ„ичСской Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΏΡƒΡ‚Ρ‘ΠΌ смСщСния отвСтствСнности Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Сля графичСского устройства. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции ΠΎΡ‚ Π³Ρ€Π°Ρ„ичСского оборудования, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорило созданиС Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎ Π½Π° Π½ΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹.

Π’ 1992 Π³ΠΎΠ΄Ρƒ компания SGI Π²ΠΎΠ·Π³Π»Π°Π²ΠΈΠ»Π° OpenGL ARB — Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ спСцификации OpenGL. OpenGL ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» ΠΈΠ· 3D-интСрфСйса SGI — IRIS GL. Одним ΠΈΠ· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ IRIS GL Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возмоТности, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ; Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. 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 Shading Language). Π­Ρ‚ΠΎ позволяСт программисту Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ фиксированный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ OpenGL нСбольшими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ языкС для создания Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… эффСктов, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ bump mapping, normal mapping, parallax mapping, HDR ΠΈ Ρ‚. Π΄.

Однако Π΅Ρ‰Ρ‘ Π΄ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ OpenGL языка GLSL сущСствовала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ спСцэффСкты Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… ассСмблСра (Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ vertex_program, fragment_program) ΠΈ Cg (NVidia C for Graphics). МногиС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ возмоТности ΠΏΠΎΠΊΠ° ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π²Π΅Ρ€ΡΠΈΠΈ OpenGL 2.0, хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ производитСлями Π² Π²ΠΈΠ΄Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

OpenGL 3.0

11 Π°Π²Π³ΡƒΡΡ‚Π° 2008 Π³ΠΎΠ΄Π° Khronos Group прСдставила Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ спСцификации OpenGL

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹: Radeon сСрии HD; GeForce 8, 9, GTX 100, GTX 200, GTX 300 ΠΈ GTX 400 сСрий.

OpenGL 3.1

24 ΠΌΠ°Ρ€Ρ‚Π° 2009 Π³ΠΎΠ΄Π° Khronos Group анонсировала OpenGL 3.1. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° чистка ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ, Π½ΠΎ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ Π² OpenGL 3.0 для сглаТивания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ API (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ GL_ARB_compatibility).

OpenGL 3.2

3 Π°Π²Π³ΡƒΡΡ‚Π° 2009 Π³ΠΎΠ΄Π° Khronos Group анонсировала OpenGL 3.2. Новая вСрсия ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ стандарта OpenGL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ кроссплатформСнный доступ ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ GPU.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹: Radeon сСрии HD; GeForce 8000, 9000, GTX сСрий 200 ΠΈ 400.

НововвСдСния:

Β· ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL Shading Language вСрсии 1.50 (GLSL).

Β· ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² BGRA (GL_ARB_vertex_array_bgra) — Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ 4-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ RGBA.

Β· ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ отрисовки Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ (GL_ARB_draw_elements_base_vertex) — Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ€ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² (для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²) для хранСния мноТСства мСшСй (мСньшС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² — быстрСС Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³).

Β· ГСомСтричСскиС ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ (GL_ARB_geometry_shader4).

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

Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ:

Β· Π”Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ ступСни ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎ позволяСт пСрСнСсти ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСссСляции с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора Π½Π° GPU.

Β· ΠŸΡ€ΠΎΡ€ΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, сгСнСрированных OpenGL ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ внСшними API, ΠΊΠ°ΠΊ OpenCL, Π±Π΅Π· участия Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора.

Β· 64-битная двойная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ ΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° для увСличСния точности ΠΈ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.

OpenGL 4.1

26 ΠΈΡŽΠ»Ρ 2010 Π³ΠΎΠ΄Π°, Khronos Group анонсировала ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OpenGL 4.1. БпСцификация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ GLSL (GL Shading language) Π΄ΠΎ Π²Π΅Ρ€ΡΠΈΠΈ 4.10.

НововвСдСния:

Β· Полная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с OpenGL ES 2.0 API.

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Β· 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Ρ… ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² (ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ гСомСтричСская Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ).

НовыС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:

Β· Sync-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ OpenGL, связанныС с event-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ OpenCL.

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ значСния Π² Π±ΡƒΡ„Π΅Ρ€Π΅ Ρ‚Ρ€Π°Ρ„Π°Ρ€Π΅Ρ‚Π° (stencil) Π²ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π΅.

Β· НСкоторыС особСнности для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ надёТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ запускС WebGL-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Β· ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи для получСния ошибок ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.

OpenGL 4.2

8 Π°Π²Π³ΡƒΡΡ‚Π° 2011 Π³ΠΎΠ΄Π° Khronos Group ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OpenGL 4.2 ΠΈ ΡΠ·Ρ‹ΠΊΠ° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² GLSL 4.2

НововвСдСния:

Β· ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° измСнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ части сТатой тСкстуры, Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² GPU тСкстуры Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

Β· ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… 8- ΠΈ 16-разрядных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ 32-разрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для эффСктивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² cΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сокращСниСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° памяти ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ΠΌ пропускной способности.

OpenGL 4.3

6 Π°Π²Π³ΡƒΡΡ‚Π° 2012 Π³ΠΎΠ΄Π° Khronos Group ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Π½Π° SIGGRAPH 2012 спСцификации OpenGL 4.3. ΠšΡ€ΠΎΠΌΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй, OpenGL 4.3 приносит ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ GL_ARB_compute_shader. Новая вСрсия ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстима с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ.

9. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Tao Framework

Tao Framework — это свободно-распространяСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, прСдназначСнная для быстрой ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² ΡΡ€Π΅Π΄Π΅ .NET Framewrok ΠΈ Mono. На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь, Tao Framework — это Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenGL ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² ΡΡ€Π΅Π΄Π΅ .NET Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#.

Π’ ΡΠΎΡΡ‚Π°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ входят всС соврСмСнныС срСдства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния: рСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenGL, рСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ FreeGlut, содСрТащСй всС самыС Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° DevIL (лСгшая Π² ΠΎΡΠ½ΠΎΠ²Ρƒ стандарта OpenIL — Open Image Library), ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π‘Π°ΠΌΡ‹Π΅ интСрСсныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Tao Framework:

Β· OpenGL 2.1.0.12 — свободно распространяСмый Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 2D ΠΈ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

Β· FreeGLUT 2.4.0.2 — Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ GLUT (OpenGL Utility Toolkit).

Β· DevIL 1.6.8.3 (ΠΎΠ½Π° ΠΆΠ΅ OpenIL) — кроссплатформСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ 43-Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для чтСния ΠΈ17-Ρ‚ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для записи.

Β· Cg 2.0.0.0 — язык высокого уровня, созданный для программирования тСкстурных ΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Ρ… ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ².OpenAL 1.1.0.1 — ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ распространяСмый Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°ΡƒΠ΄ΠΈΠΎΠ΄Π°Π½Π½Ρ‹Ρ…. (Π’ Ρ‚ΠΎΠΌ числС 3D Π·Π²ΡƒΠΊΠ° ΠΈ EAX эффСктов).

Β· PhysFS 1.0.1.2 — Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π²ΠΎΠ΄ΠΎΠΌ / Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π°Ρ€Ρ…ΠΈΠ²Π°ΠΌΠΈ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ собствСнного API.

Β· SDL 1.2.13.0 — кроссплатформСнная ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°ΡΡΡ для написания ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС

Β· GNU/Linux ODE 0.9.0.0 — свободно распространяСмый физичСский ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, Π³Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся рСализация систСмы Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Π²Ρ‘Ρ€Π΄ΠΎΠ³ΠΎ Ρ‚Π΅Π»Π° ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ° обнаруТСния столкновСний.

Β· FreeType 2.3.5.0 — Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Ρ€Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². Данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² X11(ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ систСмС, которая обСспСчиваСт всС стандартныС инструмСнты ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ для построСния GUI (графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) Π² UNIX ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах).

Β· FFmpeg 0.4.9.0 — Π½Π°Π±ΠΎΡ€ свободно-распространяСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ….

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Tao Framework являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ свободно-распространяСмым инструмСнтом, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»ΡŽΠ±Ρ‹Ρ… ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, прСимущСствСнно кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°.

Работая с Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Ρ‚ΠΎ Π² Π΄Π΅ΡΡΡ‚ΠΊΠΈ, Π° Ρ‚ΠΎ ΠΈ ΡΠΎΡ‚Π½ΠΈ Ρ€Π°Π· ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌΠΈ для изучСния программирования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ становятся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ: язык C# являСтся Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… соврСмСнных ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языков программирования, Π° Ρ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ±Ρ€Π°Π» всС Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языков программирования, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΡ‡Π΅Π» всС ΠΈΡ… Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΈ — Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ самым пСрспСктивным Π² ΠΏΠ»Π°Π½Π΅ изучСния.

Π‘Ρ€Π΅Π΄Π° .NET Framework являСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΠΎΠΉ для программиста — ΠΎΠ½Π° нСвСроятно ΡƒΠ΄ΠΎΠ±Π½Π°.

Установка Tao Framework

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ сам Tao Framework.

ПослС скачивания просто устанавливаСм ΠΏΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. ВрСбуСтся .Net Framework, Π½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Visual Studio, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, вСдь VS содСрТит .Net Framework. Π’ ΠΌΠΎΡ‘ΠΌ случаС Visual Studio 2012 ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ .Net Framework вСрсии 4.5, Π° Π½Π°ΠΌ Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΈ Π²Π΅Ρ€ΡΠΈΠΈ 2.0, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΡΡ‚Π°Ρ€Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Visual Studio ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Tao OpenGL + рСализация тСстового ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

ВыполняСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия:

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ C: Programm FilesTaoFrameworklib

Π’ ΠΏΠ°ΠΏΠΊΡƒ C: WindowsSystem32

Π˜Ρ‚Π°ΠΊ, сСйчас ΠΌΡ‹ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ тСстового прилоТСния, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tao: сначала ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΅Π΅ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ OpenGL ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ сфСру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ FreeGlut.

10. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tao OpenGL Π² Π‘#

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ шаблона установив ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows Forms.

Π”ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° MS Visual Studio Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° шаблона. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΎΠΊΠ½Ρƒ Solution Explorer (ΠžΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ). Π—Π΄Π΅ΡΡŒ, нас интСрСсуСт ΡƒΠ·Π΅Π» Links, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ связи с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ нашСго прилоТСния (рисунок 1)

Рисунок 1

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΡΡ‚ΠΎΠΌΡƒ ΡƒΠ·Π»Ρƒ ΠΏΡ€Π°Π²ΠΎΠΉ клавишСй ΠΌΡ‹ΡˆΠΈ, послС Ρ‡Π΅Π³ΠΎ, Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ контСкстном мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку» («Add Link»), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2

Рисунок 2

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку», ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΎΠ±Π·ΠΎΡ€. ПослС этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ‹Π»Π° установлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Tao Framework. (По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — «C:Program FilesTao Framework»). Нам потрСбуСтся ΠΏΠ°ΠΏΠΊΠ° bin — Π² Π½Π΅ΠΉ хранятся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ bin ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅3 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3:

1. Tao.OpenGL.dll — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenGL

2. Tao.FreeGlut.dll — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Glut. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

3. Tao.Platform.Windows.dll — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ элСмСнтов нСпосрСдствСнно для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСпосрСдствСнно Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows.

Рисунок 3

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΎΠΊΠ½Π°. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°ΡˆΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½:

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Windows.Forms;

// для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ OpenGL

using Tao. OpenGl;

// для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ FreeGLUT

using Tao. FreeGlut;

// для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ управлСния SimpleOpenGLControl

using Tao.Platform.Windows;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΎΠΊΠ½Ρƒ Toolbox (панСль элСмСнтов). Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ΠžΠ±Ρ‰ΠΈΠ΅», ΠΈ Π² Ρ€Π°ΡΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ контСкстном мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ «Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ элСмСнты» (Select elements), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.

Рисунок 4

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ элСмСнт SimpleOpenGLControl ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²ΠΎΠ·Π»Π΅ Π½Π΅Π³ΠΎ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 6. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ОК.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт станСт доступным для размСщСния Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ прилоТСния. ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ элСмСнт Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ, ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 5. Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта установитС 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ — «Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ» ΠΈ «Π’Ρ‹ΠΉΡ‚ΠΈ».

Рисунок 5

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ элСмСнт simpleOpenGlControl1, располоТСнный Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Π΅Π³ΠΎ свойствам. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ name Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «AnT». Π”Π°Π»Π΅Π΅ Π²ΠΎ Π²ΡΠ΅Ρ… Π³Π»Π°Π²Π°Ρ… элСмСнты simpleOpenGlControl ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ AnT.

11. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ OpenGL Π² C# .NET

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ OpenGL.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ элСмСнта AnT:

public Form1()

{

InitializeComponent ();

AnT.InitializeContexts ();

}

Π‘Π½ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π»Π΅Π²ΠΎΠΉ клавишСй ΠΌΡ‹ΡˆΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ — создастся функция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ Π½Π΅ΠΉ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ OpenGL. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΊΠΎΠ΄, ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…, Π° ΡΠ΅ΠΉΡ‡Π°Ρ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ протСстируСм Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ OpenGL ΠΈ FreeGLUT.

private void Form1_Load (object sender, EventArgs e)

// инициализация Glut

Glut.glutInit ();

Glut.glutInitDisplayMode (Glut.GLUT_RGB

На ΠΎΠΊΠ½Π΅ ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

//ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π²Ρ‹ΠΉΡ‚ΠΈ»

private void button2_Click (object sender, EventArgs e)

{

Application.Exit ();

}

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сСточного каркаса сфСры, (Π·Π° ΠΎΡ‚рисовки Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ сфСры Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° FreeGLUT). Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π·Π½Ρ‹Π΅ тСхничСскиС аспСкты Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ»

private void button1_Click (object sender, EventArgs e)

Gl. GL_DEPTH_BUFFER_BIT);

Gl.glLoadIdentity ();

Gl.glColor3f (1.0f, 0, 0);

Gl.glPushMatrix ();

Gl.glTranslated (0,0,-6);

Gl.glRotated (45, 1, 1, 0);

// рисуСм сфСру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ FreeGLUT

Glut.glutWireSphere (2, 32, 32);

Gl.glPopMatrix ();

Gl.glFlush ();

AnT.Invalidate ();

ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 9. Если Π²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π±Ρ€Π°Π»ΠΈ всС исходныС ΠΊΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ всС описанныС дСйствия, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сфСры, послС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ «Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ».

Π’ΠΎΡ‚ ΠΈ Π²ΡΠ΅. ΠœΡ‹ ΠΏΡ€ΠΎΡ‚Сстировали Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tao, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ OpenGL Π² C# .NET.

1. http://ru.wikipedia.org/wiki/OpenGL — основная информация со ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ энциклопСдии.

2. http://gamedev.kz/?q=node/14 — Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² OpenGL.

3. http://www.esate.ru/page/uroki-OpenGL-c-sharp — ΡƒΡ€ΠΎΠΊΠΈ использования OpenGL API Π² ΡΡ€Π΅Π΄Π΅ .NET C#

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ