Как нарисовать контур точки в OpenGL? - PullRequest
0 голосов
/ 07 мая 2018

К настоящему времени точки могут быть нарисованы с помощью следующего кода:

    // SETUP FOR VERTICES
GLfloat points[graph->vertexCount * 6];
for (int i = 0 ; i < graph->vertexCount; i++) 
{
    points[i*6] = (graph->vertices[i].x / (backingWidth/2) ) - 1;
    points[i*6+1] = -(graph->vertices[i].y / (backingHeight/2) ) + 1;

    points[i*6+2] = 1.0;
    points[i*6+3] = 0.0;
    points[i*6+4] = 0.0;
    points[i*6+5] = 1.0;
}

glEnable(GL_POINT_SMOOTH);
glPointSize(DOT_SIZE*scale); 
glVertexPointer(2, GL_FLOAT, 24, points);
glColorPointer(4, GL_FLOAT, 24, &points[2]);
glDrawArrays(GL_POINTS, 0, graph->vertexCount);

Точки отображаются красным цветом, и я хочу добавить белый контур за пределами точек. Как я могу нарисовать контур точки?

Вопрос для лучшего отображения

Следуйте инструкциям @BDL, добавляя большие точки под красными точками в виде контура, они хорошо выглядят.

outlinePoints[i*6] = (graph->vertices[i].x / (backingWidth/2) ) - 1;
outlinePoints[i*6+1] = -(graph->vertices[i].y / (backingHeight/2) ) + 1;
outlinePoints[i*6+2] = 0.9;
outlinePoints[i*6+3] = 0.9;
outlinePoints[i*6+4] = 0.9;
outlinePoints[i*6+5] = 1.0;

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

enter image description here

Я думаю, что правильное решение - визуализировать одну точку контура и красную точку одну за другой. Как это сделать?

1 Ответ

0 голосов
/ 09 мая 2018

Если вы хотите визуализировать контуры для каждой точки в отдельности, вы можете просто сначала визуализировать немного большую белую точку, а затем визуализировать красную точку поверх нее. Если включено тестирование глубины, вам может потребоваться отрегулировать смещение многоугольника при отображении красной точки, чтобы предотвратить их скрытие за белыми.

...