import type { RenderPass, RenderTarget, SwapChain } from '@antv/g-device-api'; import type { IAttribute, IAttributeInitializationOptions, IBuffer, IBufferInitializationOptions, IClearOptions, IElements, IElementsInitializationOptions, IExtensions, IFramebuffer, IFramebufferInitializationOptions, IModel, IModelInitializationOptions, IReadPixelsOptions, IRenderConfig, IRendererService, ITexture2D, ITexture2DInitializationOptions } from '@antv/l7-core'; import { RenderCache } from './DeviceCache'; import DeviceFramebuffer from './DeviceFramebuffer'; /** * Device API renderer */ export default class DeviceRendererService implements IRendererService { uniformBuffers: IBuffer[]; extensionObject: IExtensions; private device; swapChain: SwapChain; private $container; private canvas; width: number; height: number; private isDirty; /** * Current render pass. */ renderPass: RenderPass; preRenderPass: RenderPass; mainColorRT: RenderTarget; mainDepthRT: RenderTarget; renderCache: RenderCache; /** * Current FBO. */ currentFramebuffer: DeviceFramebuffer | null; queryVerdorInfo: () => string; private viewportOrigin; init(canvas: HTMLCanvasElement, cfg: IRenderConfig): Promise; private createMainColorDepthRT; beginFrame(): void; endFrame(): void; getPointSizeRange(): any; testExtension(name: string): boolean; createModel: (options: IModelInitializationOptions) => IModel; createAttribute: (options: IAttributeInitializationOptions) => IAttribute; createBuffer: (options: IBufferInitializationOptions) => IBuffer; createElements: (options: IElementsInitializationOptions) => IElements; createTexture2D: (options: ITexture2DInitializationOptions) => ITexture2D; createFramebuffer: (options: IFramebufferInitializationOptions) => DeviceFramebuffer; useFramebuffer: (framebuffer: IFramebuffer | null, drawCommands: () => void) => void; useFramebufferAsync: (framebuffer: IFramebuffer | null, drawCommands: () => Promise) => Promise; clear: (options: IClearOptions) => void; viewport: ({ width, height, }: { x: number; y: number; width: number; height: number; }) => void; readPixels: (options: IReadPixelsOptions) => Uint8Array; readPixelsAsync: (options: IReadPixelsOptions) => Promise; getViewportSize: () => { width: number; height: number; }; getContainer: () => HTMLElement | null; getCanvas: () => HTMLCanvasElement; getGLContext: () => WebGLRenderingContext; setState(): void; setBaseState(): void; setCustomLayerDefaults(): void; setDirty(flag: boolean): void; getDirty(): boolean; destroy: () => void; }