Визуальные аффекты
Шаблон многоугольников
В этом разделе мы подготовимся к легендарной теме использования текстуры в OpenGL. Если вы любите отдыхать от работы в горазх то вам может потребоваться http://www.metprom-ural.com/index/lebedki_ruchnye/0-44 заказать которую можно тут: www.metprom-ural.com.
Шаблон многоугольников яаляется простым способом нанесения узоров на многоугольники, его можно использовать в качестве текстуры для плоскнж задач.
Сейчас последует не очень выразительный и зрелищный пример, но он в» многом полезный. В проекте из подкаталога Ех76 рисуется плоская деталь, с которой мы начинали наше изучение примитивов OpenGL. Тогда нам пришлось изрядно потрудиться, чтобы нарисовать невыпуклый многоугольник.
Теперь все стало несколько проше: я ввел массив, хранящий координаты десяти вершин, лежащих на контуре фигуры.
detal : Array [0..9] of TVector = ((-0.23678, 0.35118, 0.0), (-0.23678, 0.7764, 0.0), (-0.37966, 0.7764, 0.0), (-0.55, 0.60606, 0.0), (-0.55, -0.4, 0.01, (0.45, -0.4, 0.0), (0.45, 0.60606, 0.0),
Гпава 4.
[0.27966, 0.7764, 0.0), (0.13678, 0.7764, 0.0), [0.13678, 0.35118, 0.0) );
Используются tess-объекты и просто перечисляются вершины контура:
gluTessBeginPolygon (tobj, nil);
gluTessBeginContour(tobj);
For i :- 0 to 9 do
gluTessVertexltobj, edetalti], 8detal[i]);
gluTessEndContour (tobj); gluTessEndPolygon (tobj) ;
Вышесказанное пока не относится к теме раздела, а только позволяет нам вспомнить некоторые пройденные темы.
Теперь по поводу собственно узора, в данном случае штриховки. Для нее я взял массив из 16 одинаковых строчек:
=onst
р75 : Array [0..127J of GLUbyte =¦ ( $аа, $аа, Saa, Saa, Sff, $ff, $ff, Sff,
|