Побудова дротяних зображень з застосуванням бібліотеки OpenGL (Лабораторна робота № 2), страница 3

При виклиці процедури glBegin(Графічний_Примітив) параметр Графічний_Примітив може набувати одного з наступних значень: GL_POINTS – точки, GL_LINES – лінії; GL_LINE_STRIP – ламана лінія; GL_LINE_LOOP – замкнута ламана лінія; GL_TRIANGLES – зафарбовані трикутники; GL_TRIANGLE_STRIP –зафарбовані трикутники, зчеплені сторонами; GL_TRIANGLE_FAN – зафарбовані трикутники з загальною вершиною; GL_QUADS – зафарбовані чотирикутники; GL_QUAD_STRIP – зчеплені сторонами чотирикутники; GL_POLYGON – багатокутники. Розглянемо кожен з примітивів більш детально.

Група примітивів GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP застосовується для побудови так званих дротяних зображень. Такі зображення містять лише точки та лінії різної товщини і не містять непрозорих поверхонь. Для побудови зображень з непрозорими зафарбованими поверхнями застосовується група примітивів GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON. Застосування останньої групи примітивів розглянуто в Лабораторній роботі №4. Більш детально застосування першої групи примітивів  наводиться нижче. 

Примітив GL_POINTS дозволяє вивести на екран сукупність точок. Наприклад фрагмент коду

    glBegin(GL_POINTS);

      glVertex2d(0.5, 0.7);

      glVertex2d(0.4, -0.2);

      glVertex2d(-0.5, -0.9);

      glVertex2d(-0.1, 0.3);

      glVertex2d(0.4, 0.3);

    glEnd;

виводить на екран сукупність точок  з визначеними координатами. Кожна точка представляє собою один піксел поточного кольору переднього плану. Зміну кольору переднього плану можна здійснювати всередині операторних дужок glBegin … glEnd. Так, наприклад у фрагменті:

    glColor3d(1,0,0); {Червоний колір переднього плану}

    glBegin(GL_POINTS);

      glVertex2d(0.5, 0.7);

      glVertex2d(0.4, -0.2);

      glVertex2d(-0.5, -0.9);

      glColor3d(0,0,1); {Синій колір переднього плану}

      glVertex2d(-0.1, 0.3);

      glVertex2d(0.4, 0.3);

    glEnd;

перші три точки будуть виведені червоним кольором, а дві останні синім.

Примітив GL_LINES представляє собою сукупність відрізків прямих ліній, кожен з яких задається двома вершинами (початком і кінцем). Наприклад фрагмент коду:

    glColor3d(1,0,0); {Червоний колір переднього плану}

    glBegin(GL_LINES);

      glVertex2d(0, -1);      {Початок першої лінії}

      glVertex2d(0, 1);       {Кінець першої лінії}

      glColor3d(0,0,1);       {Синій колір переднього плану}

      glVertex2d(-1, -0);     {Початок другої лінії}

      glColor3d(0,1,0);       {Зелений колір переднього плану}

      glVertex2d(1, 0);       {Кінець другої лінії}

    glEnd;

виводить на вікно форми дві лінії. Легко побачити, що для кожної наступної лінії необхідно задавати дві вершини  glVertex. Розглянемо управління кольором ліній в наведеному фрагменті. При задаванні як початку так і кінця першої лінії поточним кольором переднього плану був червоний. Таким чином перша лінія матиме червоний колір. При встановленні координат початку та кінця другої лінії колір переднього плану був різним, таким чином в наведеному прикладі колір другої лінії буде плавно змінюватися від синього (початок лінії) до зеленого (кінець).    

          Примітив GL_LINE_STRIP застосовується для формування ламаних ліній. Кожна вершина glVertex, задана в операторних дужках glBeginglEnd, відповідає точці зламу ламаної лінії. Так як в бібліотеці Open GL відсутні примітиви для побудови кривих ліній, то криві лінії слід апроксимувати ламаними лініями з малою довжиною сегмента. Наприклад, побудуємо відрізок параболи  при :

    {Виведення на екран координатних осей}