Nazorat savollari:
Standart grafik kutubxonalar yaratish zaruriyati nimadan iborat?
OpenGL kutubxonasi funksiyalarini tavsiflang?
Konveyerni tashkil qilish va OpenGL kutubxonasi tuzilishini qisqacha ifodalang?
Kutubxona buyruqlari (funksiyalari) toifalarini keltiring?
OpenGL kutubxonasiga qanday kutubxonalar qo’shimcha o’rnatiladi?
Faqatgina parametrlar turi bilan farq qiluvchi OpenGL buyruqlarining turlicha variantlari nima uchun kerak?
Nima sababdan OpenGL ni tashkil etish ko‘pincha chekli avtomat bilan qiyoslanadi?
Tayanch iboralar: Primitivlar, ranglar manbasi, atributlarni tayinlash, vizuallashtirish, geometrik o‘zgartirish, OpenGL ilovalari, GL, GLU, GLUT, GLX, konveyer.
3.3. Geometrik obyektlarni chizish
Tasvirlarni yangilash jarayoni
Qoida sifatida, OpenGLni ishlatadigan dasturning vazifasi uch o‘lchamli tasvirni qayta ishlash va kadr buferida interaktiv tasvirlash hisoblanadi. Tasvir kuzatuvchining joriy holatini aniqlaydigan uch o‘lchamli obyektlar to‘plami, yorug‘lik manbai va virtual kameradan tashkil topadi.
Odatda OpenGL ilovasi uzluksiz siklda oynada tasvirni yangilash funksiyasini chaqiradi. Ushbu funksiyada OpenGL ning asosiy buyruqlari chaqirish joriy qilingan. Agar GLUT kutubxonasi ishlatilsa, unda bu glutDisplayFunc() chaqiruvi bilan qayd qilingan teskari aloqali funksiya bo‘ladi. GLUT bu funksiyani oyna tarkibini boshqatdan chizish kerakligi to‘g‘risida operatsion tizim ilovaga ma’lumot berganda bu funksiyani chaqiradi. Hosil qilinadigan tasvir ham statik, ham animatsiya ko‘rinishida bo‘lishi mumkin, ya’ni vaqt bo‘yicha o‘zgaradigan parametrlarga bog‘liq bo‘lganda. Bu holatda yangilash funksiyasini mustaqil ravishda chaqirish maqsadga muvofiq. Misol uchun, glutPostRedisplay () buyrug‘i yordamida. Yanada batafsil ma’lumot A ilovada keltirilgan.
Tasvirni yangilashning tipik funksiyasi qanday vazifalarni bajarishini ko‘rib chiqamiz. Qoida sifatida, u uch bosqichdan tarkib topadi:
OpenGL buferlarini tozalash;
Kuzatuvchini holatini o‘rnatish;
Geometrik obyektlarni chizish va o‘zgartirish.
Buferni tozalash quyidagi buyruqlar yordamida amalga oshiriladi:
void glClearColor (clampf r, clampf g, clampf b, clampf a) // (clamp-fiksator)
void glClear (bitfield buf) //( bitfield - bitovoe pole)
glClearColor buyrug‘i rangni o‘rnatadi, ya’ni kadr buferi to‘ldiriladi. Buyruqning dastlabki uchta parametri ranglarning R, G va B komponentlarini tayinlaydi va ular [0,1] kesma oralig‘ida bo‘lishi kerak. To‘rtinchi parametr alfa kompetentani beradi. Qoidaga ko‘ra, u 1 ga teng. Shart berilmaganda rang – qora (0,0,0,1).
glClear buyrug‘i buferni tozalaydi, buf parametri tegishli bufer o‘zgarmaslari kombinasiyasini belgilaydi. Odatdagi dastur bufer rangi va chiqurligini tozalash uchun
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
buyrug‘ini chaqiradi.
Kuzatuvchi holatini o‘rnatish va uch o‘lchovli obyektlarni o‘zgartirish (burish, kuchirish va b.) almashtirish matritsalarini tayinlash yordamida nazorat qilinadi. Obyektlarni o‘zgartirish va virtual kamera holatini sozlash keyingi bo‘limlarda keltirilgan.
Diqqatimizni sahnada joylashgan obyektlar tavsifini OpenGL ga uzatishga qaratamiz. OpenGL ning har bir obyekti primitivlar to‘plamidan tashkil topgan.
Do'stlaringiz bilan baham: |