Как рисовать линии со сглаживанием в OpenGL ES 2.0?

Я пытаюсь нарисовать некоторые контуры, которые я сохранил в виде массивов вершин:

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

list CurveList;

Я использую некоторые образцы из книги opengl es 2.0: http: // opengles-book .com /

Метод рисования выглядит следующим образом:

    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::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 );
}

Также результаты рисования следующие:

enter image description here

Мне нужно, чтобы линии были более плавными (сглаженными) и, судя по тому, что я читал, в OpenGL ES 2 это можно сделать с помощью мультисэмплинга. Из кода видно, что я пробовал использовать некоторые методы, характерные для этой техники, но я не смог полностью понять их использование и получил плохие результаты:

enter image description here

Если кто-нибудь может объяснить мне, как получить строки со сглаживанием и сделать контуры ровнее, буду очень признателен.

6
задан genpfault 1 December 2011 в 16:40
поделиться