openGL GL_QUAD smoothing/antialiasing



  • Servus,

    ich benutze openGL um eine einfach 2D-Grafik zusammenzubauen.

    Auf einem schwarzen Hintergrund sollen ein "Stapel" von gelben Rechtecken gerendert werden. So in etwa wie ein Balken von einem LED VU-Meter http://3.bp.blogspot.com/_u7LnAXyVfww/TMeQcvCnpZI/AAAAAAAAAWE/WwjED-8GAPI/s1600/vumeter.gif

    Dabei müssen insgesamt 18 Rechtecke übereinander gezeichnet werden, jeweils alle 3.6px eines. Und da liegt auch schon das Hauptproblem: Dadurch, dass der Abstand kein ganzes Pixel ist, wir der Zwischenraum mal breiter und mal schmäler. Da ich keine Möglichkeit habe, die Zeichenfläche zu ändern oder die Balkenzahl zu ändern, muss ich das wohl oder übel mit Anti-Aliasing kaschieren.

    Und damit zu meiner Frage: Ich habe bereits
    glEnable(GL_LINE_SMOOTH)
    probiert, ändert aber nix am Ergebnis.

    Folgender Code zeichnet die Rechtecke:

    for (int i = 0; i < m_egt_bar[cyl] && i < 17; ++i) 
    {
                float bBottom = barBottom + i*3.6f;
                glBegin(GL_LINES);
                glLineWidth(2);
                glVertex2f(bRight,bBottom);
                glVertex2f(bLeft,bBottom);
                glEnd();
    
    }
    

    Was muss ich davor basteln, damit auf "halben pixeln" liegende Kanten entsprechend gesmootht werden?

    Philipp



  • Fuer Linien musst Du zusaetzlich Alpha-Blending aktivieren.


Anmelden zum Antworten