import { Dictionary } from "../common"; import * as Specification from "../specification"; import { Binding, ShiftBinding, TextureBinding } from "../binding/binding"; import { Mark } from "../mark/mark"; export declare abstract class PlatformMarkData { } export declare abstract class PlatformMark { /** Is the input attribute compiled as uniform? */ abstract isUniform(name: string): boolean; /** Update a uniform in the spec, on isUniform(name) == true */ abstract updateUniform(name: string, value: Specification.Value): void; abstract updateTexture(name: string, value: TextureBinding): void; abstract uploadData(data: any[][]): PlatformMarkData; /** Render the graphics */ abstract render(data: PlatformMarkData, onRender: (i: number) => void): void; } export declare class Viewport { } export declare class Viewport2D extends Viewport { width: number; height: number; constructor(width: number, height: number); } export declare class Viewport3D extends Viewport { width: number; height: number; fov: number; constructor(width: number, height: number, fov: number); } export declare abstract class Platform { /** Register a platform */ static Register(name: string, ctor: (...args: any[]) => Platform): void; /** Create a platform */ static Create(name: string, ...args: any[]): Platform; /** Compile a mark specification to PlatformMark object */ abstract compile(mark: Mark, spec: Specification.Mark, shader: Specification.Shader, bindings: Dictionary, shfitBindings: Dictionary): PlatformMark; } export declare function platform(name: string, ...args: any[]): Platform;