OpenGL

-ის ბირთვის და OpenGL-ზე დაფუძნებული ვიდეო თამაშების ურთიერთკავშირის ილუსტრაცია. ვიდეო თამაში უთანხმებს რეალურ დროში გამოსახვის გამოთვლებს გრაფიკულ პროცესორს OpenGL-ის მეშვეობით. იმის მაგივრად, რომ გამოსახვის შედეგები გაიგზავნოს უკან, მთავარ მეხსიერებაში, ხდება კადრის ბუფერის გაგზავნა ვიდეო მეხსიერებაში. შემდეგ კი დისპლეი კონტროლერი აგზავნის ამ მონაცემებს დისპლეიზე.]]

**OpenGL** (**Open** **G**raphics **L**ibrary) — მულტიენობრივი, მულტიპლატფორმული აპლიკაციის პროგრამირების ინტერფეისი (API), რომელიც გამოიყენება ორგანზომილებიანი და სამგანზომილებიანი ვექტორული გრაფიკის გამოსახვისთვის. როგორც წესი, იგი გამოიყენება გრაფიკულ პროცესორთან ურთიერთქმედებისთვის, გამოსახვის აპარატურულად აჩქარების მისაღწევად.

ინტერფეისი აერთიანებს დაახლოებით 250 განსხვავებულ ფუნქცას, რომლებიც გამოიყენება რთული სამგანზომილებიანი სცენების გამოსახვისთვის. ის პოპულარულია მისი სიმარტივის, მოხერხებულობის, მოქნილობის და იმის გამო, რომ ყველა პლატფორმაზე მუშაობს. ეს ბიბლიოთეკა პოპულარულია ვიდეო თამაშებში; შესაბამისად, ის კონკურენციაშია Microsoft-ის Direct3D-სთან, რომელიც Microsoft Windows-ში ჩაშენებული DirectX-ის კომპონენტია. ის, ასევე, ბევრ სამეცნიერო აპლიკაციაშია გამოკენებული.  მისი ერთ-ერთი ვარიანტი, OpenGL ES, სპეციალურად გათვლილია აპლიკაციებისთვის, რომლებიც გამოიყენება მობილურ ტელეფონებში, ჯიბის კომპიუტერებში და სხვა ჩაშენებულ სისტემებში (embedded system).
  
## ისტორია 
მისი მახასიათებლები და განვითარება წარმოდგენილია Silicon Graphics-ის (შემოკლებით SGI) გუნდის მიერ. ამ გუნდში იყენებენ ცნობილ ბუი ტუონგ ფონგის ჩრდილების ალგორითმს. პროექტ Fahrenheit-ის ფარგლებში, რომელიც Microsoft-ის და SGI-ს ინიციატივით ხორციელდებოდა 1997 წელს, შეეცადნენ, გაეერთიანებინათ OpenGL და Direct3D. 1998 წელს პროექტს Hewlett-Packard-იც შეუერთდა. თავიდან პროექტს თითქოს ჰქონდა პერსპექტივა, მოეწესრიგებინა მსოფლიოს ინტერაქტიული 3D კომპიუტერული გრაფიკის API-ები, თუმცა SGI-ში ფინანსური სახსრების უქონლობის, Microsoft-ში სტრატეგიული მიზეზების გამო და ინდუსტრიის მხარდაჭერის ნაკლებობის გამო, 1999 წელს პროექტი შეჩერდა.

OpenGL-ის სპეციფიკაციას თვალყურს ადევნებს ARB (Architecture Review Board), რომელიც ჩამოყალიბდა 1992 წელს. ARB-ში შედიან ისეთი ორგანიწაციები, რომლებიც დაინტერესებულნი არიან API-ების შექმნითა და განვითარებით. 2002 წლის ივნისის ინფორმაციით, OpenGL-ის ოფიციალური საიტის მიხედვით, 3Dlabs, Apple, ATI, Dell, Evans & Sutherland, Hewlett-Packard, IBM, Intel, Matrox, nVidia, SGI და Sun Microsystems არიან ხმის მიმცემი წევრები. Microsoft, ერთ-ერთი დამაარსებელი წევრი, 2003 წლის მარტს გავიდა წევრებიდან.

2006 წლის ივლისში ARB-მა ხმა მისცა, რომ OpenGL API სპეციფიკაციის კონტროლი გადაცემულიყო Khronos Group-ზე, რომელიც უკვე დაკავებული იყო OpenGL-ის სხვადასხვა სპეციფიკაციების შედგენით, რომლებიც განკუთვნილი იყო მობილურის აპლიკაციებისთვის და ვიდეოთამაშებისთვის. ეს გადაწყვეტილება SIGGRAPH-ის 31-ე კონფერენციის დროს, გამოცხადდა. გადაწკვეტილება საბოლოოდ აღსრულდა 2006 წლის ბოლოს.

## გაფართოებები 
OpenGL-ის სტანდარტი, ახალი ტექნოლოგიების გამოჩენასთან ერთად, ინდივიდუალურ მწარმოებლებს საშუალებას აძლევს, დაამატონ ფუნქციები ბიბლიოთეკაში გაფართოების მექანიზმის გავლით. გაფართოება გაყოფილია 2 ნაწილად: სასათაურო ფაილი, რომელშიც მდებარეობს ახალი ფუნქციების და მუდმივების 
პროტოტიპები და ასევე მოწყობილობის დრაივერები. ორივე მათგანს აქვს აბრევიატურები, რომლებიც გამოიყენება, როგორც სახელები ახალი ფუნქციებისთვის და მუდმივებისათვის. მაგალითად, NVIDIA-ს აბრევიატურა *NV* გამოიყენება `glCombinerParameterfvNV()` ფუნქციის და მისი მუდმივის, `GL_NORMAL_MAP_NV`-ის განსასაზღვრად. შესაძლებელია, განსაზღვრულ გაფართოებას რამდენიმე მწარმოებელმა გაუკეთოს რეალიზაცია; ამ შემთხვევაში გამოიყენება აბრევიატურა *EXT*. ასევე შესაძლებელია, რომ ARB-მ ოფიციალურად გამოაცხადოს რომელიმე გაფართოება; ამ შემთხვევაში ეს უკანასკნელი შეიცვლება სტანდარტით და აბრევიატურა *ARB* გამოიყენება. ARB-ის პირველი გაფართოება იყო *GL_ARB*.

## ბიბლიოთეკები 
რამდენიმე ბიბლიოთეკა განვითარდა OpenGL-იდან იმისთვის, რომ უფრო მეტი ფუნქცია ჰქონოდა, რაც თავად OpenGL-ს არ ჰქონდა. ეს ბიბლიოთეკებია:
* GLU
* GLUT
* GLUI
* GLEW
* GLEE
* GLFW

## იმპლემენტაციები 
არსებობს რამდენიმე იმპლემენტაცია Windows-ისთვის Unix-ისთვის და macOS-ისთვის. ეს იმპლემენტაცია, ძირითადად, შედგენილია გრაფიკის მწარმოებლების მიერ. აგრეთვე, არსებობს ამ ბიბლიოთეკის ღია და თავისუფალი იმპლემენტაცია, სახელად Mesa, რომელიც შეიქმნა 1993 წელს ბრაიან პოლის მიერ და იყენებს იგივე API-ს, რაც საშუალებას იძლევა:
* ხშირ შემთხვევაში თავიდან ავიცილოთ OpenGL-ის ლიცენზირებასთან დაკავშირებული პრობლემები
* გამოვიყენოთ OpenGL-ის აპლიკაციები X ტერმინალზე, რომელიც ძირითადად უხარისხოა (ჩვენება საშინელია, მაგრამ ზოგჯერ სჯობს, გამოვიყენოთ თუ ანიმაციების გამოყენება ამ მომენტში არ გვესაჭირეობა).
Mesa საშუალებას იძლევა, გამოვიყენოთ OpenGL ჩვეულებრივ X Window System-ზე. ის, ზოგჯერ, არ გვაძლევს 3D გამოსახვის საშუალებას; თუმცა, ამის მიუხედავად, შეგვიძლია გამოვიყენოთ ის მარტივი ფორმებისა და მრავალკუთხედების გამოსახვისთვის.

## OpenGL-ის ინტერესი SGI-ის მიმართ: 
SGI ყოველთვის ასაჯაროებს GL-ის ვერსიას N-1, GL-ის განსაზღვრულ ბიბლიოთეკას. მარკეტინგის ეს მეთოდი:
* ამცირებს კონკურენციას (OpenGL თავისუფალი და ღიაა; ასე რომ ახლის შექმნის მიზეზი, პრაქტიკულად, არ არსებობს).
* ამცირებს OpenGL-ის მოდიფიკაციიების რაოდენობას (ის ისედაც მოდიფიცირდება შემდეგ ვერსიაში).
* SGI სტანციებს აძლევს მეტ უპირატესობას, რადგან GL-ს გააჩნია უპირატესობები OpenGL-თან შედარებით.

## გამოყენება 
ზოგიერთი პროგრამა იყენებს OpenGL-ს მისი ინტერფეისის გამოსახვისთვის. ასეთებია: Google Earth, Blender, X11 და ა.შ..

## ბიბლიოგრაფია 
* OpenGL 2.0: ოფიციალური გიდი, ჯეკ ნეიდენი, მეისონ ვუ, ტომ დეივისი, დეივ შრეინერი, ვერონიკ კამპილო, 2006, კამპუსპრეს, ISBN 978-2-7440-2086-5.
* OpenGL პროგრამების ოფიციალური გიდი „როგორ ვისწავლოთ OpenGL“, ვერსია 2, დეივ შრეინერი, მეისონ ვუ, ჯეკ ნეიდენი, 2005, ედისონ-უელსი, ISBN 978-0-321-33573-9.
* OpenGL აღწერა, რიჩარდ ს, ბენჟამენ ლიპჩაკ, 2004, სამს, ISBN 978-0-672-32601-1.
* OpenGL თამაშების პროგრამირების დასაწყისი, დეივ ესტილ, კევინ ჰაუკინ, 2004, ტექნოლოგიის კურსი, ISBN 1-59200-369-9.

## დაკავშირებული სტატიები 
* Direct3D
* OpenGL ES
* OpenAL
* API

## რესურსები ინტერნეტში 
*  OpenGL.org ,  OpenGL-ის ოფიციალური ვებ გვერდი.
*  GLUT 
*  Mesa 3D, თავისუფალი დანერგვა
*  freeglut, Gluit-ის თავისუფალი დანერგვა
*  NeHe's OpenGL tutorials, დამწყებთათვის A-დან Z-მდე.
*  OpenGL Nehe, ფრანგული თარგმანი 
*  FAQ OpenGL, ფორუმი
*  LinuxGraphic.org  ახსნა-განმარტება ფრანგულად.
*  GL in French , კურსები ფრანგულად.

## სქოლიო 
კატეგორია:კომპიუტერული გრაფიკა