interface WebGLContextAttributes {
	alpha : boolean;
	depth : boolean;
	stencil : boolean;
	antialias : boolean;
	premultipliedAlpha : boolean;
}

interface WebGLObject {
	$__dummyprop__WebGLObject : any;
}

interface WebGLBuffer extends WebGLObject {
	$__dummyprop__WebGLBuffer : any;
}

interface WebGLFramebuffer extends WebGLObject {
	$__dummyprop__WebGLFramebuffer : any;
}

interface WebGLProgram extends WebGLObject {
	$__dummyprop__WebGLProgram : any;
}

interface WebGLRenderbuffer extends WebGLObject {
	$__dummyprop__WebGLRenderbuffer : any;
}

interface WebGLShader extends WebGLObject {
	$__dummyprop__WebGLShader : any;
}

interface WebGLTexture extends WebGLObject {
	$__dummyprop__WebGLTexture : any;
}

interface WebGLUniformLocation {
	$__dummyprop__WebGLUniformLocation : any;
}

interface WebGLActiveInfo {
	size : number;
	type : number;
	name : string;
}

interface WebGLRenderingContext {
	DEPTH_BUFFER_BIT : number;
	STENCIL_BUFFER_BIT : number;
	COLOR_BUFFER_BIT : number;
	POINTS : number;
	LINES : number;
	LINE_LOOP : number;
	LINE_STRIP : number;
	TRIANGLES : number;
	TRIANGLE_STRIP : number;
	TRIANGLE_FAN : number;
	ZERO : number;
	ONE : number;
	SRC_COLOR : number;
	ONE_MINUS_SRC_COLOR : number;
	SRC_ALPHA : number;
	ONE_MINUS_SRC_ALPHA : number;
	DST_ALPHA : number;
	ONE_MINUS_DST_ALPHA : number;
	DST_COLOR : number;
	ONE_MINUS_DST_COLOR : number;
	SRC_ALPHA_SATURATE : number;
	FUNC_ADD : number;
	BLEND_EQUATION : number;
	BLEND_EQUATION_RGB : number;
	BLEND_EQUATION_ALPHA : number;
	FUNC_SUBTRACT : number;
	FUNC_REVERSE_SUBTRACT : number;
	BLEND_DST_RGB : number;
	BLEND_SRC_RGB : number;
	BLEND_DST_ALPHA : number;
	BLEND_SRC_ALPHA : number;
	CONSTANT_COLOR : number;
	ONE_MINUS_CONSTANT_COLOR : number;
	CONSTANT_ALPHA : number;
	ONE_MINUS_CONSTANT_ALPHA : number;
	BLEND_COLOR : number;
	ARRAY_BUFFER : number;
	ELEMENT_ARRAY_BUFFER : number;
	ARRAY_BUFFER_BINDING : number;
	ELEMENT_ARRAY_BUFFER_BINDING : number;
	STREAM_DRAW : number;
	STATIC_DRAW : number;
	DYNAMIC_DRAW : number;
	BUFFER_SIZE : number;
	BUFFER_USAGE : number;
	CURRENT_VERTEX_ATTRIB : number;
	FRONT : number;
	BACK : number;
	FRONT_AND_BACK : number;
	TEXTURE_2D : number;
	CULL_FACE : number;
	BLEND : number;
	DITHER : number;
	STENCIL_TEST : number;
	DEPTH_TEST : number;
	SCISSOR_TEST : number;
	POLYGON_OFFSET_FILL : number;
	SAMPLE_ALPHA_TO_COVERAGE : number;
	SAMPLE_COVERAGE : number;
	NO_ERROR : number;
	INVALID_ENUM : number;
	INVALID_VALUE : number;
	INVALID_OPERATION : number;
	OUT_OF_MEMORY : number;
	CW : number;
	CCW : number;
	LINE_WIDTH : number;
	ALIASED_POINT_SIZE_RANGE : number;
	ALIASED_LINE_WIDTH_RANGE : number;
	CULL_FACE_MODE : number;
	FRONT_FACE : number;
	DEPTH_RANGE : number;
	DEPTH_WRITEMASK : number;
	DEPTH_CLEAR_VALUE : number;
	DEPTH_FUNC : number;
	STENCIL_CLEAR_VALUE : number;
	STENCIL_FUNC : number;
	STENCIL_FAIL : number;
	STENCIL_PASS_DEPTH_FAIL : number;
	STENCIL_PASS_DEPTH_PASS : number;
	STENCIL_REF : number;
	STENCIL_VALUE_MASK : number;
	STENCIL_WRITEMASK : number;
	STENCIL_BACK_FUNC : number;
	STENCIL_BACK_FAIL : number;
	STENCIL_BACK_PASS_DEPTH_FAIL : number;
	STENCIL_BACK_PASS_DEPTH_PASS : number;
	STENCIL_BACK_REF : number;
	STENCIL_BACK_VALUE_MASK : number;
	STENCIL_BACK_WRITEMASK : number;
	VIEWPORT : number;
	SCISSOR_BOX : number;
	COLOR_CLEAR_VALUE : number;
	COLOR_WRITEMASK : number;
	UNPACK_ALIGNMENT : number;
	PACK_ALIGNMENT : number;
	MAX_TEXTURE_SIZE : number;
	MAX_VIEWPORT_DIMS : number;
	SUBPIXEL_BITS : number;
	RED_BITS : number;
	GREEN_BITS : number;
	BLUE_BITS : number;
	ALPHA_BITS : number;
	DEPTH_BITS : number;
	STENCIL_BITS : number;
	POLYGON_OFFSET_UNITS : number;
	POLYGON_OFFSET_FACTOR : number;
	TEXTURE_BINDING_2D : number;
	SAMPLE_BUFFERS : number;
	SAMPLES : number;
	SAMPLE_COVERAGE_VALUE : number;
	SAMPLE_COVERAGE_INVERT : number;
	NUM_COMPRESSED_TEXTURE_FORMATS : number;
	COMPRESSED_TEXTURE_FORMATS : number;
	DONT_CARE : number;
	FASTEST : number;
	NICEST : number;
	GENERATE_MIPMAP_HINT : number;
	BYTE : number;
	UNSIGNED_BYTE : number;
	SHORT : number;
	UNSIGNED_SHORT : number;
	INT : number;
	UNSIGNED_INT : number;
	FLOAT : number;
	DEPTH_COMPONENT : number;
	ALPHA : number;
	RGB : number;
	RGBA : number;
	LUMINANCE : number;
	LUMINANCE_ALPHA : number;
	UNSIGNED_SHORT_4_4_4_4 : number;
	UNSIGNED_SHORT_5_5_5_1 : number;
	UNSIGNED_SHORT_5_6_5 : number;
	FRAGMENT_SHADER : number;
	VERTEX_SHADER : number;
	MAX_VERTEX_ATTRIBS : number;
	MAX_VERTEX_UNIFORM_VECTORS : number;
	MAX_VARYING_VECTORS : number;
	MAX_COMBINED_TEXTURE_IMAGE_UNITS : number;
	MAX_VERTEX_TEXTURE_IMAGE_UNITS : number;
	MAX_TEXTURE_IMAGE_UNITS : number;
	MAX_FRAGMENT_UNIFORM_VECTORS : number;
	SHADER_TYPE : number;
	DELETE_STATUS : number;
	LINK_STATUS : number;
	VALIDATE_STATUS : number;
	ATTACHED_SHADERS : number;
	ACTIVE_UNIFORMS : number;
	ACTIVE_UNIFORM_MAX_LENGTH : number;
	ACTIVE_ATTRIBUTES : number;
	ACTIVE_ATTRIBUTE_MAX_LENGTH : number;
	SHADING_LANGUAGE_VERSION : number;
	CURRENT_PROGRAM : number;
	NEVER : number;
	LESS : number;
	EQUAL : number;
	LEQUAL : number;
	GREATER : number;
	NOTEQUAL : number;
	GEQUAL : number;
	ALWAYS : number;
	KEEP : number;
	REPLACE : number;
	INCR : number;
	DECR : number;
	INVERT : number;
	INCR_WRAP : number;
	DECR_WRAP : number;
	VENDOR : number;
	RENDERER : number;
	VERSION : number;
	NEAREST : number;
	LINEAR : number;
	NEAREST_MIPMAP_NEAREST : number;
	LINEAR_MIPMAP_NEAREST : number;
	NEAREST_MIPMAP_LINEAR : number;
	LINEAR_MIPMAP_LINEAR : number;
	TEXTURE_MAG_FILTER : number;
	TEXTURE_MIN_FILTER : number;
	TEXTURE_WRAP_S : number;
	TEXTURE_WRAP_T : number;
	TEXTURE : number;
	TEXTURE_CUBE_MAP : number;
	TEXTURE_BINDING_CUBE_MAP : number;
	TEXTURE_CUBE_MAP_POSITIVE_X : number;
	TEXTURE_CUBE_MAP_NEGATIVE_X : number;
	TEXTURE_CUBE_MAP_POSITIVE_Y : number;
	TEXTURE_CUBE_MAP_NEGATIVE_Y : number;
	TEXTURE_CUBE_MAP_POSITIVE_Z : number;
	TEXTURE_CUBE_MAP_NEGATIVE_Z : number;
	MAX_CUBE_MAP_TEXTURE_SIZE : number;
	TEXTURE0 : number;
	TEXTURE1 : number;
	TEXTURE2 : number;
	TEXTURE3 : number;
	TEXTURE4 : number;
	TEXTURE5 : number;
	TEXTURE6 : number;
	TEXTURE7 : number;
	TEXTURE8 : number;
	TEXTURE9 : number;
	TEXTURE10 : number;
	TEXTURE11 : number;
	TEXTURE12 : number;
	TEXTURE13 : number;
	TEXTURE14 : number;
	TEXTURE15 : number;
	TEXTURE16 : number;
	TEXTURE17 : number;
	TEXTURE18 : number;
	TEXTURE19 : number;
	TEXTURE20 : number;
	TEXTURE21 : number;
	TEXTURE22 : number;
	TEXTURE23 : number;
	TEXTURE24 : number;
	TEXTURE25 : number;
	TEXTURE26 : number;
	TEXTURE27 : number;
	TEXTURE28 : number;
	TEXTURE29 : number;
	TEXTURE30 : number;
	TEXTURE31 : number;
	ACTIVE_TEXTURE : number;
	REPEAT : number;
	CLAMP_TO_EDGE : number;
	MIRRORED_REPEAT : number;
	FLOAT_VEC2 : number;
	FLOAT_VEC3 : number;
	FLOAT_VEC4 : number;
	INT_VEC2 : number;
	INT_VEC3 : number;
	INT_VEC4 : number;
	BOOL : number;
	BOOL_VEC2 : number;
	BOOL_VEC3 : number;
	BOOL_VEC4 : number;
	FLOAT_MAT2 : number;
	FLOAT_MAT3 : number;
	FLOAT_MAT4 : number;
	SAMPLER_2D : number;
	SAMPLER_CUBE : number;
	VERTEX_ATTRIB_ARRAY_ENABLED : number;
	VERTEX_ATTRIB_ARRAY_SIZE : number;
	VERTEX_ATTRIB_ARRAY_STRIDE : number;
	VERTEX_ATTRIB_ARRAY_TYPE : number;
	VERTEX_ATTRIB_ARRAY_NORMALIZED : number;
	VERTEX_ATTRIB_ARRAY_POINTER : number;
	VERTEX_ATTRIB_ARRAY_BUFFER_BINDING : number;
	COMPILE_STATUS : number;
	INFO_LOG_LENGTH : number;
	SHADER_SOURCE_LENGTH : number;
	LOW_FLOAT : number;
	MEDIUM_FLOAT : number;
	HIGH_FLOAT : number;
	LOW_INT : number;
	MEDIUM_INT : number;
	HIGH_INT : number;
	FRAMEBUFFER : number;
	RENDERBUFFER : number;
	RGBA4 : number;
	RGB5_A1 : number;
	RGB565 : number;
	DEPTH_COMPONENT16 : number;
	STENCIL_INDEX : number;
	STENCIL_INDEX8 : number;
	DEPTH_STENCIL : number;
	RENDERBUFFER_WIDTH : number;
	RENDERBUFFER_HEIGHT : number;
	RENDERBUFFER_INTERNAL_FORMAT : number;
	RENDERBUFFER_RED_SIZE : number;
	RENDERBUFFER_GREEN_SIZE : number;
	RENDERBUFFER_BLUE_SIZE : number;
	RENDERBUFFER_ALPHA_SIZE : number;
	RENDERBUFFER_DEPTH_SIZE : number;
	RENDERBUFFER_STENCIL_SIZE : number;
	FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE : number;
	FRAMEBUFFER_ATTACHMENT_OBJECT_NAME : number;
	FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL : number;
	FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE : number;
	COLOR_ATTACHMENT0 : number;
	DEPTH_ATTACHMENT : number;
	STENCIL_ATTACHMENT : number;
	DEPTH_STENCIL_ATTACHMENT : number;
	NONE : number;
	FRAMEBUFFER_COMPLETE : number;
	FRAMEBUFFER_INCOMPLETE_ATTACHMENT : number;
	FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : number;
	FRAMEBUFFER_INCOMPLETE_DIMENSIONS : number;
	FRAMEBUFFER_UNSUPPORTED : number;
	FRAMEBUFFER_BINDING : number;
	RENDERBUFFER_BINDING : number;
	MAX_RENDERBUFFER_SIZE : number;
	INVALID_FRAMEBUFFER_OPERATION : number;
	UNPACK_FLIP_Y_WEBGL : number;
	UNPACK_PREMULTIPLY_ALPHA_WEBGL : number;
	CONTEXT_LOST_WEBGL : number;
	UNPACK_COLORSPACE_CONVERSION_WEBGL : number;
	BROWSER_DEFAULT_WEBGL : number;
	canvas : HTMLCanvasElement;
	getContextAttributes() : WebGLContextAttributes;
	isContextLost() : boolean;
	getSupportedExtensions() : string[];
	getExtension(name : string) : any;
	activeTexture(texture : number) : void;
	attachShader(program : WebGLProgram, shader : WebGLShader) : void;
	bindAttribLocation(program : WebGLProgram, index : number, name : string) : void;
	bindBuffer(target : number, buffer : WebGLBuffer) : void;
	bindFramebuffer(target : number, framebuffer : WebGLFramebuffer) : void;
	bindRenderbuffer(target : number, renderbuffer : WebGLRenderbuffer) : void;
	bindTexture(target : number, texture : WebGLTexture) : void;
	blendColor(red : number, green : number, blue : number, alpha : number) : void;
	blendEquation(mode : number) : void;
	blendEquationSeparate(modeRGB : number, modeAlpha : number) : void;
	blendFunc(sfactor : number, dfactor : number) : void;
	blendFuncSeparate(srcRGB : number, dstRGB : number, srcAlpha : number, dstAlpha : number) : void;
	bufferData(target : number, size : number, usage : number) : void;
	bufferData(target : number, data : ArrayBufferView, usage : number) : void;
	bufferData(target : number, data : ArrayBuffer, usage : number) : void;
	bufferSubData(target : number, offset : number, data : ArrayBufferView) : void;
	bufferSubData(target : number, offset : number, data : ArrayBuffer) : void;
	checkFramebufferStatus(target : number) : number;
	clear(mask : number) : void;
	clearColor(red : number, green : number, blue : number, alpha : number) : void;
	clearDepth(depth : number) : void;
	clearStencil(s : number) : void;
	colorMask(red : boolean, green : boolean, blue : boolean, alpha : boolean) : void;
	compileShader(shader : WebGLShader) : void;
	copyTexImage2D(target : number, level : number, internalformat : number, x : number, y : number, width : number, height : number, border : number) : void;
	copyTexSubImage2D(target : number, level : number, xoffset : number, yoffset : number, x : number, y : number, width : number, height : number) : void;
	createBuffer() : WebGLBuffer;
	createFramebuffer() : WebGLFramebuffer;
	createProgram() : WebGLProgram;
	createRenderbuffer() : WebGLRenderbuffer;
	createShader(type : number) : WebGLShader;
	createTexture() : WebGLTexture;
	cullFace(mode : number) : void;
	deleteBuffer(buffer : WebGLBuffer) : void;
	deleteFramebuffer(framebuffer : WebGLFramebuffer) : void;
	deleteProgram(program : WebGLProgram) : void;
	deleteRenderbuffer(renderbuffer : WebGLRenderbuffer) : void;
	deleteShader(shader : WebGLShader) : void;
	deleteTexture(texture : WebGLTexture) : void;
	depthFunc(func : number) : void;
	depthMask(flag : boolean) : void;
	depthRange(zNear : number, zFar : number) : void;
	detachShader(program : WebGLProgram, shader : WebGLShader) : void;
	disable(cap : number) : void;
	disableVertexAttribArray(index : number) : void;
	drawArrays(mode : number, first : number, count : number) : void;
	drawElements(mode : number, count : number, type : number, offset : number) : void;
	enable(cap : number) : void;
	enableVertexAttribArray(index : number) : void;
	finish() : void;
	flush() : void;
	framebufferRenderbuffer(target : number, attachment : number, renderbuffertarget : number, renderbuffer : WebGLRenderbuffer) : void;
	framebufferTexture2D(target : number, attachment : number, textarget : number, texture : WebGLTexture, level : number) : void;
	frontFace(mode : number) : void;
	generateMipmap(target : number) : void;
	getActiveAttrib(program : WebGLProgram, index : number) : WebGLActiveInfo;
	getActiveUniform(program : WebGLProgram, index : number) : WebGLActiveInfo;
	getAttachedShaders(program : WebGLProgram) : WebGLShader[];
	getAttribLocation(program : WebGLProgram, name : string) : number;
	getParameter(pname : number) : any;
	getBufferParameter(target : number, pname : number) : any;
	getError() : number;
	getFramebufferAttachmentParameter(target : number, attachment : number, pname : number) : any;
	getProgramParameter(program : WebGLProgram, pname : number) : any;
	getProgramInfoLog(program : WebGLProgram) : string;
	getRenderbufferParameter(target : number, pname : number) : any;
	getShaderParameter(shader : WebGLShader, pname : number) : any;
	getShaderInfoLog(shader : WebGLShader) : string;
	getShaderSource(shader : WebGLShader) : string;
	getTexParameter(target : number, pname : number) : any;
	getUniform(program : WebGLProgram, location : WebGLUniformLocation) : any;
	getUniformLocation(program : WebGLProgram, name : string) : WebGLUniformLocation;
	getVertexAttrib(index : number, pname : number) : any;
	getVertexAttribOffset(index : number, pname : number) : number;
	hint(target : number, mode : number) : void;
	isBuffer(buffer : WebGLBuffer) : boolean;
	isEnabled(cap : number) : boolean;
	isFramebuffer(framebuffer : WebGLFramebuffer) : boolean;
	isProgram(program : WebGLProgram) : boolean;
	isRenderbuffer(renderbuffer : WebGLRenderbuffer) : boolean;
	isShader(shader : WebGLShader) : boolean;
	isTexture(texture : WebGLTexture) : boolean;
	lineWidth(width : number) : void;
	linkProgram(program : WebGLProgram) : void;
	pixelStorei(pname : number, param : number) : void;
	polygonOffset(factor : number, units : number) : void;
	readPixels(x : number, y : number, width : number, height : number, format : number, type : number, pixels : ArrayBufferView) : void;
	renderbufferStorage(target : number, internalformat : number, width : number, height : number) : void;
	sampleCoverage(value : number, invert : boolean) : void;
	scissor(x : number, y : number, width : number, height : number) : void;
	shaderSource(shader : WebGLShader, source : string) : void;
	stencilFunc(func : number, ref : number, mask : number) : void;
	stencilFuncSeparate(face : number, func : number, ref : number, mask : number) : void;
	stencilMask(mask : number) : void;
	stencilMaskSeparate(face : number, mask : number) : void;
	stencilOp(fail : number, zfail : number, zpass : number) : void;
	stencilOpSeparate(face : number, fail : number, zfail : number, zpass : number) : void;
	texImage2D(target : number, level : number, internalformat : number, width : number, height : number, border : number, format : number, type : number, pixels : ArrayBufferView) : void;
	texImage2D(target : number, level : number, internalformat : number, format : number, type : number, pixels : ImageData) : void;
	texImage2D(target : number, level : number, internalformat : number, format : number, type : number, image : HTMLImageElement) : void;
	texImage2D(target : number, level : number, internalformat : number, format : number, type : number, canvas : HTMLCanvasElement) : void;
	texImage2D(target : number, level : number, internalformat : number, format : number, type : number, video : HTMLVideoElement) : void;
	texParameterf(target : number, pname : number, param : number) : void;
	texParameteri(target : number, pname : number, param : number) : void;
	texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, width : number, height : number, format : number, type : number, pixels : ArrayBufferView) : void;
	texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, pixels : ImageData) : void;
	texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, image : HTMLImageElement) : void;
	texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, canvas : HTMLCanvasElement) : void;
	texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, video : HTMLVideoElement) : void;
	uniform1f(location : WebGLUniformLocation, x : number) : void;
	uniform1fv(location : WebGLUniformLocation, v : Float32Array) : void;
	uniform1fv(location : WebGLUniformLocation, v : number[]) : void;
	uniform1i(location : WebGLUniformLocation, x : number) : void;
	uniform1iv(location : WebGLUniformLocation, v : Int32Array) : void;
	uniform1iv(location : WebGLUniformLocation, v : number[]) : void;
	uniform2f(location : WebGLUniformLocation, x : number, y : number) : void;
	uniform2fv(location : WebGLUniformLocation, v : Float32Array) : void;
	uniform2fv(location : WebGLUniformLocation, v : number[]) : void;
	uniform2i(location : WebGLUniformLocation, x : number, y : number) : void;
	uniform2iv(location : WebGLUniformLocation, v : Int32Array) : void;
	uniform2iv(location : WebGLUniformLocation, v : number[]) : void;
	uniform3f(location : WebGLUniformLocation, x : number, y : number, z : number) : void;
	uniform3fv(location : WebGLUniformLocation, v : Float32Array) : void;
	uniform3fv(location : WebGLUniformLocation, v : number[]) : void;
	uniform3i(location : WebGLUniformLocation, x : number, y : number, z : number) : void;
	uniform3iv(location : WebGLUniformLocation, v : Int32Array) : void;
	uniform3iv(location : WebGLUniformLocation, v : number[]) : void;
	uniform4f(location : WebGLUniformLocation, x : number, y : number, z : number, w : number) : void;
	uniform4fv(location : WebGLUniformLocation, v : Float32Array) : void;
	uniform4fv(location : WebGLUniformLocation, v : number[]) : void;
	uniform4i(location : WebGLUniformLocation, x : number, y : number, z : number, w : number) : void;
	uniform4iv(location : WebGLUniformLocation, v : Int32Array) : void;
	uniform4iv(location : WebGLUniformLocation, v : number[]) : void;
	uniformMatrix2fv(location : WebGLUniformLocation, transpose : boolean, value : Float32Array) : void;
	uniformMatrix2fv(location : WebGLUniformLocation, transpose : boolean, value : number[]) : void;
	uniformMatrix3fv(location : WebGLUniformLocation, transpose : boolean, value : Float32Array) : void;
	uniformMatrix3fv(location : WebGLUniformLocation, transpose : boolean, value : number[]) : void;
	uniformMatrix4fv(location : WebGLUniformLocation, transpose : boolean, value : Float32Array) : void;
	uniformMatrix4fv(location : WebGLUniformLocation, transpose : boolean, value : number[]) : void;
	useProgram(program : WebGLProgram) : void;
	validateProgram(program : WebGLProgram) : void;
	vertexAttrib1f(indx : number, x : number) : void;
	vertexAttrib1fv(indx : number, values : Float32Array) : void;
	vertexAttrib1fv(indx : number, values : number[]) : void;
	vertexAttrib2f(indx : number, x : number, y : number) : void;
	vertexAttrib2fv(indx : number, values : Float32Array) : void;
	vertexAttrib2fv(indx : number, values : number[]) : void;
	vertexAttrib3f(indx : number, x : number, y : number, z : number) : void;
	vertexAttrib3fv(indx : number, values : Float32Array) : void;
	vertexAttrib3fv(indx : number, values : number[]) : void;
	vertexAttrib4f(indx : number, x : number, y : number, z : number, w : number) : void;
	vertexAttrib4fv(indx : number, values : Float32Array) : void;
	vertexAttrib4fv(indx : number, values : number[]) : void;
	vertexAttribPointer(indx : number, size : number, type : number, normalized : boolean, stride : number, offset : number) : void;
	viewport(x : number, y : number, width : number, height : number) : void;
}

interface WebGLContextEvent extends Event {
	statusMessage : string;
	initWebGLContextEvent(typeArg : string, canBubbleArg : boolean, cancelableArg : boolean, statusMessageArg : string) : void;
}

//Extend the window object with cross Browser callbacks so TS will not complain 
//Also add the (non-standard) Canvas Element parameter for performance improvement 
interface WindowAnimationTiming {
	requestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
	//msRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
	mozRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
	webkitRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
	oRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;	 

	cancelRequestAnimationFrame(handle: number): void;
	//msCancelRequestAnimationFrame(handle: number): void;
	mozCancelRequestAnimationFrame(handle: number): void;
	webkitCancelRequestAnimationFrame(handle: number): void;
	oCancelRequestAnimationFrame(handle: number): void;
}

//To make WebGL work 
interface HTMLCanvasElement {
	getContext(contextId: string, params : {}): WebGLRenderingContext;
}