UNPKG

molstar

Version:

A comprehensive macromolecular library.

85 lines (84 loc) 3.88 kB
/** * 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 {};