12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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;
|