Wie man anti-Aliasing von Linien in OpenGL ES 2.0?

Ich versuche zu zeichnen, einige Konturen, die ich gespeichert habe als vertex-arrays:

 typedef struct
{
    float* vertices;
    int nrPoints;
}VertexCurve;

list<VertexCurve> CurveList;

Ich bin mit ein paar Proben aus einer opengl-es-2.0-Buch : http://opengles-book.com/

Die Zeichnung Methode sieht wie folgt aus:

    void Draw ( ESContext *esContext )
{
   UserData *userData = (UserData*)esContext->userData;

   //Set the viewport
   glViewport ( 0, 0, esContext->width, esContext->height );

   //Clear the color buffer
   glClear ( GL_COLOR_BUFFER_BIT );

   //Use the program object
   glUseProgram ( userData->programObject );

   //glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE);
   //glEnable(GL_SAMPLE_COVERAGE);
   //glSampleCoverage(0.5, GL_FALSE);
   glEnableVertexAttribArray ( 0 );

   //glLineWidth(1);

   for (list<VertexCurve>::iterator it = CurveList.begin();
            it != CurveList.end(); it++)
   {
       //Load the vertex data
       glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, (*it).vertices );

       glDrawArrays ( GL_LINE_LOOP, 0, (*it).nrPoints );
   }

   eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface );
}

Auch die Ergebnisse für die Zeichnung sind:

Wie man anti-Aliasing von Linien in OpenGL ES 2.0?

Was ich brauchen, ist zu haben, glattere Linien (anti-Aliasing) und von was ich gelesen habe, in OpenGL ES 2, die getan werden kann mit multisampling. Kann man aus dem code sehen, dass ich versucht habe mit einigen Methoden, die spezifisch für diese Technik, aber ich war nicht in der Lage zu verstehen, Ihre Verwendung und habe schlechte Ergebnisse:

Wie man anti-Aliasing von Linien in OpenGL ES 2.0?

Wenn jemand zu mir erklären können, wie man anti-Aliasing von Linien und die Konturen glatter, werde ich sehr dankbar sein.

InformationsquelleAutor Adrian | 2011-12-01
Schreibe einen Kommentar