molstar
Version:
A comprehensive macromolecular library.
85 lines (84 loc) • 3.88 kB
TypeScript
/**
* Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { GLRenderingContext } from './compat';
import { Framebuffer } from './framebuffer';
import { WebGLExtensions } from './extensions';
import { WebGLState } from './state';
import { PixelData } from '../../mol-util/image';
import { WebGLResources } from './resources';
import { RenderTarget } from './render-target';
import { BehaviorSubject } from 'rxjs';
import { now } from '../../mol-util/now';
import { Texture, TextureFilter } from './texture';
import { ComputeRenderable } from '../renderable';
export declare function getGLContext(canvas: HTMLCanvasElement, attribs?: WebGLContextAttributes & {
preferWebGl1?: boolean;
}): GLRenderingContext | null;
export declare function getErrorDescription(gl: GLRenderingContext, error: number): "context lost" | "no error" | "invalid enum" | "invalid value" | "invalid operation" | "invalid framebuffer operation" | "out of memory" | "unknown error";
export declare function checkError(gl: GLRenderingContext): void;
export declare function readPixels(gl: GLRenderingContext, x: number, y: number, width: number, height: number, buffer: Uint8Array | Float32Array | Int32Array): void;
declare function createStats(): {
resourceCounts: {
attribute: number;
elements: number;
framebuffer: number;
program: number;
renderbuffer: number;
shader: number;
texture: number;
vertexArray: number;
};
drawCount: number;
instanceCount: number;
instancedDrawCount: number;
};
export declare type WebGLStats = ReturnType<typeof createStats>;
/** A WebGL context object, including the rendering context, resource caches and counts */
export interface WebGLContext {
readonly gl: GLRenderingContext;
readonly isWebGL2: boolean;
readonly pixelRatio: number;
readonly extensions: WebGLExtensions;
readonly state: WebGLState;
readonly stats: WebGLStats;
readonly resources: WebGLResources;
readonly maxTextureSize: number;
readonly max3dTextureSize: number;
readonly maxRenderbufferSize: number;
readonly maxDrawBuffers: number;
readonly maxTextureImageUnits: number;
readonly isContextLost: boolean;
readonly contextRestored: BehaviorSubject<now.Timestamp>;
setContextLost: () => void;
handleContextRestored: (extraResets?: () => void) => void;
/** Cache for compute renderables, managed by consumers */
readonly namedComputeRenderables: {
[name: string]: ComputeRenderable<any>;
};
/** Cache for frambuffers, managed by consumers */
readonly namedFramebuffers: {
[name: string]: Framebuffer;
};
/** Cache for textures, managed by consumers */
readonly namedTextures: {
[name: string]: Texture;
};
createRenderTarget: (width: number, height: number, depth?: boolean, type?: 'uint8' | 'float32' | 'fp16', filter?: TextureFilter) => RenderTarget;
unbindFramebuffer: () => void;
readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array | Float32Array | Int32Array) => void;
readPixelsAsync: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => Promise<void>;
waitForGpuCommandsComplete: () => Promise<void>;
waitForGpuCommandsCompleteSync: () => void;
getDrawingBufferPixelData: () => PixelData;
clear: (red: number, green: number, blue: number, alpha: number) => void;
destroy: (options?: Partial<{
doNotForceWebGLContextLoss: boolean;
}>) => void;
}
export declare function createContext(gl: GLRenderingContext, props?: Partial<{
pixelScale: number;
}>): WebGLContext;
export {};