26 января 2021 года    
Вторник | 05:37    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







 

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

Каждой вершине по умолчанию присваивается булевский признак (флаг) того, что из нее может выходить видимое ребро (линия). Если надо отменить рисование линии, например скрыть тесселяцию вогнутого полигона, то можно снять флаг ребра командой 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 ();

}

 

Лента новостей


2006 (c) Copyright Hardline.ru