I know this question is more than one year old, but I would still like to give 2 cents.
I was able to make cylinder implants with a different technique, I took inspiration from the pymol code. Here is the basic strategy:
1) You want to draw a bounding box (a cuboid ) for the cylinder. To do this, you need 6 faces that translate into 18 triangles that translate into 36 triangular vertices. Assuming that you do not have access to the geometric shaders, you go to the vertex shader 36 times at the starting point of the cylinder, 36 times in the direction of the cylinder, and for each of these vertices you pass the corresponding point of the bounding box, For example, the vertex associated with point (0, 0, 0), means that it will be transformed in the lower left corner of the corner of the bounding box, (1,1,1) means the diagonally opposite point, etc.
2) In the vertex shader, you can build the points of the cylinder by moving each vertex (you have passed 36 equal vertices) in accordance with the corresponding points that you have passed. At the end of this step, you should have a bounding box for the cylinder.
3) Here you must restore the points on the visible surface of the bounding box. From the point of view that you get, you must complete the intersection of the rays-cylinders.
4) From the intersection point, you can restore depth and normal. You should also discard the intersection points that are outside the bounding box (this can happen when you look at the cylinder along its axis, the intersection point will be infinitely far).
By the way, this is a very difficult task if someone is interested in the source code here:
https://github.com/chemlab/chemlab/blob/master/chemlab/graphics/renderers/shaders/cylinderimp.frag
https://github.com/chemlab/chemlab/blob/master/chemlab/graphics/renderers/shaders/cylinderimp.vert