Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

S3MCreateVertexJob.js 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const { Cesium } = DC.Namespace
  2. function S3MCreateVertexJob(){
  3. this.context = undefined;
  4. this.model = undefined;
  5. this.index = undefined;
  6. }
  7. S3MCreateVertexJob.prototype.set = function(context, model, index) {
  8. this.context = context;
  9. this.model = model;
  10. this.index = index;
  11. };
  12. S3MCreateVertexJob.prototype.execute = function(){
  13. let context = this.context;
  14. let index = this.index;
  15. let vertexPackage = this.model.vertexPackage;
  16. let attr = vertexPackage.vertexAttributes[index];
  17. if(!Cesium.defined(attr)){
  18. throw new Cesium.DeveloperError('attribute is null');
  19. }
  20. if(vertexPackage.instanceIndex !== -1 && !Cesium.defined(this.model.instanceBuffer)){
  21. if(!Cesium.defined(vertexPackage.instanceBuffer)){
  22. throw new Cesium.DeveloperError('instance buffer is null');
  23. }
  24. this.model.instanceBuffer = Cesium.Buffer.createVertexBuffer({
  25. context : context,
  26. typedArray : vertexPackage.instanceBuffer,
  27. usage : Cesium.BufferUsage.STATIC_DRAW
  28. });
  29. }
  30. if(attr.instanceDivisor === 1 && !Cesium.defined(attr.typedArray)){
  31. attr.vertexBuffer = this.model.instanceBuffer;
  32. return ;
  33. }
  34. if(!Cesium.defined(attr.vertexBuffer)){
  35. attr.vertexBuffer = Cesium.Buffer.createVertexBuffer({
  36. context : context,
  37. typedArray : attr.typedArray,
  38. usage : Cesium.BufferUsage.STATIC_DRAW
  39. });
  40. attr.typedArray = null;
  41. delete attr.typedArray;
  42. }
  43. };
  44. export default S3MCreateVertexJob;