C++ tilining grafik muhitida fazoviy ob'ektlarni yaratish uzoq vaqtdan beri kompyuter grafikasi va simulyatsiyaning hal qiluvchi jihati bo'lib kelgan


Download 0.49 Mb.
bet5/8
Sana16.06.2023
Hajmi0.49 Mb.
#1497359
1   2   3   4   5   6   7   8
Bog'liq
grafika

II.Bob. OpenGL kutubxonasi
2.1. OpenGL haqida tushuncha
OpenGL, kompyuter grafikasi va 3D jismlarni tuzatish uchun yaratilgan dasturiy interfeysni taminlash uchun foydalaniladigan kutubxona (library)dir. U buvining nomi "Open Graphics Library"dan olingan, ma'nosi esa "ochiq grafika kutubxonasi"dir.
OpenGL, 3D jismlarni hosil qilish, tuzatish va tasvirlash uchun ko'plab funksiyalarni taqdim etadi. Bu kutubxona, barcha xil platformalar (Windows, Mac OS, Linux va boshqalar) uchun mos bo'lgan, shuningdek, kompyuter grafikasi va 3D jismlarni soddalik bilan yaratish uchun yuqori darajali xususiyatlar taqdim etadi. Bu xususiyatlar orasida real va virtual texnologiyalar, simulyatorlar, interaktiv dasturlar va ko'p boshqa tashqi dasturlar yaratish imkoniyatlarini oshiradi.
OpenGL kutubxonasi, ko'plab grafik kutubxonalariga nisbatan yaxshi xususiyatlarga ega, masalan DirectX bilan solishtirsa, OpenGL yuqori darajada iste'mol qilinishiga qaramay, kompyuterlar va tizimlar orasida keng tarqalgan. OpenGL kutubxonasi, kerakli dasturiy vositalarni qulay va to'g'ridan-to'g'ri qo'llash uchun yuqori darajada integrlangan va o'rganishini osonlashtirish uchun ko'plab dasturlar va o'qituvchi materiallar mavjud.
OpenGL, 3D jismlarni yaratish va tuzatishda foydalanilgan kutubxonalar to'plamidir. Bu kutubxonalarga moslashtirilgan barcha kompyuter grafika interfeyslari (API) bo'lib, ularning asosiy maqsadi, ko'rsatkichlar va jismlarni grafikalash, ularning rangini va yorqinligini sozlashdir.
Bu yechimni eng ko'p qo'llagan tashqi dasturlashda, odatda o'yinlar va animatsiyalar yaratishda va hattoki interaktiv texnologiyalarda, masalan, virtual realitiyada foydalaniladi. Shuningdek, OpenGL yaxshi performans ko'rsatadigan, platformadan bag'ri bo'lmagan va keng doimiy ravishda yangilanadigan kutubxonalar to'plamidir.
2.2.OpenGL kutubxonasi vaqtincha asosiy funksiyalari
OpenGL kutubxonasining asosiy funksiyalari, 3D jismlar yaratish va tuzatish uchun kerakli ko'rsatkichlarni sozlashni o'z ichiga oladi.
Quyidagi funksiyalar OpenGL kutubxonasi vaqtincha asosiy funksiyalari hisoblanadi:

  • glBegin(): Yaratish jarayonini boshlash uchun funksiya.

  • glVertex3f(): Jismning uch xossalari (koordinatalari) uchun funksiya.

  • glColor3f(): Jismning rangini belgilash uchun funksiya.

  • glEnd(): Yaratish jarayonini tugatish uchun funksiya.

Bu funksiyalar quyidagi asosiy 3D jismlar yaratish funksiyalari bilan birlashtiriladi:


  • glLoadIdentity(): Matrixni o'chirish va boshlang'ich holatga qaytarish uchun funksiya.

  • glTranslatef(): Yer o'zgarishini belgilash uchun funksiya.

  • glRotatef(): Aylana o'zgarishini belgilash uchun funksiya.

  • glScalef(): Masshtab o'zgarishini belgilash uchun funksiya.

  • glPushMatrix(): Joriy matrixni saqlash uchun funksiya.

  • glPopMatrix(): Joriy matrixni ko'paytirish uchun funksiya.

OpenGL kutubxonasi shuningdek qiziqarli funksiyalar ham o'z ichiga oladi, masalan:

  • glClear(): Grafik ekranini tozalash uchun funksiya.

  • glViewport(): ekrandagi koordinatalarni belgilash uchun funksiya.

  • glEnable() va glDisable(): xususiyatlarni yoqish yoki o'chirish uchun funksiyalar.

Bu funksiyalar tizimlar o'rtasida o'zaro aloqani o'rganishni osonlashtiradi va 3D jismlarni yaratish va tuzatish uchun zarur bo'lgan bir qancha asosiy imkoniyatlarni beradi.
glBegin() funksiyasi OpenGL dasturlashining asosiy funksiyalaridan biridir va 3D jismlarni yaratish jarayonini boshlash uchun ishlatiladi. glBegin() funksiyasidan keyin, 3D jismlarning turini (masalan, to'g'ri chizg'on, ko'z yoki yuzlar) belgilash va ularni qayta ishlab chiqish uchun qo'shimcha funksiyalar chaqiriladi. Tasvirning yakuniy qismida, glEnd() funksiyasi chaqiriladi, shuningdek, OpenGL jarayonini to'xtatadi.
glVertex3f() funksiyasi, OpenGL dasturlashining asosiy funksiyalaridan biridir va 3D jismlarning jihatlarini belgilash uchun ishlatiladi. glVertex3f() funksiyasi x, y va z koordinatalarini qabul qiladi va ularning jismlarning tegishli nuqtalarini belgilashda ishlatiladi. Misol uchun, to'g'ri chizg'on hosil qilish uchun, glBegin(GL_LINES) funksiyasi bilan birga, glVertex3f(x1, y1, z1) va glVertex3f(x2, y2, z2) funksiyalari chaqiriladi, bu yerda (x1, y1, z1) va (x2, y2, z2) jismlarning uch xossalari yordamida ko'rsatilgan nuqtalar bo'ladi. Bu usul orqali, OpenGL kutubxonasidan foydalanib, ko'p sonli 3D jismlarni yaratish mumkin.
glColor3f() funksiyasi, 3 ta son qabul qiladi va jismning rangini belgilash uchun ishlatiladi. Bu sonlar, 0 dan 1 gacha bo'lgan sonlar bo'lishi kerak va ular jismning yuzini ranglantirish uchun foydalaniladi.
Masalan, quyidagi kod yorqin kub hosil qiladi:

Bu kod OpenGL kutubxonasi yordamida yorqin kub hosil qiladi. glBegin() funksiyasi hosil qilish jarayonini boshlaydi va GL_POLYGON parametri kub hosil qilish uchun kerakli parametrdir. glColor3f() funksiyasi yorqin rangni belgilaydi va glVertex3f() funksiyasi jismning koordinatalarini belgilaydi. glEnd() funksiyasi esa jarayonni tugatadi.
glEnd() funksiyasi, yaratish jarayonini tugatish uchun OpenGL kutubxonasida ishlatiladi. glBegin() funksiyasi bilan boshlangan jismning yaratilish jarayonini tugatishda ishlatiladi. Yaratilgan shakl yoki jismlar avvalgi koordinata tizimiga qaytariladi va joriy shakl yoki jism aniqlangan rangiga tekshiriladi va ekranga chiqariladi. glBegin() va glEnd() funksiyalari bitta jarayonni belgilash uchun ishlatiladi
glLoadIdentity() funksiyasi, OpenGL kutubxonasida foydalaniladigan matritsalar bilan ishlashda foydalaniladigan keng tarqalgan matritsa (identity matrix) yaratadi. Bu funksiya, barcha matritsalarning qiymatlarini nolga sozlaydi, bu esa matritsalarning o'zgaruvchanligi bilan ishlaydigan kompyuter grafikasi dasturlarida o'zgaruvchan matritsalar yaratish uchun foydalaniladi.

Misol uchun, matrixni o'chirib, boshlang'ich holatga qaytarish uchun dasturda quyidagi kod yoziladi:



Bu kod, koordinat o'qining markaziy nuqtaga tekshirish va jismning holatini boshlang'ich holatga qaytarish uchun matritsa qiymatlarini nolga sozlaydi.
glTranslatef() - bu OpenGL funkisasi, bitta 3D jismni koordinat tizimida joylashtirish uchun foydalaniladi. Ushbu funktsiya jismni x, y va z o'qlariga ko'chiradi.

Funksiyani quyidagi ko'rinishda ishlatish mumkin:



bu yerda, x, y, va z jismni x, y, va z o'qlariga ko'chirish miqdori (koordinat tizimida bitta burchakdan boshqa burchakka)ni anglatadi.
Misol uchun, quyidagi kod yordamida yuqoriga qarab ko'rsatilgan koordinat tizimida jismni 1 birlik yuqoriga ko'chiradi:

glRotatef() funksiyasi aylana o'zgarishini belgilash uchun ishlatiladi. Ushbu funksiya x, y va z o'qlar bo'yicha aylanish burchaklarini qabul qiladi. Misol uchun, quyidagi kod aylana o'zgarishini yaratadi:

Bu kod 45 gradusga (pi/4 radian) aylanish burchagini yaratadi, bunga qarab aylanish o'qlari y-bosqichida (y yoki to'g'ri chiziqlik) bo'lib, x va z o'qlari esa harakat qilmasdan qoladi.
To'g'ri, glScalef() funksiyasi masshtab o'zgarishini belgilash uchun ishlatiladi. Bu funksiya 3 ta argument qabul qiladi: x, y, va z. x, y va z argumentlari mos holda jismning uzunligi, eni va balandligini o'zgartirish uchun ishlatiladi. Argumentlarga kerakli qiymatlarni berish orqali, jismning kengligi, uzunligi va balandligi o'zgartiriladi. Misol uchun, quyidagi kod jismni 2 kattalashtiradi:

glPushMatrix() funksiyasi joriy matrixni saqlash uchun ishlatiladi. Bu funksiya ishga tushirilgandan so'ng, keyingi jarayonlar joriy matrixdan o'z o'zgarishlarini bajaradi va joriy matrixning avvalgi holatiga qaytarilishiga o'zi javob beradi. Bu funksiya tashqi tasvirlovchi dasturlar va grafikani optimallashtirish uchun foydali bo'ladi, chunki bir-biriga bog'liq ko'plab 3D ob'ektlarni tekshirishda va joriy matrixning o'zgarishlari o'rtasida qaytishda yordam beradi.
glPushMatrix() funksiyasi orqali joriy matrixni saqlashimiz mumkin, shunda esa keyingi o'zgartirishlarni joriy matrixga o'rnatishimiz mumkin. glPopMatrix() esa avval saqlangan matrixni ko'paytiradi va uni joriy matrixga qaytaradi. Shunday qilib, qayta o'zgartirishlarimiz avvalgi holatiga qaytariladi.

Download 0.49 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling