Wie zeichne ich in OpenGL eine Linie mithilfe von Dreiecken?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie zeichne ich in OpenGL eine Linie mithilfe von Dreiecken?

Post by Anonymous »

In meinem Code verwende ich „Draw Line“, um die Modellauswahllinie und die Fehlerkantenlinie zu zeichnen, und „Draw Triangle“, um ein 3D-Modell zu zeichnen.
Mit dem Open-Mesh-Griff des Modells werden Kanten aufgezeichnet und gezeichnet.

Code: Select all

        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();
}
gelb: Auswahllinie
grün: Fehlerkante
Image

! Vor der Änderung
Jetzt muss ich einen Geometrie-Shader hinzufügen, daher kann ich nicht die Funktionen „Linie zeichnen“ und „Dreieck zeichnen“ mit demselben Shader verwenden.
Ich versuche, die Normale der angrenzenden Fläche zu verwenden und die Scheitelpunkte der Linie leicht zu versetzen, um ein Dreieck zu simulieren.

Code: Select all

        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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post