Rock: I believe we have almost the same approach in rendering 2d volume lines:
sub draw_line_glow ( byval x1 as single, byval y1 as single, byval x2 as single, byval y2 as single,_
byval lwidth as single, byval r as single, byval g as single, byval b as single,_
byval alpha as single)
dim as single nx,ny
nx = -(y2-y1)
ny = (x2-x1)
dim leng as single
leng = sqr(nx * nx + ny * ny )
nx = nx / leng
ny = ny / leng
nx *= lwidth/2
ny *= lwidth/2
dim as single lx1, ly1, lx2, ly2, lx3, ly3, lx4, ly4
lx1 = x2+nx
ly1 = y2+ny
lx2 = x2-nx
ly2 = y2-ny
lx3 = x1-nx
ly3 = y1-ny
lx4 = x1+nx
ly4 = y1+ny
glColor4f (r, g, b, alpha)
glPushmatrix()
glbegin(GL_QUADS)
glTexCoord2f( 0.5,0 )
glVertex3f( lx1,ly1,0 )
glTexCoord2f( 0.5,1 )
glVertex3f( lx2,ly2,0 )
glTexCoord2f( 0.5,1 )
glVertex3f( lx3, ly3,0 )
glTexCoord2f( 0.5,0 )
glVertex3f( lx4,ly4,0 )
glend()
'RIGHT
dim as single lx5, ly5,lx6,ly6,vx,vy
vx = (x2-x1)
vy = (y2-y1)
leng = sqr(vx * vx + vy * vy )
vx = vx / leng
vy = vy / leng
vx *= lwidth/2
vy *= lwidth/2
lx5 = lx1 + vx
ly5 = ly1 + vy
lx6 = lx2 + vx
ly6 = ly2 + vy
glbegin(GL_QUADS)
glTexCoord2f( 0.5,0 )
glVertex3f( lx1,ly1,0 )
glTexCoord2f( 1,0 )
glVertex3f( lx5,ly5,0 )
glTexCoord2f( 1,1 )
glVertex3f( lx6, ly6,0 )
glTexCoord2f( 0.5,1 )
glVertex3f( lx2,ly2,0 )
glend()
'LEFT
lx5 = lx4 -vx
ly5 = ly4 -vy
lx6 = lx3 -vx
ly6 = ly3 -vy
glbegin(GL_QUADS)
glTexCoord2f( 0.5,0 )
glVertex3f( lx4,ly4,0 )
glTexCoord2f( 1,0 )
glVertex3f( lx5,ly5,0 )
glTexCoord2f( 1,1 )
glVertex3f( lx6, ly6,0 )
glTexCoord2f( 0.5,1 )
glVertex3f( lx3,ly3,0 )
glend()
glPopMatrix()
end sub
Added a zip file for the exe and the a diagram x-out gave me which gave me the start: