I’m currently plotting the trajectory of a moving point with a PolylineCollection().
The issue I’m facing is that when the point moves I am required to update the entire array of positions in the polyline. as :
polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(updatedBuffer);
This operation has to be done for every point added to the path.
I was using PathGraphics to visualize the path by providing the position as a TimeIntervalCollection however my application provides the new Points in the path at runtime and is not known beforehand.
I ran my application through the Chrome Profiler to see why the framerate was so low.
Based on the profiler the most time consuming operations are
- updating the polyline positions in the above call
- In Scene.rende() the maximum time is taken in the call createVertexArrays()
From this I perceive that Cesium creates a new VertexArray every time there is an update to position.
To improve performance I am considering disabling creation of a new l Vertex Array every time and instead creating one large array.
Subsequent calls to update position would cause the position to be added via a call to glBufferSubData().
Is this a viable solution and if so can someone point out how I should go about doing this?
#Attachment : Profile screenshot