Operatorli qavslar glBegin / glEnd
Biz yuqorida bitta uchning atributlarini tayinlashni ko‘rib chiqdik. Ammo, grafik primitiv atributlarini tayinlash uchun, uchning bitta koordinatasi etarli emas. Ushbu uchlarni zaruriy xususiyatni belgilovchi bir butunlikka birlashtirish kerak. Buning uchun OpenGL da operatorli qavs deb ataluvchi maxsus buyruqlarni chaqirishda xizmat qiluvchilardan foydalaniladi. Primitivlarni belgilash yoki primitivlar ketma-ketligi
void glBegin (GLenum mode);
void glEnd (void);
buyruqlarini chaqirish oralig‘ida olib boriladi.
3.3-rasm. OpenGL primitivlari.
Mode parametri primitivning tipini belgilaydi, qaysiki ichkarida tayinlanadi va quyidagi qiymatlarni qabul qilishi mumkin:
GL_POINTS har bir uchlar bir qancha nuqtalar koordinatalarini belgilaydi.
GL_LINES har bir alohida uchlar juftligi kesmani belgilaydi; agarda toq sonli uchlar ko‘rsatilsa, u holda oxirgi uch e’tiborga olinmaydi.
GL_LINE_STRIP har bir keyingi uch oldingisi bilan birgalikda kesmani belgilaydi
GL_LINE_LOOP oldingi primitivdan farqli jihati shuki, oxirgi kesma so‘ngi va birinchi uchni belgilaydi, berk to‘g‘ri chiziq timsolida.
GL_TRIANGLES har bir alohida uchta uch uchburchakni belgilaydi; agarda uchta sonli uchlar karrali berilmasa, unda oxirgi uchlar e’tiborga olinmaydi.
GL_TRIANGLE_STRIP har bir keyingi uch oldingi ikkitasi bilan birgalikda uchburchakni belgilaydi.
GL_TRIANGLE_FAN uchburchaklar birinchi uch va har bir keyingi juft uchlar bilan beriladi (juftliklar kesishmaydi).
GL_QUADS har bir alohida to‘rtta uch to‘rtburchakni belgilaydi; agarda to‘rtta sonli uchlar karrali berilmasa, unda oxirgi uchlar e’tiborga olinmaydi.
GL_QUAD_STRIP n nomerli to‘rtburchak 2n-1, 2n, 2n+2, 2n+1 nomerli uchlar bilan belgilanadi.
GL_POLYGON qavariq ko‘pburchakning uchlarini ketma-ket berish.
Masalan, uchlari turli rangda bo‘lgan uchburchakni chizish uchun, quyidagilarni yozish etarli:
GLfloat BlueCol[3] = {0,0,1};
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0); /* qizil */
glVertex3f(10.0, 10.0, 0.0);
glColor3ub(0,255,0); /* yashil */
glVertex2i(100, 100);
glColor3fv(BlueCol); /* ko‘k */
glVertex3f(100.0, 100.0, 0.0);
glEnd();
Qoida sifatida, primitivlarning har xil turlari turlicha platformalarda turlicha vizuallashish tezligiga ega. Unumdorlikni oshirishda, serverga uzatish uchun kam sonli axborotlarni talab etuvchi, GL_TRIANGLE_STRIP, GL_QUAD_STRIP, GL_TRIAGLE_FAN singari primitivlardan foydalanish afzalroqdir.
Mazkur ko‘pburchaklarni tayinlashdan tashqari, ularni ekranda akslantirish usullarini ham berish mumkin.
Ammo dastlab old va orqa yoq tushunchalarini belgilab olish lozim.
Yoq deganda ko‘pburchakning tomonlaridan biri tushuniladi, va odatda soat strelkasiga teskari aylanuvchi uchlar joylashgan tomon old hisoblanadi. Old yoqning uchlari aylanish yo‘nalishini quyidagi buyruqni chaqirish orqali o‘zgartirish mumkin
void glFrontFace (GLenum mode)
mode parametrining qiymati GL_CW (clockwise) ga teng, qiymatni odatdagi holatiga qaytarish uchun GL_CCW (counter-clockwise) ni ko‘rsatish kifoya.
Ko‘pburchakni tasvirlash usulini o‘zgartirish uchun quyidagi buyruq ishlatiladi
void glPolygonMode (GLenum face, Glenum mode)
mode parametri ko‘pburchak qanday akslanishishini belgilaydi, face parametri ko‘pburchakning tipini o‘rnatishda qo‘llaniladi va quyidagi qiymatlar ham qabul qilinishi mumkin:
Do'stlaringiz bilan baham: |