Используя дескриптор открытой сетки модели, края записываются и рисуются.
Код: Выделить всё
ConstFaceEdgeIter fh_it;
for(fh_it = cfe_iter(face); fh_it.is_valid();++fh_it)
{
if(! fh_it.is_valid())
continue;
m_drawingColorData.edges v0()).toQVector3D();
m_drawingColorData.edges v1()).toQVector3D();
}
зеленый: край ошибки

! Перед изменением
Теперь мне нужно добавить шейдер геометрии, поэтому я не могу использовать рисование линии и рисовать треугольник с помощью одного и того же шейдера.
Я пытаюсь использовать нормаль соседней грани, слегка смещая вершины линии, чтобы имитировать треугольник.
Код: Выделить всё
ConstFaceEdgeIter fh_it;
for(fh_it = cfe_iter(face); fh_it.is_valid();++fh_it)
{
if(! fh_it.is_valid())
continue;
QVector3D point1 = getVertex(fh_it->v0()).toQVector3D();
QVector3D point2 = getVertex(fh_it->v1()).toQVector3D();
QVector3D dir = (point2 - point1).normalized();
QVector3D normal;
normal = getFaceNormal(face).toQVector3D();
QVector3D perp = QVector3D::crossProduct(normal, dir).normalized();
QVector3D offset = perp * 0.25f;
QVector3D v1 = point1;
QVector3D v2 = point1 - offset;
QVector3D v3 = point2;
QVector3D v4 = point2 - offset;
m_drawingColorData.edges
Подробнее здесь: [url]https://stackoverflow.com/questions/79811889/how-do-i-draw-a-line-using-triangles-in-opengl[/url]
Мобильная версия