Как убирать внутренние линии



Как убирать внутренние линии

Каждой вершине по умолчанию присваивается булевский признак (флаг) того, что из нее может выходить видимое ребро (линия). Если надо отменить рисование линии, например скрыть тесселяцию вогнутого полигона, то можно снять флаг ребра командой glEdgeFlag(GL_FALSE); для текущей вершины. Затем можно вновь установить его, когда дело дойдет до ребер, которые должны быть видимы — команда glEdgeFlag(GL_TRUE);. Попробуйте самостоятельно вставить флаги ребер в следующем фрагменте программы так, чтобы скрыть линию соединения двух четырехугольников. Попробуйте затем заменить алгоритм так, чтобы изобразить ту же фигуру в виде одного полигона:

void _stdcall OnDraw()

{

glClear (GL_COLOR_BOFFER_BIT); glColorSd (1., 0.4, 1.);

//====== Вогнутый шестиугольник, но мы зададим его

//====== в виде двух четырехугольников

float с[6][3] =

{



200. 200.,0.,

200. 100.,0.,

250. 20.,0.,

300. 100.,0.,

300. 200.,0.,

250. 100.,0.,

};

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

glBegin(GL_QUADS);

glVertex3fv(c[5])

glVertex3fv(c[0])

glVertex3fv(c[l])

glVertex3fv(c[2])

glVertex3fv(c[5])

glVertex3fv(c[2])

glVertex3fv(c[3])

glVertex3fv(c[4])

glEnd();

glFlush ();

}



Содержание раздела