import type { Matrix4, Vector3, Vector4 } from '@galacean/effects-math/es/core/index'; import type { RendererComponent } from '../components'; import type { Engine } from '../engine'; import type { Material } from '../material'; import type { LostHandler, RestoreHandler } from '../utils'; import type { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer'; import type { Geometry } from './geometry'; import type { RenderFrame, RenderingData } from './render-frame'; import type { RenderPassClearAction } from './render-pass'; import type { ShaderLibrary } from './shader'; import { RenderTargetPool } from './render-target-pool'; import type { Texture } from '../texture'; export declare class Renderer implements LostHandler, RestoreHandler { engine: Engine; static create: (engine: Engine) => Renderer; /** * 存放渲染需要用到的数据 */ renderingData: RenderingData; renderTargetPool: RenderTargetPool; protected currentFramebuffer: Framebuffer | null; constructor(engine: Engine); setGlobalFloat(name: string, value: number): void; setGlobalInt(name: string, value: number): void; setGlobalVector4(name: string, value: Vector4): void; setGlobalVector3(name: string, value: Vector3): void; setGlobalMatrix(name: string, value: Matrix4): void; getFramebuffer(): Framebuffer; setFramebuffer(framebuffer: Framebuffer | null): void; setViewport(x: number, y: number, width: number, height: number): void; resize(canvasWidth: number, canvasHeight: number): void; clear(action: RenderPassClearAction): void; getWidth(): number; getHeight(): number; /** * @override * @param e */ lost(e: Event): void; /** * @override */ restore(): void; /** * * @override * @returns */ getShaderLibrary(): ShaderLibrary | undefined; renderRenderFrame(renderFrame: RenderFrame): void; renderMeshes(meshes: RendererComponent[]): void; drawGeometry(geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex?: number): void; getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): Framebuffer; releaseTemporaryRT(rt: Framebuffer): void; /** * 将源纹理复制到目标 Framebuffer,可使用自定义材质进行处理 * @param source - 源纹理 * @param destination - 目标 Framebuffer,如果为 null 则渲染到屏幕 * @param material - 可选的自定义材质,不传则使用默认复制材质 */ blit(source: Texture, destination: Framebuffer | null, material?: Material): void; dispose(): void; }