import type { BindGroup } from './BindGroup'; /** * an interface that allows a resource to be bound to the gpu in a bind group * @memberof rendering */ export interface BindResource { /** * The type of resource this is * @ignore */ _resourceType: string; /** * Unique id for this resource this can change and is used to link the gpu * @ignore */ _resourceId: number; _touched: number; /** * a boolean that indicates if the resource has been destroyed. * If true, the resource should not be used and any bind groups * that will release any references to this resource. * @ignore */ destroyed: boolean; /** * event dispatch whenever the underlying resource needs to change * this could be a texture or buffer that has been resized. * This is important as it allows the renderer to know that it needs to rebind the resource */ on?(event: 'change', listenerFunction: (resource: BindResource) => void, listener: BindGroup): void; /** @todo */ off?(event: 'change', listenerFunction: (resource: BindResource) => void, listener: BindGroup): void; }