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
TypeScript
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;
}