UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

61 lines (60 loc) 2.2 kB
import Texture from '../texture'; import ClientBuffer from './clientbuffer'; import ClientDataTexture from './clientdatatexture'; import DataTexture from './datatexture'; import Shader from './shader'; /** * A small WebGL utility class. * Makes it easier to generate shaders, textures, etc. */ export default class WebGL { gl: WebGLRenderingContext; currentShader: Shader | null; emptyTexture: WebGLTexture; extensions: { [key: string]: unknown; }; constructor(canvas: HTMLCanvasElement, options?: WebGLContextAttributes); /** * Ensures that an extension is available. * * If it is, it will be added to `extensions`. */ ensureExtension(name: string): boolean; createShader(vertexSource: string, fragmentSource: string): Shader; /** * Enables all vertex attribs between [start, end], including start and discluding end. */ enableVertexAttribs(start: number, end: number): void; /** * Disables all vertex attribs between [start, end], including start and discluding end. */ disableVertexAttribs(start: number, end: number): void; /** * Use a shader program. */ useShader(shader: Shader): void; /** * Bind a texture. * * If the given texture is invalid, a 2x2 black texture will be bound instead. */ bindTexture(texture: Texture | undefined | null, unit: number): void; bindTextureAndWrap(texture: Texture | undefined | null, unit: number, wrapS: number, wrapT: number): void; /** * Set the texture wrap and filter values. */ setTextureMode(wrapS: number, wrapT: number, magFilter: number, minFilter: number): void; /** * A shortcut for `new ClientBuffer(gl, size)`. */ createClientBuffer(size?: number): ClientBuffer; /** * A shortcut for `new DataTexture(gl, channels, width, height)`. */ createDataTexture(channels?: number, width?: number, height?: number): DataTexture; /** * A shortcut for `new ClientDataTexture(gl, width, height)`. */ createClientDataTexture(width?: number, height?: number): ClientDataTexture; }