1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import BoundingRectangle from "../Core/BoundingRectangle.js";
- import defined from "../Core/defined.js";
- import destroyObject from "../Core/destroyObject.js";
- import PixelFormat from "../Core/PixelFormat.js";
- import Framebuffer from "../Renderer/Framebuffer.js";
- import PassState from "../Renderer/PassState.js";
- import PixelDatatype from "../Renderer/PixelDatatype.js";
- import Texture from "../Renderer/Texture.js";
- /**
- * @private
- */
- function PickDepthFramebuffer() {
- this._depthStencilTexture = undefined;
- this._framebuffer = undefined;
- this._passState = undefined;
- }
- function destroyResources(pickDepth) {
- pickDepth._framebuffer =
- pickDepth._framebuffer && pickDepth._framebuffer.destroy();
- pickDepth._depthStencilTexture =
- pickDepth._depthStencilTexture && pickDepth._depthStencilTexture.destroy();
- }
- function createResources(pickDepth, context) {
- var width = context.drawingBufferWidth;
- var height = context.drawingBufferHeight;
- pickDepth._depthStencilTexture = new Texture({
- context: context,
- width: width,
- height: height,
- pixelFormat: PixelFormat.DEPTH_STENCIL,
- pixelDatatype: PixelDatatype.UNSIGNED_INT_24_8,
- });
- pickDepth._framebuffer = new Framebuffer({
- context: context,
- depthStencilTexture: pickDepth._depthStencilTexture,
- destroyAttachments: false,
- });
- var 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
- ) {
- var width = viewport.width;
- var height = viewport.height;
- if (
- !defined(this._framebuffer) ||
- width !== this._depthStencilTexture.width ||
- height !== this._depthStencilTexture.height
- ) {
- destroyResources(this);
- createResources(this, context);
- }
- var framebuffer = this._framebuffer;
- var 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;
|