@lightningjs/renderer
Version:
Lightning 3 Renderer
28 lines (27 loc) • 1.37 kB
TypeScript
import type { FpsUpdatePayload, FrameTickPayload } from '../common/CommonTypes.js';
import type { ShaderMap } from '../core/CoreShaderManager.js';
import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js';
import type { IShaderController } from './IShaderController.js';
import type { RendererMain, RendererMainSettings, SpecificShaderRef } from './RendererMain.js';
/**
* This interface is to be implemented by Core Drivers
*
* @remarks
* Both the {@link MainCoreDriver} and the {@link ThreadXCoreDriver} exist
* that implement this interface to support both the single-threaded and
* multi-threaded Core modes.
*/
export interface ICoreDriver {
init(rendererMain: RendererMain, rendererSettings: Required<RendererMainSettings>, canvas: HTMLCanvasElement): Promise<void>;
createNode(props: INodeWritableProps): INode;
createTextNode(props: ITextNodeWritableProps): ITextNode;
createShaderController<ShType extends keyof ShaderMap>(shaderRef: SpecificShaderRef<ShType>): IShaderController;
destroyNode(node: INode): void;
getRootNode(): INode;
releaseTexture(textureDescId: number): void;
onCreateNode(node: INode): void;
onBeforeDestroyNode(node: INode): void;
onFpsUpdate(fpsData: FpsUpdatePayload): void;
onFrameTick(frameTickData: FrameTickPayload): void;
onIdle?(): void;
}