import type { TextureFormatColor, TextureFormatDepthStencil, TextureFormat } from "../../shadertypes/texture-types/texture-formats.js"; import type { Device } from "../device.js"; import { Resource, ResourceProps } from "./resource.js"; import { Texture } from "./texture.js"; import { TextureView } from "./texture-view.js"; export type FramebufferProps = ResourceProps & { width?: number; height?: number; colorAttachments?: (TextureView | Texture | TextureFormatColor)[]; depthStencilAttachment?: (TextureView | Texture | TextureFormatDepthStencil) | null; }; /** * Create new textures with correct size for all attachments. * @note resize() destroys existing textures (if size has changed). */ export declare abstract class Framebuffer extends Resource { get [Symbol.toStringTag](): string; /** Width of all attachments in this framebuffer */ width: number; /** Height of all attachments in this framebuffer */ height: number; /** Color attachments */ abstract colorAttachments: TextureView[]; /** Depth-stencil attachment, if provided */ abstract depthStencilAttachment: TextureView | null; constructor(device: Device, props?: FramebufferProps); /** * Create a copy of this framebuffer with new attached textures, with same props but of the specified size. * @note Does not copy contents of the attached textures. */ clone(size?: { width: number; height: number; }): Framebuffer; /** * Resizes all attachments * @note resize() destroys existing textures (if size has changed). * @deprecated Use framebuffer.clone() */ resize(size: { width: number; height: number; }): void; resize(size: [width: number, height: number]): void; resize(): void; /** Auto creates any textures */ protected autoCreateAttachmentTextures(): void; /** Create a color texture */ protected createColorTexture(format: TextureFormat, index: number): Texture; /** Create depth stencil texture */ protected createDepthStencilTexture(format: TextureFormat): Texture; /** * Default implementation of resize * Creates new textures with correct size for all attachments. * and destroys existing textures if owned */ protected resizeAttachments(width: number, height: number): void; /** Implementation is expected to update any underlying binding (WebGL framebuffer attachment) */ protected abstract updateAttachments(): void; static defaultProps: Required; } //# sourceMappingURL=framebuffer.d.ts.map