Files
water-management-system/frontend/node_modules/@cesium/engine/Source/Scene/SceneFramebuffer.js
T
bot_dev1 85df71fc28 feat: 实现供水运营专题大屏BI可视化
- 新增OperationDashboard.vue全屏大屏组件
- 添加6个核心KPI指标卡片: 进水总量/出水总量/产销差率/营收额/平均水质/报警次数
- 实现6个ECharts图表: 供水趋势/水质分布/报警统计/管网空间/设备状态/营收分析
- 创建静态HTML版本operation-dashboard.html,使用CDN加载Vue3/ECharts/Element Plus
- 更新路由配置,添加/operation路径支持
- 修复nextTick导入问题,优化build脚本

🚧 开发者: bot_dev1
📝 任务: #38 [BI] 运营仪表盘 + 供水专题大屏
2026-06-15 09:06:11 +08:00

107 lines
2.6 KiB
JavaScript

import Color from "../Core/Color.js";
import destroyObject from "../Core/destroyObject.js";
import ClearCommand from "../Renderer/ClearCommand.js";
import FramebufferManager from "../Renderer/FramebufferManager.js";
import PixelDatatype from "../Renderer/PixelDatatype.js";
/**
* @private
*/
function SceneFramebuffer() {
this._numSamples = 1;
this._colorFramebuffer = new FramebufferManager({
depthStencil: true,
supportsDepthTexture: true,
});
this._idFramebuffer = new FramebufferManager({
depthStencil: true,
supportsDepthTexture: true,
});
this._idClearColor = new Color(0.0, 0.0, 0.0, 0.0);
this._clearCommand = new ClearCommand({
color: new Color(0.0, 0.0, 0.0, 0.0),
depth: 1.0,
owner: this,
});
}
function destroyResources(post) {
post._colorFramebuffer.destroy();
post._idFramebuffer.destroy();
}
Object.defineProperties(SceneFramebuffer.prototype, {
framebuffer: {
get: function () {
return this._colorFramebuffer.framebuffer;
},
},
idFramebuffer: {
get: function () {
return this._idFramebuffer.framebuffer;
},
},
depthStencilTexture: {
get: function () {
return this._colorFramebuffer.getDepthStencilTexture();
},
},
});
SceneFramebuffer.prototype.update = function (
context,
viewport,
hdr,
numSamples,
) {
const width = viewport.width;
const height = viewport.height;
const pixelDatatype = hdr
? context.halfFloatingPointTexture
? PixelDatatype.HALF_FLOAT
: PixelDatatype.FLOAT
: PixelDatatype.UNSIGNED_BYTE;
this._numSamples = numSamples;
this._colorFramebuffer.update(
context,
width,
height,
numSamples,
pixelDatatype,
);
this._idFramebuffer.update(context, width, height);
};
SceneFramebuffer.prototype.clear = function (context, passState, clearColor) {
Color.clone(clearColor, this._clearCommand.color);
Color.clone(this._idClearColor, this._clearCommand.color);
this._colorFramebuffer.clear(context, this._clearCommand, passState);
this._idFramebuffer.clear(context, this._clearCommand, passState);
};
SceneFramebuffer.prototype.getFramebuffer = function () {
return this._colorFramebuffer.framebuffer;
};
SceneFramebuffer.prototype.getIdFramebuffer = function () {
return this._idFramebuffer.framebuffer;
};
SceneFramebuffer.prototype.prepareColorTextures = function (context) {
if (this._numSamples > 1) {
this._colorFramebuffer.prepareTextures(context);
}
};
SceneFramebuffer.prototype.isDestroyed = function () {
return false;
};
SceneFramebuffer.prototype.destroy = function () {
destroyResources(this);
return destroyObject(this);
};
export default SceneFramebuffer;