Оқу-әдістемелік кабинеті «Компьютерлік графика» пәні бойынша


Графикалық примитивтерді салу



бет13/62
Дата23.11.2022
өлшемі2,51 Mb.
#159448
1   ...   9   10   11   12   13   14   15   16   ...   62
Байланысты:
Компьютерлік графика

2.4. Графикалық примитивтерді салу.
OpenGL – де барлық геометриялық примитивтер төбелер терминдерімен беріледі. Әрбір төбе оның кеңістіктегі координатасын анықтайтын сандар жиынымен беріледі.
OpenGL біртекті координаталармен жұмыс істейді. Егер z координатасы берілмесе онда 0-ге тең деп есептеледі, егер 4 координатасы берілмесе 1-ге тең деп есептеледі.
OpenGL барлық геометриялық обьектілер төбелер арқылы анықталады, ал төбелер келесі процедура арқылы беріледі.
glVertex{2 3 4}{s i f d}[v](TYPE x, …),
vжалғауы аргумент ретінде массив алынса қойылады.Геометриялық приметивтерді салу үшін бұл обьектіні анықтайтын төбелер жиынын білу қажет. Бұл үшін glBegin() және glEnd() процедуралары қолданады. glBegin(GLenum mode) процедурасының параметр ретінде келесі мәндердің біреуі алынады.
GL_POINTS – жеке нүктелер жиыны;
GL_LINES – жеке нүктелерді анықтайтын төбелер жиыны;
GL_LINE_STRIP –тұйықталмаған сынық;
GL_LINE_LOOP – тұйықталған сынық;
GL_POLYGON – қарапайым дөңес көпбұрыш;
GL_TRIANGLES – төбелерді үшбұрышқып қосады;
GL_TRIANGLE_STRIP – үшбұрыштардың байланысқан жолағы;
GL_TRIANGLE_FAN – үшбұрыштар веері;
GL_QUADS – дөңес төртбұрыштарды анықтайтын төбелер квартеті;
GL_QUAD_STRIP –төртбұрыштар жолағы;
glBegin() және glEnd() арасында төбелердің әртүрлі атрибуттарын анықтайтын командалар жазуға болады. Олар: түс, нормаль, материялық растр позициясы және текстура координаттары.


Нүктелерді, сызықтарды және көпбұрыштарды салу
Нүктенің көлемін анықтау үшін: glPointSize (GLfloat size) процедурасы қолданылады. Нүктенің көлемі пиксельде көрсетіледі. Үнсіз келісім бойынша 1-ге тең. Сызықтың қалыңдығын анықтау үшін: gflineWidth (GLfloatwidth) процедурасы қолданылады. Сызық салынатын шаблонды анықтау үшін glLineStipple (Glint factor, GLushort pattern) процедурасы қолданылады. Процедураның 2 параметрі бар, шаблон 2 параметрмен анықталады және 1 параметрге көрсетілген санға созылады. Шаблонды қолдану үшін қолдануға рұхсат glEnable (GL_UNE_STIPPLE) процедура көмегімен беріледі. Шаблонды қолдануға тиым салу glDisable (GL_LINE_ST1PPLE) командасы арқылы орындалады.
Көпбұрыштарды салу.
Көпбұрыштың 2 жағы бар:

  1. Беттік (лицевая);

  2. Беттік емес (нелицевая);

Көпбұрыштың беттік немесе беттік емес жағын қалай салуын анықтау үшін:glPolygonMode(GLenumface, GLenummode) процедурасы қолданылады. Оның екі параметрі бар:

  1. Келесі мәндерді қабылдай алады:

GL_FRONT_AND_BACK (обестороны) – екі жағы,
GL_FRONT (лицевая сторона) - беттік жағы,
GL_BACK (нелицевая сторона) – беттік емес жағы.

  1. Келесі мәндердің біреуін қабылдай алады.

GL_POINT – шекаралық нүктелер жиыны,
GL_LINE – шекаралық сынық сызық,
GL_FILL – толтырылған аймақ.
Үнсіз келісім бойынша экранда сағат бағытына қарсы экранда пайда болатын көпбұрыштың төбелері беттік деп аталады. Бұны glFrontFace(GLenum mode) процедура көмегімен өзгертуге болады. Үнсіз келісім бойынша GL_CCW болады. GL_CW – процедураны осымен қолданса беттік деп сағат бағыты бойынша салынатын көпбұрыштар аталады.
Беттік, беттік емес беттерді салуға тиым салуға болады. Ол үшін: glCullFace(GLenum mode) процедурасы қолданылады. Процедура аргументінің мәндері GL_FRONT тек алдынғы беттер ғана көрінеді. GL_BACK (оставить нелицевые) артқы беттері, GL_FRONT_AND_BACK (оставить все грани) артқы және алдынғы беттері салынады. Бетті толтыру шаблоны GL_POLYGON_STIPPLE роцедура көмегімен орындалады. Сәйкесінше шаблонды қолдануға рұхсат беру үшін: glEnable процедурасы қолданылады.
Әрбір төбе үшін өз нормаль векторын келесі процедураның біреуі мен анықтауға болады.
glNormal3{b s i d f}(TYPE nx, TYPE ny, TYPE nz);
glNormal3{b s I d f}v(const TYPE * v).
b, s ,i - аргументтерінің мәндері [-1, 1] кесіндісіне масштабталады.




Достарыңызбен бөлісу:
1   ...   9   10   11   12   13   14   15   16   ...   62




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет