如何在 OpenGL 中绘制一个点的轮廓?
How to draw outline of a point in OpenGL?
现在可以使用以下代码绘制点:
// 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;
但是当一个点与另一个点重叠时,它的轮廓被红点覆盖,因为轮廓点在所有红点之前渲染。
我认为正确的解决方案是一个一个地渲染一个轮廓点和一个红点。怎么做?
如果你想为每个点分别渲染轮廓,那么你可以简单地先渲染一个稍大的白点,然后在其上渲染红点。启用深度测试后,您可能需要在渲染红点时调整多边形偏移量,以防止它们隐藏在白色点后面。
现在可以使用以下代码绘制点:
// 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;
但是当一个点与另一个点重叠时,它的轮廓被红点覆盖,因为轮廓点在所有红点之前渲染。
我认为正确的解决方案是一个一个地渲染一个轮廓点和一个红点。怎么做?
如果你想为每个点分别渲染轮廓,那么你可以简单地先渲染一个稍大的白点,然后在其上渲染红点。启用深度测试后,您可能需要在渲染红点时调整多边形偏移量,以防止它们隐藏在白色点后面。