Hello,
In my project I was using @types/cesium and everything was working fine.
Today, I decided to move to built in type of cesium, so instead of doing
Cesium.Blabla()
I am doing
import {Blabla} from 'cesium'
Blabla()
Now, this technically should break anything, but it broke some stuff…
I am trying to fix those issue, and I have the following problem now.
The following code
const rectangleInstance = new GeometryInstance({
geometry: new PolygonGeometry({
polygonHierarchy: new PolygonHierarchy(AreaUtils.getAreaCoordinates(area)),
}),
id: area.id.toString(),
attributes: {
color: new ColorGeometryInstanceAttribute(0, 0, 1.0, 0.2),
},
});
const newArea = new GroundPrimitive({
geometryInstances: rectangleInstance,
show: this.show,
});
this.viewer.scene.primitives.add(newArea);
break the viewer with the following error
Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.
In the library the error is due to
if (this._batchTable.attributes.length > 0) {
if (_Renderer_ContextLimits_js__WEBPACK_IMPORTED_MODULE_26__["default"].maximumVertexTextureImageUnits === 0) {
throw new _Core_RuntimeError_js__WEBPACK_IMPORTED_MODULE_22__["default"]("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");
}
this._batchTable.update(frameState);
}
But I have strictly no idea how to fix this.
I tried to remove
attributes: {
color: new ColorGeometryInstanceAttribute(0, 0, 1.0, 0.2),
},
but it now tell me that
TypeError: Cannot read property ‘material’ of undefined
EDIT : If I use the GLOBAL object instead of the import, it works again :
const t = window.Cesium;
const rectangleInstance = new t.GeometryInstance({
geometry: new t.PolygonGeometry({
polygonHierarchy: new t.PolygonHierarchy(AreaUtils.getAreaCoordinates(area)),
}),
id: area.id.toString(),
attributes: {
color: new t.ColorGeometryInstanceAttribute(0, 0, 1.0, 0.2),
},
});
const newArea = new t.GroundPrimitive({
geometryInstances: rectangleInstance,
show: this.show,
});
this.viewer.scene.primitives.add(newArea);
this.areaMap.set(area.id, newArea);
No error here.