Завдання ширини лінії в opengl

Точно так же, як ви задавали різні розміри точок, при малюванні за допомогою функції glLineWidth можна вказувати різну ширину ліній: void glLineWidth (GLfloat width);

Функція glLineWidth приймає один параметр, що задає приблизну ширину в пікселях зображуваної лінії. Подібно розмірами точок, підтримується не будь-ширина ліній, і потрібно переконатися, що необхідна ширина доступна. Щоб визначити діапазон ширин ліній і найменший інтервал між ними, використовуйте наступний код.

Тут масив розмірів буде містити два елементи - найменше та найбільше прийнятне значення glLineWidth. Крім того, змінна step буде містити найменший розмір кроку, допустимий між шириною ліній. Специфікація OpenGL вимагає, щоб підтримувалася тільки одна ширина ліній -1.0. Реалізація OpenGL, виконана Microsoft, дозволяє використовувати ширину ліній від 0.5 до 10.0 з найменшим розміром кроку -0.125.

У лістингу 3.6 приведений код більш цікавого прикладу використання glLineWidth. Його взято з програми LINESW, і при його виконанні малюється 10 ліній змінної ширини. Виконання програми починається з низу вікна при -90 по осі у і кожна наступна лініїрозташовується на 20 одиниць вище і має ширину на 1 більше. Результат виконання цієї програми наведено на рис. ЗЛО.

Зверніть увагу на те, що, задаючи координати ліній, ми використовували glVertex2f замість glVertex3f. Як говорилося раніше, це просто домовленість, оскільки ми малюємо всі об'єкти на площині ху при значенні координати z рівному 0. Щоб переконатися, що ви як і раніше малюєте лінії в трьох вимірах, поверніть рисунок за допомогою клавіш зі стрілками. Ви відразу помітите, що всі лінії лежать в одній площині.

фактура лінії

Крім зміни ширини відрізків можна створювати лінії з штриховими або пунктирними візерунками, званими фактурою (stippling). Щоб використовувати фак- туру ліній, спочатку її потрібно активізувати за допомогою наступної команди: glEnable (GL_LINE_STIPPLE); Після цього функція glLineStipple встановлює структуру, яка буде при- змінюватися при малюванні: void glLineStipple (GLint factor, GLushort pattern);

У лістингу 3.7 приведений приклад використання шаблону фактури, являющего- ся просто послідовністю чергуються включених і виключених бітів (0101010101010101). Даний код взятий з програми LSTIPPLE, яка знизу вгору зображує 10 ліній, паралельних осі х. Фактура кожної лінії представлена ​​шаблоном 0x5555, але для кожної наступної лінії множник шаблону збільшується на 1. Вплив множника на уширяется фактурний шаблон можна бачити на рис. 3.12.

Завдання ширини лінії в opengl

Завдання ширини лінії в opengl