Hi,
in my application I want to store ~16500 polylines in the same primitive collection. I can see that the polylines are all present in my data but the last ones (> 16384) do not appear on screen (tested with Cesium 1.33 under FF/chromium, debian stretch).
I couldn't find a clear explanation why but I suspect I am hitting a WebGL texture size limit so that my last lines are not sent to the GPU.
Can someone confirm? Is there a way to avoid this problem without splitting my data in several collections?
Minimal example for the sandcastle (20000 lines that should make a full circle):
var viewer = new Cesium.Viewer('cesiumContainer', { infoBox : false });
var collection = viewer.scene.primitives.add(
new Cesium.PolylineCollection()
);
var attrs = {
width: 2,
material: new Cesium.Material({
fabric: {type: 'Color', uniforms: {color: Cesium.Color.YELLOW}}
})
};
var R = 50;
var n = 20000;
for (var i=0; i < n; i++) {
collection.add(Object.assign({}, attrs, {
id: 'id_' + i,
positions: Cesium.Cartesian3.fromDegreesArray([
// 0, 0 + i/1000, 0, 1 + i/1000
R * Math.cos(2*i*Math.PI/n),
R * Math.sin(2*i*Math.PI/n),
R * Math.cos(2*(i+1)*Math.PI/n),
R * Math.sin(2*(i+1)*Math.PI/n),
]),
}));
}
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click) {
var pickedObject = viewer.scene.pick(click.position);
if (Cesium.defined(pickedObject)) {
console.log(pickedObject.id);
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);