Я пытаюсь нарисовать некоторые контуры, которые я сохранил в виде массивов вершин:
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 );
}
Также результаты рисования следующие:
Мне нужно, чтобы линии были более плавными (сглаженными) и, судя по тому, что я читал, в OpenGL ES 2 это можно сделать с помощью мультисэмплинга. Из кода видно, что я пробовал использовать некоторые методы, характерные для этой техники, но я не смог полностью понять их использование и получил плохие результаты:
Если кто-нибудь может объяснить мне, как получить строки со сглаживанием и сделать контуры ровнее, буду очень признателен.