2010-01-07 7 views
5

Ich habe den folgenden Code:glPolygonOffset() Fehler mit Linien

glEnable(GL_POLYGON_OFFSET_LINE); 
glPolygonOffset(1,1); // or 40,40 etc... doesnt help at all 

Aber die Linien sind immer noch z Bekämpfung, ist diese gemeinsamen Fehler oder so ...? Meine Linien sind 1.0f dick und ich zeichne die Linien zuletzt in der Szene.

Auch habe ich disable GL_ALPHA_TEST und GL_LINE_SMOOTH und aktiviert GL_BLEND und GL_COLOR_LOGIC_OP

Edit: Ich habe GL_POLYGON_OFFSET_FILL bereits versucht, es hilft nicht.

Antwort

12

GL_POLYGON_OFFSET_LINE funktioniert nur für Polygon-Rendering mit glPolygonMode(GL_FRONT_AND_BACK, GL_LINE). Wenn Sie Primitive mit GL_LINES zeichnen, funktioniert es nicht. In diesem Fall müssen Sie die Scheitelpunkte manuell versetzen.

+0

Ah, also muss ich die Linien mit Polygon-Modus zeichnen dann –

+0

@Newbie 'GL_TRIANGLES' und' GL_QUADS' funktionieren gut. –

+0

Zeichnen von Linien als unendlich dünne Polygone wird nicht gut funktionieren; GL berechnet die Normale und verwendet diese, um die Scheitelpunkte auszugleichen. In diesem Fall ist die Normale für das Polygon, das Sie zeichnen, ein Vektor mit der Länge 0. – Tarydon

4

Versuchen Sie stattdessen, GL_POLYGON_OFFSET_FILL zu aktivieren. (Ich nehme an, die Linien sind Tiefenbekämpfung mit Polygonen, die Sie früher gerendert haben?)

+0

Sie haben vielleicht sein Problem nicht gelöst, aber Sie haben meins gelöst, 2 Jahre später. Vielen Dank! –