Add existing to tracked
This commit is contained in:
+79
@@ -0,0 +1,79 @@
|
||||
import BoundingRectangle from "../Core/BoundingRectangle.js";
|
||||
import destroyObject from "../Core/destroyObject.js";
|
||||
import FramebufferManager from "../Renderer/FramebufferManager.js";
|
||||
import PassState from "../Renderer/PassState.js";
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function PickDepthFramebuffer() {
|
||||
this._framebuffer = new FramebufferManager({
|
||||
color: false,
|
||||
depthStencil: true,
|
||||
supportsDepthTexture: true,
|
||||
});
|
||||
this._passState = undefined;
|
||||
}
|
||||
|
||||
Object.defineProperties(PickDepthFramebuffer.prototype, {
|
||||
framebuffer: {
|
||||
get: function () {
|
||||
return this._framebuffer.framebuffer;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
function destroyResources(pickDepth) {
|
||||
pickDepth._framebuffer.destroy();
|
||||
}
|
||||
|
||||
function createResources(pickDepth, context) {
|
||||
const width = context.drawingBufferWidth;
|
||||
const height = context.drawingBufferHeight;
|
||||
|
||||
pickDepth._framebuffer.update(context, width, height);
|
||||
|
||||
const passState = new PassState(context);
|
||||
passState.blendingEnabled = false;
|
||||
passState.scissorTest = {
|
||||
enabled: true,
|
||||
rectangle: new BoundingRectangle(),
|
||||
};
|
||||
passState.viewport = new BoundingRectangle();
|
||||
pickDepth._passState = passState;
|
||||
}
|
||||
|
||||
PickDepthFramebuffer.prototype.update = function (
|
||||
context,
|
||||
drawingBufferPosition,
|
||||
viewport,
|
||||
) {
|
||||
const width = viewport.width;
|
||||
const height = viewport.height;
|
||||
|
||||
if (this._framebuffer.isDirty(width, height)) {
|
||||
createResources(this, context);
|
||||
}
|
||||
|
||||
const framebuffer = this.framebuffer;
|
||||
const passState = this._passState;
|
||||
passState.framebuffer = framebuffer;
|
||||
passState.viewport.width = width;
|
||||
passState.viewport.height = height;
|
||||
passState.scissorTest.rectangle.x = drawingBufferPosition.x;
|
||||
passState.scissorTest.rectangle.y = height - drawingBufferPosition.y;
|
||||
passState.scissorTest.rectangle.width = 1;
|
||||
passState.scissorTest.rectangle.height = 1;
|
||||
|
||||
return passState;
|
||||
};
|
||||
|
||||
PickDepthFramebuffer.prototype.isDestroyed = function () {
|
||||
return false;
|
||||
};
|
||||
|
||||
PickDepthFramebuffer.prototype.destroy = function () {
|
||||
destroyResources(this);
|
||||
return destroyObject(this);
|
||||
};
|
||||
export default PickDepthFramebuffer;
|
||||
Reference in New Issue
Block a user