6-mavzu. 2D va 3D geometrik modellashtirishning metodlari va algoritmlari. 2D va 3D
grafika yaratishning dasturiy interfeysi. OPENGL texnologiyasi
Reja
1. 2D va 3D geometrik modellashtirishning metodlari va algoritmlari
2. 2D va 3D grafika yaratishning dasturiy interfeysi
3. OPENGL texnologiyasi
Tayanch so’z va iboralar
. 2D, 3D, OpenGL, DirectX, geometrik modellashtirishning
metodlari va algoritmlari, grafika yaratishning dasturiy interfeysi
Real obyektlarni yaratish, ikki va uch o’lchovli grafika sohasida ilovalar yaratish uchun
keng tarqalgan amaliy dasturiy interfeyslardan biri hisoblangan OpenGL muhitidir. OpenGLda
axborotlar birligi uchlar hisoblanadi va ular yordamida murakkab obyektlar quriladi. Dasturchi
uchlarni yaratadi va ularni qanday birlashtirish (chiziqlar yoki ko'pburchaklar orqali) kerakligini
ko‘rsatadi, kamera va yoritkich koordinatalari hamda parametrlarini o‘rnatadi, OpenGL esa ekranda
tasvirni yaratish ishi bilan shug‘ullanadi. OpenGL dasturchilar uchun katta bo'lmagan uch o‘lchovli
sahnani qurishda juda ham qo‘l keladi. Uch o‘lchovli grafika algoritmlarini amalga oshiadi. Uch
o‘lchovli dasturlashtirish uchun ham kutubxona foydali, chunki u asosiy mexanizmlarni namoyon
etadi va belgilangan avtomatlashuvni bajaradi. OpenGL apparatga bog‘liq kutubxona hisoblanadi.
OpenGL dan foydalanib uch o‘lcnovli sahnani osongina yaratish, unga teksturalar qo‘yish, yoruglik
manbalari bilan yoritish, shaffoflik, tuman effektini berish, ranglarni aralashtirish, shuningdek,
trafaret joylashtirish, sahna obyektlarini, kameralar va yoritkichlarni belgilangan trayektoriya
bo'yicha harakatlantirish, aynan animatsiya tayyorlash mumkin.
OpenGL — bu maxsus o'rnatilgan tizimlar - mobil telefonlar, PDA, o'yin pristavkalari
uchun mo'ljallangan OpenGL GUI ning quyi qismidir. OpenGL Chronos Group konsortsiumi
tomonidan ishlab chiqiladi, unga grafika va multimediya uchun ochiq API bog’liq bo'lgan dasturiy
va apparat ishlab chiqaruvchilari kiradi.
DirectX va OpenGL bir- biriga raqobatchi sanaladi. Ular ko'pincha kompyuter o'yinlari
dasturlari tomonidan foydalaniladi. OpenGL kutubxonasi ishlashi sodda. Ushbu kutubxonada
ma'lum uchburchaklarga ishlov berilishini boshqaruvchi yadro mavjud. Protsessual model
ma'lumotlar uzatishning asosi bo'lib, funktsiyalar ishda chaqiriladi. OpenGL o'zgaruvchilar
qiymatlari bilan bog'liq bo'lgan holatga ega, bu har bir vaqtda har bir vaqtda ishlash parametrlari
qanday ishlashi kerakligini ko'rsatadi. OpenGL yadrosi protsessual bo'lishiga qaramay, ob'ektga
yo'naltirilgan texnologiyalar bilan bog'liq.
DirectX — OpenGLdan farq qiladi va COM modelidagi asosga ega. DirectX oddiy
uchburchakni chizish uchun juda ko'p miqdordagi kod ishlatiladi. Ushbu kod bilan ishlashni
soddalashtirish uchun Microsoft DirectX Common Files-ni ishlab chiqdi. Bu kod nusxalarini
qisman yashirishga imkon beradigan alohida kutubxona. OpenGL va DirectX ularning arxitekturasi
va ish printsiplari jihatidan juda farq qiladi. OpenGL va DirectX kutubxonalarning tezligi bir xil.
Buning sababi DirectX va OpenGL-dagi ko'p funktsiyalar apparat tezlatgichlaridan foydalangan
holda ishlaydi. Shuningdek, ishlash tezligii apparat drayverlarining sifatiga bog'liq bo'lishi mumkin.
OpenGL va DirectX o'rtasida yana qanday farqlar borligini ko'rib chiqamiz. Interfeysning
qulayligi, funktsiyalarining moslashuvchanligi, foydalanish doirasi bilan belgilanadi. OpenGL
DirectX dan farqli o'laroq, pikselli soyalarni qo'llab-quvvatlamaydi. Qayta ishlash tezligi va tasvir
sifati ishlatilgan kutubxonaga bog'liq emas. Dastlab, OpenGL kutubxona sifatida rejalashtirilgan
bo'lib, u juda uzoq vaqt davomida dolzarb bo'lib qoladi. Maxsus kengaytmalar yordamida OpenGL
asosiy mexanizmlardan chiqib, videokarta uchun yangi funktsiyalarni amalga oshirishi mumkin.
Buning uchun dasturchilar maxsus ruxsatnoma zarur bo’ladi.
DirectXni ob'ektga yo'naltirilgan dasturlash va COM modeliga rioya qiladigan dasturchilar
yaxshi ko'rishadi. COM yordamida ushbu kod kutubxonasida asosiy kodni tahrirlamasdan
o'zgartirishlar kiritiladi. OpenGLda bunday yondashuv yo'q, ammo bu unchalik kuchli kamchilik
emas. DirectX kodida kichik dastur yozish uchun 200-800 satr ishlatiladi, OpenGLda 50 satr kifoya
qiladi. OpenGL ilmiy sohalarda turli xil tadqiqotlar natijalarini vizual ravishda namoyish qilish
uchun juda mos keladi. OpenGL ning katta ustunligi bu standartning ochiqligi. Har qanday tashkilot
SGI litsenziyani sotib olish va OpenGLning o'z versiyasini ishlab chiqishni boshlash huquqiga ega.
DirectX yopilgan va uni faqat Microsoft ishlab chiqishi mumkin. Shuning uchun DirectX yo'li tor
doiradagi mutaxassislar tomonidan belgilanadi.
Xulosa qilib aytganda, DirectX professional o'yinlar va ularning rivojlanishi uchun,
shuningdek Windows uchun mos keladi. So'nggi paytlarda OpenGL o'yinlarda ishlatilmayapti.
Ushbu kutubxona turli xil dasturlarni turli platformalarga o'tkazish zarurati tug'ilganda, ilmiy
tadqiqotlar uchun, o'quv tadbirlari va boshqa sohalarda ishlatiladigan kuchli kompyuterlarda
qo’llaniladi. Ikkala API ham 3D grafik apparati tezlashuv xususiyatlariga kirishni ta'minlaydi.
Xullas, Microsoft DirectXga o'zgartirishlar kiritishi mumkin. OpenGL - bu professional grafik
dasturlar uchun, DirectX esa o'yinlar uchun mo’ljallangan.
OpenGL dastlab 3D Grafik kutubxonasi sifatida ishlab chiqilgan. Microsoft Windows
drayverlari bilan OpenGL yordamisiz ishlash mumkin. Windows uchun OpenGL ishlatish uchun
drayverni ishlab chiqaruvchining veb-saytidan o'rnatish zarur. 3D dasturlarini ishlab chiqishda
boshlovchilar avval Direct3D bilan shug'ullanishi (sababi juda oddiy - Microsoft juda yuqori sifatli
SDK beradi) va keyin OpenGL bilan shug'ullanish lozim. OpenGL uchun SDK mavjud emas.
Chronos Group platformalar va qurilmalarida multimedia ilovalari uchun ochiq standartlarni
ishlab chiqish va qo'llab-quvvatlash uchun mo’ljallangan. Konsorsium AMD va NVIDIA
tomonidan qo'llab-quvvatlanadi. OpenGL interfeysi DirectXga nisbatan ko'proq siqish imkonini
beradi. Windows 7, Windows 8.1, Windows 10, Android va Linux-da qo'llab-quvvatlanadi.
OpenGL - ikki va uch o’lchovli grafika sohasida ilovalar yaratish uchun ancha keng
tarqalgan amaliy dasturiy interfeys (API - Application Programming Interface) lardan biri
hisoblanadi. OpenGL (Open Graphics Library - ochiq grafik kutubxona) standart turli xil
platformalar uchun kerakli, apparatga bog‘liq bo‘lmagan interfeys sifatida dasturiy ta’minot ishlab
chiqarish sohasidagi yetuk firma tomonidan 1992 yilda ishlab chiqilgan va tasdiqlangan. Standart
Silicon Graphics Inc firmasi tomonidan ishlab chiqilgan. Kutubxona 120 ga yaqin turli
buyruqlardan iborat bo‘lib, dasturchi operatsiyalar va obyektlami tayinlashda hamda interaktiv
grafik ilovalarni yozishda foydalanadi. Bugungi kunda OpenGL grafik tizimini ko‘pgina apparatli
va dasturiy platformalarni quvvatlaydi. Ushbu tizim Windows va Linux operatsion tizimlarida
ishlovchilar uchun ochiq.
OpenGL kutubxonasining o ‘ziga xos xususiyatlari, ya’ni ushbu grafik standartning
rivojlanishi va keng tarqalishini ta’minlovchi jihatlar, quyidagilar hisoblanadi:
Barqarorlik. Standartga o‘zgartirish va qo‘shimchalar kiritish, oldingi dasturiy
ta’minotlarda ishlab chiqilganlarning mosligini saqlab qolish ko‘rinishida amalga
oshiriladi.
Ishonchlilik va uzatuvchanlik. OpenGL dan foydalanayotgan ilova, axborotlar
tasvirlanishini tashkil qilish va foydalanilayotgan operatsion tizim turiga bog‘liq
bo’lmagan holda bir hil vizual natijani kafolatlaydi. Bundan tashqari, ushbu ilovalar
ShK larda qanday bajarilsa, xuddi shunday ishchi stansiya va superkompyuterlarda
ham bajariladi.
Qo ‘llashning osonligi. OpenGL standarti mukammal o’ylangan tuzilmaga ega va
tushunarli interfeysga ega bo'lib, boshqa grafik kutubxonalardan foydalanishga
nisbatan dastur kodi kamroq bo’lgan samarali ilovalarni yaratish imkonini beradi.
Turli qurilmalar biian moslikni ta’minlash uchun zaruriy funksiyalar kutubxona
darajasida tashkillashtirilgan bo’lib, ilovalar ishlab chiqishni ancha osonlashtiradi.
OpenGL imkoniyatlarini uning kutubxonasidagi funksiyalar orqali ta’riflaymiz. Barcha
funksiyalarni beshta toifaga ajratish mumkin:
Primitivlarni tavsiflash funksiyasi grafik nimtizimni aks ettirishga qodir bo‘lgan,
ierarxiyaning quyi darajasidagi obyektlarni belgilaydi. OpenGLda primitivlar sifatida
nuqta, chiziq, ko‘pburchak va boshqalar nazarda tutiladi.
Ranglar manbasini tavsiflash funksiyasi uch o‘lchovii sahnada joylashgan, ranglar
manbasi parametri va holatini tavsiflash uchun xizmat qiladi.
Atributlarni tayinlash funksiyasi. Atributlarni tayinlash yordamida dasturchi aks
etadigan obyekt ekranda qanday ko‘rinishga kelishini belgilaydi. Boshqacha so‘z
bilan aytganda, agar tasvir ekranda hosil bo‘lishi primitivlar yordamida belgilansa,
unda atributlar ekranga chiqarish usulini belgilaydi. Atributiar sifatida OpenGL rang,
material xususiyati, tekstura, yorug‘lik parametrlarini berish imkonini beradi.
Vizuallashtirish funksiyasi virtual fazoda kuzatuvchi (kamera obyektivi parametri)
holatini belgilash imkonini beradi. Ushbu parametrlarni bilish, tizim nafaqat tasvirni
to‘g‘ri qurishi, balki kuzatuv maydonidan tashqari bo‘lgan obyektlarni ajratib
qo‘yishi ham mumkin.
Geometrik о ‘zgartirish funksiyalari to‘plami dasturchiga obyektlarni turli xil
o‘zgartirish - burish, ko‘chirish, masshtablashtirishni bajarish imkonini beradi.
Shunday ekan, OpenGL qo‘shimcha operatsiyalami ham bajara olishi mumkin,
masalan, chiziqlar va sirtiarni qurishda splaynlardan foydalanish, tasviming
ko‘rinmas qismlarini olib tashlash, piksellar darajasidagi tasvirlar bilan ishlash va
h.k.
OpenGL funksiyalari mijoz-server texnologiyasi asosida yaratilgan. Ilovalar mijoz vazifasini
bajaradi - ular buyruqlarni ishlab chiqadilar, server OpenGL esa ularni qayta ishlaydi va bajaradi.
Server o‘zi mijoz joylashgan kompyutyerda joylashgan bo‘lishi ham mumkin (masalan, dinamik
yuklanuvchi kutubxona ko‘rinishida - DLL), yoki boshqa kompyuterda (ushbu holda mashinalar
o‘rtasida ma’lumot almashinish uchun maxsus protokol qo‘llaniladi). Har bir primitiv - nuqta,
kesma, ko'pburchak va boshqalar bo‘lishi mumkin. Har bir rejim boshqasiga bog'liq bo'lmagan
holda o'zgartirilishi mumkin. Primitivlarni aniqlash, rejimlami tanlash va boshqa amallar kutubxona
funksiyalarini chaqirish ko‘rinishidagi buyruqlar orqali tavsiflanadi. Primitivlar bir yoki bir nechta
uchlar (vertex) to‘plami yordamida aniqlanadi.Uch nuqta orqali ifodalanadi, kesma oxiri yoki
ko'pburchak uchi. Har bir uch atributlar deb ataluvchi ma’lum bir ma’lumotlarga ega (koordinatalar,
rang, normal, tekstura koordinatalari va h.k.). Ko‘p hollarda uchlar bir biriga bog'liqsiz holda qayta
ishlanadi. OpenGL grafik tizimi tuzilishi jihatidan grafik obyektlarni ketma-ket qayta ishlashning
bir necha bosqichlaridan iborat konveyer hisoblanadi. OpenGL buyruqlari har doim ularning kelishi
tartibida amalga oshiriladi, biroq, ularning hosil qilinish effektidan oldin to‘xtalishlar bo‘lib qolishi
mumkin. Ko‘p hollarda OpenGL aniq interfeysni taqdim etadi, ya’ni obyektning aniqlanishi uning
kadr buferida vizualizatsiya bo'lishiga olib keladi. Dasturchilar nuqtai nazarida, OpenGL - grafik
qurilmalardan foydalanishni boshqarib turadigan buyruqlar to‘plamidir. Agarda qurilma faqatgina
adreslangan kadr buferidan tarkib topgan bo‘lsa, u holda OpenGL markaziy prosessor resurslaridan
foydalanish yordamida to‘liq amalga oshirilishi kerak. Odatda grafik qurilma turli darajadagi
tezlikni ta'minlaydi: chiziq va ko‘pburchaklami chiqarishdan geometrik ma’lumotlar ustida turli
amallarni qo‘llab murakkab grafik usullami uskunaviy amalga oshiradi.
Nazorat savollari
1. 2D, 3D haqida gapiring.
2. OpenGL haqida gapiring.
3. DirectX haqida gapiring.
4. geometrik modellashtirishning metodlari va algoritmlari haqida gapiring.
5. grafika yaratishning dasturiy interfeysi haqida gapiring.
|