GG Chrome’s CPU profiling tool.
Turns out all the CPU was being spent constructing all of the segments for WebGL then the actual drawing step of CCDirector. Turns out it’s pretty expensive when you are constructing 500 segments, doing the math to figure out 8 vertices, and constructing 6 triangles to represent each segment. The reason this wasn’t noticeable on canvas is that it’s a simple element push into an array.
The solution is to try not to need to clear/redraw each update tick if you can get away with it. For me the solution is to instead of redrawing when the layer moved is to have the DrawNode a child of the node you expect might move. I suppose it’s cheaper to transform the already constructed vertices than it is to reconstruct them .