2010-01-23 5 views
6

Vor allem, was ist der Zweck dieses Codes?OpenGL: GL_LINE_SMOOTH wird nicht auf allen Karten unterstützt; nicht einmal die Linien zeichnen, es sei denn

glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 

konnte ich legte es GL_DONT_CARE aber es tut meine Linien gezeichnet, es sei denn, i glDisable(GL_LINE_SMOOTH)

Also im fragen verwenden machen, wenn Theres einige Mechanismus eingebaut, um es die Linien zu machen zu ziehen, auch wenn die glatten Linien Arent unterstützt (So würde es ohne Anti-Aliasing zeichnen ...)

Oder muss ich eigene Funktionen dafür machen und prüfen, ob glatte Linien unterstützt werden etc ... und jedes Mal, wenn ich glatte Linien zeichnen möchte, ich muss diese Funktion aufrufen, die prüft, ob oder nicht s unterstützt? argh.

Bearbeiten: Die Linien sind glatt auf meiner anderen Karte, auf meiner anderen Karte sie nicht sogar auftauchen, es sei denn ich deaktivieren glatte Linien. Also das ist das Problem, nicht glEnable (GL_BLEND)

+0

Klingt wie ein Fehler im Treiber zu mir. – ypnos

+0

@ypnos - wenn er Blending nicht aktiviert hat, dann ist es nicht –

+0

Blending ist aktiviert, sehen Sie meine Änderungen jetzt –

Antwort

5

glHint wie der Name sagt, ist ein Hinweis an den Treiber. Es ist nicht notwendig, etwas zu erreichen. Die tatsächliche Funktionsweise von glHint hängt vom Grafiktreiber ab.

Um auch LINE_SMOOTH zu aktivieren, muss die Überblendung aktiviert sein. Haben Sie GL_BLEND aktiviert? Und wenn Sie schon dabei sind, wählen Sie auch Ihre glBlend-Funktion!

Beispiel:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_BLEND); 
+0

Ich bearbeitete meine erste Post jetzt, die Linien sind gut auf andere Karte gerendert, aber mit der Karte, die nicht unterstützt glatte Linien, wird es sie überhaupt nicht, wenn ich gl_line_smooth deaktivieren –

+0

@Newbie: Was ist die andere Karte? –

Verwandte Themen