Matritsalar bilan ishlash.
OpenGLda sahna obyektlarini turlicha o‘zgartirishni ko‘rsatish uchun matritsalar ustida operatsiyalardan foydalaniladi, buning uchun matritsalar uch turga ajratiladi: modelli-tasvir, proeksiyalash matritsasi va teksturalash matritsasi. Ularning barchasi 4x4 o‘lchamga ega. Tasvirli matritsa obyektni parallel ko‘chirish, masshtabni o‘zgartirish va burish singari eng yuqori koordinatalarda o‘zgarishni belgilaydi. Proeksiyalash matritsasi, uch o‘lchovli obyektning ekran tekisligiga (oynali koordinatalarda) proeksiyalanishini belgilaydi, teksturlash matritsasi obyekt teksturalar bilan qoplanishini belgilaydi.
Koordinatani matritsaga ko‘paytirish, koordinatani belgilovchi (qoida sifatida, bu buyruq glVertex*) OpenGL ning tegishli buyrug‘ini chaqirish vaqtida sodir bo‘ladi.
Matritsani qanday o‘zgartirish kerakligiga qarab kerakli buyruqlar ishlatiladi:
void glMatrixMode (GLenum mode)
mode parametrli qiymatga ega bo‘lgan chaqiruv GL_MODELVIEW, GL_PROJECTION, yoki GL_TEXTURE larga teng bo‘lib, mos holda modelli tasvir matritsasi, proeksiyalash matritsasi yoki teksturalash matritsalari bilan ishlash rejimini qamrab oladi. U yoki bu tipdagi matritsani tayinlash buyrug‘ini chaqirish uchun, avvalo tegishli rejimni o‘rnatib olish zarur.
Joriy tipdagi matritsa elementlarini aniqlash uchun quyidagi buyruq chaqiriladi:
void glLoadMatrix [f d] (GLtype *m)
bu yerda m buyruqning nomlanishiga mos xolda float yoki double tipidagi 16 elementli massivni bildiradi. Bunday xolda dastlab unda matritsaning birinchi ustuni, so‘ngra ikkinchi, uchinchi va to‘rtinchi ustuni yozilishi kerak.
void glLoadIdentity (void) buyrug‘i joriy matritsani birlik matritsaga o‘zgartiradi.
Ko‘p hollarda joriy matritsa elementlarini saqlash talab qilinadi, buning uchun quyidagi buyruqlar ishlatiladi.
void glPushMatrix (void)
void glPopMatrix (void)
Ular joriy matritsani birlashmasidan yozib oladi va qayta tiklaydi, bunda har bir matritsa o‘zining birlashmasiga ega. Model-ko‘rinishli matritsalar uchun uning chuqurligi minimum 32 ga teng, boshqalar uchun minimum 2 ga teng.
Joriy matritsani boshqa matritsaga ko‘paytirish uchun quyidagi buyruq ishlatiladi:
void glMultMatrix [f d] (GLtype *m) .
bunda m parametr 4x4 o‘lchamli matritsani berishi kerak. Agar joriy matritsani M deb, yuboriladigan matritsani T deb belgilasak, unda glMultMatrix buyrug‘i bajarilganda M * T joriy matritsa bo‘lib qoladi. Biroq u yoki bu turdagi matritsani o‘zgartirish uchun, qiymati jihatidan kerakli matritsani hosil qilib joriy matritsaga ko‘paytiradigan maxsus buyruqlarni qo‘llash qulay.
Umuman olganda, sahnaning uch o‘lchamli obyektlarini ilova oynasida tasvirlash uchun rasmda ko‘rsatilgan ketma-ketlik bajariladi.
Normallangan koordinatalar
Do'stlaringiz bilan baham: |