Problem mit Antialiasing



  • Zwar funktioniert Antialiasing bei mir jetzt einwandfrei, doch gibt es Probleme wenn sich die Dreiecke überschneiden, z.B. bei Vierecken:
    http://4joke.piranho.com/links.html
    Ich weiß dass ich irgentetwas vergessen hab, komm aber nicht drauf, so sieht mein Code aus:

    glEnable(GL_BLEND);
     glEnable(GL_POLYGON_SMOOTH);
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST);
    

    Den DepthBuffer hab ich schon deaktiviert, hilft aber auch nicht.

    mfg.

    edit: der link klappte nicht, jetzt geht's.



  • Das rührt vom Polygon_Smoothing her.
    Das muss aus, wenn du das grüne Quad zeichnest.



  • SeppSchrot schrieb:

    Das rührt vom Polygon_Smoothing her.
    Das muss aus, wenn du das grüne Quad zeichnest.

    Und wie kann ich Antialising für Quads aktivieren?? Außerdem ist mir aufgefallen, da sich die Schrift, ja auch aus ganz vielen Polygonen zusammen setz, das dort diese striche auch auftreten (merkt man nur wenn man sehr na ranzommt). Das hat den Effekt das die Schrift nicht an allen Stellen ganz schwarz ist. Aber ich weiß, dass dieses Problem lösbar sein muss, denn wenn ich über die Grafikkarten einstellung Antialising aktiviere, funtkioniert es einwandfrei.



  • Was ist jetzt damit? Es muss doch irgentwie möglich sein Kantenglättung auch in OpenGL hin zukriegen!

    mfg.



  • Für mich sieht das aus, als ob Du die Farbe beim Rendern zum Framebuffer dazuaddierst. Durch das AA werden manche Pixel doppelt gezeichnet und somit ist der Farbwert dort doppelt d.h. heller.
    Stell das Alphablending mal so ein, dass nicht dazuaddiert sondern überschrieben wird.



  • 0x00000001 schrieb:

    Für mich sieht das aus, als ob Du die Farbe beim Rendern zum Framebuffer dazuaddierst. Durch das AA werden manche Pixel doppelt gezeichnet und somit ist der Farbwert dort doppelt d.h. heller.
    Stell das Alphablending mal so ein, dass nicht dazuaddiert sondern überschrieben wird.

    OK, damit klappt's:

    glBlendFunc(GL_SRC_ALPHA,GL_DST_ALPHA);
    


  • Mist, das klappt doch nicht, nur wenn der Hintergrund schwarz ist. Warum das denn?

    mfg.


Anmelden zum Antworten