Jump to content

Recommended Posts

დღეს $#^#(|დები გაგარკვიოთ OpenGL-ის არსში...

1. ზოგადი ცნობები

OpenGL, ანუ Open Graphics Library არის მრავალ ენასთან და პლატფორმასთან თავსებადი API (Application Proggraming Interface - პროგრამების პროგრამირების ინტერფეისი), რომელიც 2D და 3D კომპიუტერული გრაფიკის შესაქმნელად გამოიყენება. ეს ინტერფეისი შეიცავს 250-მდე ფუნქციას, რომელთაც გამოყენებით მარტივი მდგენელებისგან (წერტილი, ხაზი, სიბრტყე და ა.შ., გეომეტრიაში ჩახედულ ხალხს ეცოდინება :P) იქმნება რთული სამგანზომილებიანი გამოსახულება. OpenGL 1992 წელს შექმნა Silicon Graphics Incorporated (SGI)-მა და იგი ფართოდ გამოიყენება როგორც CAD პროგრამებში, ასევე ვირტუალური რეალობის შესაქმნელად და რაღათქმაუნდა თამაშებშიც, სადაც Direct3D-ს დაუძინებელ მტრადაა ქცეული :vikingi: .

2. ისტორია

ყველაფერი 80-იან წლების ბოლოს დაიწყო, როდესაც ცხადი გახდა, რომ კომპიუტერი უფრო და უფრო შემოდიოდა ყოველდღიურ ცხოვრებაში. ამ დროისთვის ზემოხსენებული Silicon Graphics Incorporated (SGI) 3D-გრაფიკული კომპიუტერების (ე.წ. 3D-Workstation, ზუსტ ქართულ თარგმანზე თქვენ იფიქრეთ :P) წარმოების ლიდერი იყო. მაგრამ, როგორც დიდი ოსტაპ ბენდერი იტყოდა, SGI-ს გამოუჩნდა რამდენიმე "Конкурирующая фирма" - HP, IBM და Sun Microsystems, ასე რომ ჩვენი SGI დადგა მონოპოლიის დაკარგვის საკმაოდ რეალური და უსიამოვნო საფრთხის წინაშე. ამიტომ კომპანიის ინჟინრებმა გადაწყვიტეს მათი პროგრამირების პაკეტი (API) "IrisGL" გადაექციათ ყველასთვის ხელმისაწვდომ პაკეტად. სწორედ ასე შეიქმნა OpenGL. კომპანიისთვის სამწუხაროდ მალე Microsoft-მა გამოუშვა თქვენთვის უკვე კარგად ნაცნობი DirectX-ის განუყოფელი ნაწილი - Direct3D და OpenGL ისევ საფრთხის წინაშე დადგა. ამიტომ 1997 წელს გონიერმა მენეჯერმა Microsoft-თან გააფრომა კონტრაქტი სახელწოდებით "Fahrenheit", რომლის წყალობით ბაზარზე OpenGL და Direct3D მშვიდობით თანაარსებობდნენ 1 წლის მანძილზე. შემდეგ კი პროექტი ჩავარდა და ახლა ეს ორი API ერთმანეთის დაუძინებელი მტერია :mameda:

3. აგებულება

OpenGL ორ მთავარ ფუნქციას ემსახურება:

1. სხვადასხვა 3D აქსელერატორებს შორის განსხვავების გამო შექმნილი სირთულეების გაბათილება;

2. კომპიუტერულ პლატფორმებს შორის განსხვავების აღმოფხვრა.

OpenGL, როგორც უკვე აღვნიშნე, წერტილებისგან, ხაზებისგან და მრავალკუთხევებისგან შემდგარ სივრცულ გამოსახულებას გადაამუშავებს და ქმნის პიქსელებისგან შემდგარ გამოსახულებას. ეს გრაფიკული ბირთვის, "OpenGL state machine"-ის მეშვეობით ხდება.

იმისთვის, რომ თავისი საქმე შეასრულოს, პროგრამისტმა OpenGL-ს დაწვრილებით უნდა მიუთითოს მთელი შესასრულებელი ოპერაციები. ეს განასხვავებს OGL-ს სხვა API-სგან, რომლებშიც ბიბლიოთეკის მენეჯერი (library manager) თავად ახდენს სარენდერო გამოსახულების გადამუშავებას და პროგრამისტს მხოლოდ რამდენიმე მითითების მიცემა ესაჭიროება. ამიტომ OGL-ის პროგრამისტი გამოცდილი ძია უნდა იყოს :babu: . ქვემოთა სურათზე კი თქვენ ხედავთ OGL-ის "Pipeline"-ს მუშაობის გამარტივებულ სქემას:

27ce27d230c9.jpg

შენიშვნა: "სია"-ზე ეწერა "Display List". ვიმტვრიე თავი და ვერ მივხვდი რა იყო :user:

4. მოქმედების მაგალითი

ამ მაგალითში გიჩვენებთ, თუ როგორ შეიძლება OpenGL-ის მეშვეობით მწვანე კვადრატის შექმნა.

a932e5b81600.jpg

ბრძანება "glClear" ასუფთავებს ბუფერს, ასე რომ ოთხკუთხედი სუფთა ეკრანზე დაიხატება.

2313483f6600.jpg

მოცემული ბრძანებების საშუალებით გამოსახულება პერსპექტიული იქნება, ანუ უფრო რეალისტური. ამასთან ერთად შეიქმნება მატრიცა, რომელიც ხედვის არეს გვიჩვენებს.

4dd01dcac37b.jpg

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

98cc26003b44.jpg

ამ ბრძანების მეშვეობით კი მწვანე კვადრატი დაიხაზება XY სივრცეში.

რათქმაუნდა ამ ყველაფრის დასაწერად და გასააზრებლად საჭირო ცოდნა მე არ გამაჩნია, ამიტომ დიდი მადლობა ვიკიპედიას :crazy:

5. დოკუმენტაცია

წინა ნაწილში წაკითხულის შემდეგ ალბათ გაგიჩნდებოდათ კითხვა, ასეთი რთული პროგრამა როგორ არის ასეთი პოპულარული... ეს ნაწილობრივ კარგი სახელმძღვანელოების დამსახურებაა. სახელმძღვანელოებია:

The Red Book – OpenGL Programming Guide, 6th edition. ISBN 0-321-48100-3. ეს OGL-ის "ანბანია".

The Blue Book – OpenGL Reference manual, 4th edition. ISBN 0-321-17383-X. სახელმძღვანელო ცოტა უფრო "განვითარებული" პროგრამისტებისთვის.

The Green Book – OpenGL Programming for the X Window System. ISBN 0-201-48359-9. სახელმძღვანელო, სადაც ყოვლისშემძლე ზეარსებები გვასწავლიან, თუ როგორ გამოვიყენოთ "X11" ინტერფეისი და "GLUT"-ი (დამატებითი ბიბლიოთეკა).

The Alpha Book – OpenGL Programming for Windows 95 and Windows NT. ISBN 0-201-40709-4. მგონი ყველაფერს თავადვე მიხვდით. ერთადერთი, რასაც დავძენ ისაა, რომ ამ სახელმძღვანელოს თეთრი ყდა აქვს...

The Orange Book – OpenGL Shading Language, 2nd edition. ISBN 0-321-33489-2. სახელმძღვანელო OpenGL 2.0-ისთვის.

-----------------------------------------------------------------------------------------------------------------------

ეს არის თქვენი OpenGL, რომელიც საკმაოდ რთული მოსახმარია და თქვენთვის საერთოდ არაა გამიზნული, მაგრამ მაინც რატომღაც გადავწყვიტე დამეწერა მასზე (ჩემდა ჭირად) და ახლა თავი მისკდება... თუ თქვენც გისკდებათ თავი რამე წამალი დალიეთ... თუ წამალი არ გაქვთ, მაშინ წადით აფთიაქში და იყიდეთ, ან მოდით ჩემთან და მე დაგალევინებთ...

  • Upvote 6
Link to comment
Share on other sites

  • 3 years later...

ბოლობოლო მივაღწიე მიკიპესიამდეც გადავწყვიტე კვირაში ერთი თემა მაინც დავამუშაო საშუალოდ საგოლ მომეწონა კარგია ძლივს გავიგერ რა ყოფილა ეს OpenGL  :thumbsup:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.