2010-11-23 5 views
5

Ich versuche (in c, mit opengl) ein Stück eines Brettspiels mit GL_POINT für jedes Stück zu programmieren. Ich habe den folgenden Code:Warum nicht "glEnable (GL_POINT_SMOOTH);" arbeiten, um den folgenden Punkt als Kreis zu machen?

 glEnable(GL_POINT_SMOOTH); 
     glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); 
     glPointSize(20.0f); 
     glBegin(GL_POINTS); 

     glVertex2d(200, 200); 

     glEnd(); 

Bur aus irgendeinem Grund der Punkt immer als Quadrat zeigt, statt eines Kreises ... Wer weiß, warum?

+2

Dies könnte Ihr GPU oder der Grafiktreiber sein. Einige Herstellerimplementierungen von 'GL_POINT_SMOOTH' führen immer noch zu quadratischen Punkten. Wenn Sie zu Software-Rasterizer (wie MesaGL) wechseln, könnte es funktionieren, aber ansonsten sind Sie Ihrem GPU-Anbieter ausgeliefert, damit dies funktioniert. Auch dieser Thread: http://stackoverflow.com/questions/1513811/getting-smooth-big-points-in-opengl – birryree

Antwort

6

Eigentlich arbeiten zu lassen Glätten, müssen Sie wahrscheinlich nur Mischung zu ermöglichen. Versuchen Sie:

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

Ich weiß, dass dies für Linienglättung erforderlich ist, und ich bin mir ziemlich sicher, dass es für Punkte das gleiche ist.

Cheers, -matt

+0

Das funktionierte für mich. – Narek

Verwandte Themen