├── .gitignore ├── README.md ├── genTexImageOverloads.ts ├── index.d.ts ├── package-lock.json ├── package.json ├── tsconfig.json ├── tslint.json ├── webgl.d.ts ├── webgl2-tests.ts └── webgl2.d.ts /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # webgl-strict-types 2 | Strict types for WebGL and WebGL 2.0. 3 | 4 | The included TypeScript typings for WebGL type all enum parameters as generic `GLenum = number`, as indeed does the specification. 5 | This is too broad in basically all cases, for example, `bindRenderbuffer(target: GLenum, buffer: WebGLRenderbuffer | null)` 6 | accepts any number as target when in fact `gl.RENDERBUFFER` is the only valid value. 7 | 8 | A number of other cases can also 9 | be modelled more accurately, such as literal number types for some parameters, as well as preventing `WebGLObject` types 10 | (such as `WebGLBuffer` and `WebGLRenderbuffer`) from being assignable to each other. 11 | 12 | 13 | ## Installation 14 | ``` 15 | npm install -D webgl-strict-types 16 | ```` 17 | ## Usage 18 | You need to explicitly include the types in your compilation. Use a triple slash statement: 19 | ```ts 20 | /// 21 | ``` 22 | Alternatively, include them in your tsconfig: 23 | ```json 24 | // tsconfig.json 25 | { 26 | includes: [ 27 | 'node_modules/webgl-strict-types/index.d.ts' 28 | ] 29 | } 30 | ``` 31 | 32 | 33 | As TypeScript already comes with (less strict) typings for WebGL/WebGL2, and this can't override 34 | the existing typings, you need to cast the context explicitly: 35 | 36 | ```ts 37 | const gl = canvas.getContext('webgl') as any as WebGLRenderingContextStrict; 38 | 39 | // arrayBufferBinding is correctly inferred to be a WebGLBuffer 40 | const arrayBufferBinding = gl.getParameter(gl.ARRAY_BUFFER_BINDING); 41 | 42 | // ERROR: Argument of type 'GLenum<"ARRAY_BUFFER">' is not assignable to parameter of type 'GLenum<"FRAMEBUFFER">'. 43 | gl.bindFramebuffer(gl.ARRAY_BUFFER, null) 44 | 45 | // You can use the defined types as follows: 46 | import GL = WebGLRenderingContextStrict; 47 | const WGL = WebGLRenderingContext as any as WebGLRenderingContextStrict.Constants; 48 | const bufferTarget: GL.BufferTarget = gl.ARRAY_BUFFER; 49 | const framebufferTarget: GL['FRAMEBUFFER'] = WGL.FRAMEBUFFER; 50 | 51 | // Without this lib, not an error: 52 | const webGLBuffer: WebGLBuffer = gl.createRenderbuffer(); 53 | ``` 54 | 55 | See the definition files [webgl.d.ts](./webgl.d.ts) and [webgl2.d.ts](./webgl2.d.ts) for all available types. 56 | 57 | ## License 58 | MIT -------------------------------------------------------------------------------- /genTexImageOverloads.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable 2 | const formats = [ 3 | { internalFormat: "RGB", format: "RGB", type: ["UNSIGNED_BYTE", "UNSIGNED_SHORT_5_6_5"] }, 4 | { internalFormat: "RGBA", format: "RGBA", type: ["UNSIGNED_BYTE", "UNSIGNED_SHORT_4_4_4_4", "UNSIGNED_SHORT_5_5_5_1"] }, 5 | { internalFormat: "LUMINANCE_ALPHA", format: "LUMINANCE_ALPHA", type: ["UNSIGNED_BYTE"] }, 6 | { internalFormat: "LUMINANCE", format: "LUMINANCE", type: ["UNSIGNED_BYTE"] }, 7 | { internalFormat: "ALPHA", format: "ALPHA", type: ["UNSIGNED_BYTE"] }, 8 | { internalFormat: "R8", format: "RED", type: ["UNSIGNED_BYTE"] }, 9 | { internalFormat: "R16F", format: "RED", type: ["HALF_FLOAT", "FLOAT"] }, 10 | { internalFormat: "R32F", format: "RED", type: ["FLOAT"] }, 11 | { internalFormat: "R8UI", format: "RED_INTEGER", type: ["UNSIGNED_BYTE"] }, 12 | { internalFormat: "RG8", format: "RG", type: ["UNSIGNED_BYTE"] }, 13 | { internalFormat: "RG16F", format: "RG", type: ["HALF_FLOAT", "FLOAT"] }, 14 | { internalFormat: "RG32F", format: "RG", type: ["FLOAT"] }, 15 | { internalFormat: "RG8UI", format: "RG_INTEGER", type: ["UNSIGNED_BYTE"] }, 16 | { internalFormat: "RGB8", format: "RGB", type: ["UNSIGNED_BYTE"] }, 17 | { internalFormat: "SRGB8", format: "RGB", type: ["UNSIGNED_BYTE"] }, 18 | { internalFormat: "RGB565", format: "RGB", type: ["UNSIGNED_BYTE", "UNSIGNED_SHORT_5_6_5"] }, 19 | { internalFormat: "R11F_G11F_B10F", format: "RGB", type: ["UNSIGNED_INT_10F_11F_11F_REV", "HALF_FLOAT", "FLOAT"] }, 20 | { internalFormat: "RGB9_E5", format: "RGB", type: ["HALF_FLOAT", "FLOAT"] }, 21 | { internalFormat: "RGB16F", format: "RGB", type: ["HALF_FLOAT", "FLOAT"] }, 22 | { internalFormat: "RGB32F", format: "RGB", type: ["FLOAT"] }, 23 | { internalFormat: "RGB8UI", format: "RGB_INTEGER", type: ["UNSIGNED_BYTE"] }, 24 | { internalFormat: "RGBA8", format: "RGBA", type: ["UNSIGNED_BYTE"] }, 25 | { internalFormat: "SRGB8_ALPHA8", format: "RGBA", type: ["UNSIGNED_BYTE"] }, 26 | { internalFormat: "RGB5_A1", format: "RGBA", type: ["UNSIGNED_BYTE", "UNSIGNED_SHORT_5_5_5_1"] }, 27 | { internalFormat: "RGB10_A2", format: "RGBA", type: ["UNSIGNED_INT_2_10_10_10_REV"] }, 28 | { internalFormat: "RGBA4", format: "RGBA", type: ["UNSIGNED_BYTE", "UNSIGNED_SHORT_4_4_4_4"] }, 29 | { internalFormat: "RGBA16F", format: "RGBA", type: ["HALF_FLOAT", "FLOAT"] }, 30 | { internalFormat: "RGBA32F", format: "RGBA", type: ["FLOAT"] }, 31 | { internalFormat: "RGBA8UI", format: "RGBA_INTEGER", type: ["UNSIGNED_BYTE"] }, 32 | ]; 33 | const formatArrays = { 34 | BYTE: "Int8Array", 35 | UNSIGNED_BYTE: "Uint8Array", 36 | SHORT: "Int16Array", 37 | UNSIGNED_SHORT: "Uint16Array", 38 | UNSIGNED_SHORT_5_6_5: "Uint16Array", 39 | UNSIGNED_SHORT_5_5_5_1: "Uint16Array", 40 | UNSIGNED_SHORT_4_4_4_4: "Uint16Array", 41 | INT: "Int32Array", 42 | UNSIGNED_INT: "Uint32Array", 43 | UNSIGNED_INT_5_9_9_9_REV: "Uint32Array", 44 | UNSIGNED_INT_2_10_10_10_REV: "Uint32Array", 45 | UNSIGNED_INT_10F_11F_11F_REV: "Uint32Array", 46 | UNSIGNED_INT_24_8: "Uint32Array", 47 | HALF_FLOAT: "Uint16Array", 48 | FLOAT: "Float32Array", 49 | }; 50 | 51 | const gen = ` 52 | // WebGL1 legacy entrypoints: 53 | texImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, border: 0, format: FORMAT, type: TYPE, /* [AllowShared] */ pixels: ArrayBufferView | null): void; 54 | texImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, internalformat: INTERNALFORMAT, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 55 | 56 | texSubImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: FORMAT, type: TYPE, /* [AllowShared] */ pixels: ArrayBufferView | null): void; 57 | texSubImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 58 | 59 | // WebGL2 entrypoints: 60 | texImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, border: 0, format: FORMAT, type: TYPE, pboOffset: GLintptr): void; 61 | texImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, border: 0, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 62 | texImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, border: 0, format: FORMAT, type: TYPE, /* [AllowShared] */ srcData: ArrayBufferView, srcOffset: GLuint): void; 63 | 64 | texImage3D(target: TexImage3DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, depth: GLsizei, border: 0, format: FORMAT, type: TYPE, pboOffset: GLintptr): void; 65 | texImage3D(target: TexImage3DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, depth: GLsizei, border: 0, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 66 | texImage3D(target: TexImage3DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, depth: GLsizei, border: 0, format: FORMAT, type: TYPE, /* [AllowShared] */ srcData: ArrayBufferView | null): void; 67 | texImage3D(target: TexImage3DTarget, level: GLint, internalformat: INTERNALFORMAT, width: GLsizei, height: GLsizei, depth: GLsizei, border: 0, format: FORMAT, type: TYPE, /* [AllowShared] */ srcData: ArrayBufferView, srcOffset: GLuint): void; 68 | 69 | texSubImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: FORMAT, type: TYPE, pboOffset: GLintptr): void; 70 | texSubImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 71 | texSubImage2D(target: WebGLRenderingContext.TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: FORMAT, type: TYPE, /* [AllowShared] */ srcData: ArrayBufferView, srcOffset: GLuint): void; 72 | 73 | texSubImage3D(target: TexImage3DTarget, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: FORMAT, type: TYPE, pboOffset: GLintptr): void; 74 | texSubImage3D(target: TexImage3DTarget, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: FORMAT, type: TYPE, source: TexImageSource): void; // May throw DOMException 75 | texSubImage3D(target: TexImage3DTarget, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: FORMAT, type: TYPE, /* [AllowShared] */ srcData: ArrayBufferView | null, srcOffset?: GLuint /* = 0 */): void; 76 | ` 77 | 78 | const result = gen.replace(/^.*;.*$/gm, (substr, ...args) => { 79 | // console.log(substr); 80 | function f (substr) { 81 | 82 | const if_ = substr.includes('INTERNALFORMAT') 83 | const f = substr.includes('FORMAT') 84 | const t = substr.includes('TYPE') 85 | const pixels = substr.includes('ArrayBufferView') 86 | if (if_ && t && f && pixels) { 87 | return formats.map(format => { 88 | const necessaryPixelFormats = {} 89 | format.type.forEach(t => (necessaryPixelFormats[formatArrays[t]] = true)) 90 | return Object.keys(necessaryPixelFormats).sort().map(npf => { 91 | return substr 92 | .replace('INTERNALFORMAT', "GL2['" + format.internalFormat + "']") 93 | .replace('FORMAT', "GL2['" + format.format + "']") 94 | .replace('TYPE', format.type.filter(t => formatArrays[t] == npf).map(t => "GL2['" + t + "']").join(" | ")) 95 | .replace('ArrayBufferView', npf) 96 | }).join('\n') 97 | }).join('\n') 98 | } 99 | if (if_ && t && f) { 100 | return formats.map(format => { 101 | return substr 102 | .replace('INTERNALFORMAT', "GL2['" + format.internalFormat + "']") 103 | .replace('FORMAT', "GL2['" + format.format + "']") 104 | .replace('TYPE', format.type.map(t => "GL2['" + t + "']").join(" | ")) 105 | }).join('\n') 106 | } 107 | if (f && t && !pixels && !if_) { 108 | const formatTypes = {} 109 | formats.forEach(f => { 110 | if (!formatTypes[f.format]) { 111 | formatTypes[f.format] = {} 112 | } 113 | f.type.forEach(t => formatTypes[f.format][t] = true) 114 | }) 115 | return Object.keys(formatTypes).map(format => { 116 | const type = Object.keys(formatTypes[format]).map(t => "GL2['" + t + "']").join(" | ") 117 | return substr 118 | .replace('FORMAT', "GL2['" + format + "']") 119 | .replace('TYPE', type) 120 | }).join('\n') 121 | } 122 | if (f && t && pixels && !if_) { 123 | const formatTypes = {} 124 | formats.forEach(f => { 125 | if (!formatTypes[f.format]) { 126 | formatTypes[f.format] = {} 127 | } 128 | f.type.forEach(t => formatTypes[f.format][t] = true) 129 | }) 130 | return Object.keys(formatTypes).map(format => { 131 | const types = Object.keys(formatTypes[format]) 132 | const necessaryPixelFormats = {} 133 | types.forEach(t => (necessaryPixelFormats[formatArrays[t]] = true)) 134 | return Object.keys(necessaryPixelFormats).sort().map(npf => { 135 | return substr 136 | .replace('FORMAT', "GL2['" + format + "']") 137 | .replace('TYPE', types.filter(t => formatArrays[t] == npf).map(t => "GL2['" + t + "']").join(" | ")) 138 | .replace('ArrayBufferView', npf) 139 | }).join('\n') 140 | }).join('\n') 141 | } 142 | return "missing" 143 | } 144 | return "\t\t//#region " + substr.trim() + "\n" + f(substr) + "\n\t\t//#endregion" 145 | }); 146 | console.log(result) -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // // Type definitions for WebGL 2, Editor's Draft Fri Feb 24 16:10:18 2017 -0800 2 | // // Project: https://www.khronos.org/registry/webgl/specs/latest/2.0/ 3 | // // Definitions by: Adrian Leonhard 4 | // // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped 5 | // TypeScript Version: 2.3 6 | /// 7 | /// 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webgl-strict-types", 3 | "version": "1.0.5", 4 | "description": "Strict TypeScript definitions for WebGL 1 & 2.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "TypeScript", 11 | "WebGL", 12 | "typings", 13 | "types" 14 | ], 15 | "homepage": "https://github.com/NaridaL/webgl-strict-types", 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/NaridaL/webgl-strict-types.git" 19 | }, 20 | "author": "Adrian Leonhard", 21 | "license": "MIT", 22 | "devDependencies": { 23 | "dtslint": "^4.1.6" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": [ 5 | "es6", 6 | "dom" 7 | ], 8 | "noImplicitAny": true, 9 | "noImplicitThis": true, 10 | "strictNullChecks": true, 11 | "strictFunctionTypes": true, 12 | "baseUrl": "../", 13 | "typeRoots": [ 14 | "../" 15 | ], 16 | "types": [], 17 | "noEmit": true, 18 | "forceConsistentCasingInFileNames": true 19 | }, 20 | "files": [ 21 | "index.d.ts", 22 | "webgl.d.ts", 23 | "webgl2.d.ts", 24 | "webgl2-tests.ts" 25 | ] 26 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { "extends": "dtslint/dt.json"} -------------------------------------------------------------------------------- /webgl.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Strict typings for WebGLRenderingContext, manually written from the spec. 3 | * 4 | * The [SharedArrayBuffer] attribute indicates that the view can be backed by a SharedArrayBuffer. 5 | * By default, ArrayBufferView parameters can not be a view of a SharedArrayBuffer, and will throw an exception in that case. 6 | * 7 | * USAGE: Because the built-in WebGLRenderingContext cannot be overriden, this type is called `WebGLRenderingContextStrict`. 8 | * You need to cast the context once you have it: `const gl = canvas.getContext('webgl') as any as WebGLRenderingContextStrict` 9 | */ 10 | // tslint:disable:max-line-length 11 | // tslint:disable:typedef-whitespace 12 | // tslint:disable:unified-signatures 13 | 14 | // type GLboolean = boolean; // WebIDL: boolean; 15 | // type GLbitfield = number; // WebIDL: unsigned long 16 | // type GLbyte = number; // WebIDL: byte /* 'byte' should be a signed 8 bit type. */ 17 | // type GLshort = number; // WebIDL: short 18 | // type GLint = number; // WebIDL: long 19 | // type GLsizei = number; // WebIDL: long 20 | // type GLintptr = number; // WebIDL: long long 21 | // type GLsizeiptr = number; // WebIDL: long long 22 | // type GLubyte = number; // ideally unsigned byte. WebIDL: octet /* 'octet' should be an unsigned 8 bit type. */ 23 | // type GLushort = number; // WebIDL: unsigned short 24 | // type GLuint = number; // WebIDL: unsigned long 25 | // type GLfloat = number; // WebIDL: unrestricted float 26 | // type GLclampf = number; // WebIDL: unrestricted float 27 | type DOMString = string; 28 | 29 | interface WebGLObject { 30 | __WebGLObjectBrand: string; 31 | } 32 | 33 | interface WebGLBuffer extends WebGLObject { 34 | __WebGLObjectBrand: 'WebGLBuffer'; 35 | } 36 | // declare var WebGLBuffer: { 37 | // prototype: WebGLBuffer; 38 | // new(_: never): WebGLBuffer; 39 | // } 40 | 41 | interface WebGLFramebuffer extends WebGLObject { 42 | __WebGLObjectBrand: 'WebGLFramebuffer'; 43 | } 44 | // declare var WebGLFramebuffer: { 45 | // prototype: WebGLFramebuffer; 46 | // new(_: never): WebGLFramebuffer; 47 | // } 48 | 49 | interface WebGLProgram extends WebGLObject { 50 | __WebGLObjectBrand: 'WebGLProgram'; 51 | } 52 | // declare var WebGLProgram: { 53 | // prototype: WebGLProgram; 54 | // new(_: never): WebGLProgram; 55 | // } 56 | 57 | interface WebGLRenderbuffer extends WebGLObject { 58 | __WebGLObjectBrand: 'WebGLRenderbuffer'; 59 | } 60 | // declare var WebGLRenderbuffer: { 61 | // prototype: WebGLRenderbuffer; 62 | // new(_: never): WebGLRenderbuffer; 63 | // } 64 | 65 | interface WebGLShader extends WebGLObject { 66 | __WebGLObjectBrand: 'WebGLShader'; 67 | } 68 | // declare var WebGLShader: { 69 | // prototype: WebGLShader; 70 | // new(_: never): WebGLShader; 71 | // } 72 | 73 | interface WebGLTexture extends WebGLObject { 74 | __WebGLObjectBrand: 'WebGLTexture'; 75 | } 76 | // declare var WebGLTexture: { 77 | // prototype: WebGLTexture; 78 | // new(_: never): WebGLTexture; 79 | // } 80 | 81 | interface WebGLUniformLocation { 82 | __WebGLObjectBrand: 'WebGLUniformLocation'; 83 | } 84 | // declare var WebGLUniformLocation: { 85 | // prototype: WebGLUniformLocation; 86 | // new(_: never): WebGLUniformLocation; 87 | // } 88 | 89 | // declare var WebGLActiveInfo: { 90 | // prototype: WebGLActiveInfo; 91 | // new(_: never): WebGLActiveInfo; 92 | // } 93 | 94 | interface WebGLShaderPrecisionFormat { 95 | readonly rangeMin: GLint; 96 | readonly rangeMax: GLint; 97 | readonly precision: GLint; 98 | } 99 | 100 | declare namespace WebGLRenderingContextStrict { 101 | interface WebGLContextAttributes { 102 | alpha: GLboolean; // = true 103 | depth: GLboolean; // = true 104 | stencil: GLboolean; // = false 105 | antialias: GLboolean; // = true 106 | premultipliedAlpha: GLboolean; // = true 107 | preserveDrawingBuffer: GLboolean; // = false 108 | powerPreference: WebGLPowerPreference; // = "default" 109 | failIfMajorPerformanceCaveat: GLboolean; // = false 110 | } 111 | interface WebGLActiveInfo { 112 | readonly size: GLint; 113 | readonly type: T; 114 | readonly name: DOMString; 115 | } 116 | // interface GLConst { 117 | // __brandGlConst: true 118 | // } 119 | type GLenum = number & { __brand: S }; 120 | interface Constants { 121 | /* ClearBufferMask: Used as ORed bits, so need to be actual numbers: */ 122 | readonly DEPTH_BUFFER_BIT: 0x00000100; 123 | readonly STENCIL_BUFFER_BIT: 0x00000400; 124 | readonly COLOR_BUFFER_BIT: 0x00004000; 125 | 126 | /* BeginMode */ 127 | readonly POINTS: /* 0x0000 */ GLenum<'POINTS'>; 128 | readonly LINES: /* 0x0001 */ GLenum<'LINES'>; 129 | readonly LINE_LOOP: /* 0x0002 */ GLenum<'LINE_LOOP'>; 130 | readonly LINE_STRIP: /* 0x0003 */ GLenum<'LINE_STRIP'>; 131 | readonly TRIANGLES: /* 0x0004 */ GLenum<'TRIANGLES'>; 132 | readonly TRIANGLE_STRIP: /* 0x0005 */ GLenum<'TRIANGLE_STRIP'>; 133 | readonly TRIANGLE_FAN: /* 0x0006 */ GLenum<'TRIANGLE_FAN'>; 134 | 135 | /* AlphaFunction (not supported in ES20) */ 136 | /* NEVER */ 137 | /* LESS */ 138 | /* EQUAL */ 139 | /* LEQUAL */ 140 | /* GREATER */ 141 | /* NOTEQUAL */ 142 | /* GEQUAL */ 143 | /* ALWAYS */ 144 | 145 | /* BlendingFactorDest */ 146 | readonly ZERO: /* 0 */ GLenum<'ZERO'>; 147 | readonly ONE: /* 1 */ GLenum<'ONE'>; 148 | readonly SRC_COLOR: /* 0x0300 */ GLenum<'SRC_COLOR'>; 149 | readonly ONE_MINUS_SRC_COLOR: /* 0x0301 */ GLenum<'ONE_MINUS_SRC_COLOR'>; 150 | readonly SRC_ALPHA: /* 0x0302 */ GLenum<'SRC_ALPHA'>; 151 | readonly ONE_MINUS_SRC_ALPHA: /* 0x0303 */ GLenum<'ONE_MINUS_SRC_ALPHA'>; 152 | readonly DST_ALPHA: /* 0x0304 */ GLenum<'DST_ALPHA'>; 153 | readonly ONE_MINUS_DST_ALPHA: /* 0x0305 */ GLenum<'ONE_MINUS_DST_ALPHA'>; 154 | 155 | /* BlendingFactorSrc */ 156 | /* ZERO */ 157 | /* ONE */ 158 | readonly DST_COLOR: /* 0x0306 */ GLenum<'DST_COLOR'>; 159 | readonly ONE_MINUS_DST_COLOR: /* 0x0307 */ GLenum<'ONE_MINUS_DST_COLOR'>; 160 | readonly SRC_ALPHA_SATURATE: /* 0x0308 */ GLenum<'SRC_ALPHA_SATURATE'>; 161 | /* SRC_ALPHA */ 162 | /* ONE_MINUS_SRC_ALPHA */ 163 | /* DST_ALPHA */ 164 | /* ONE_MINUS_DST_ALPHA */ 165 | 166 | /* BlendEquationSeparate */ 167 | readonly FUNC_ADD: /* 0x8006 */ GLenum<'FUNC_ADD'>; 168 | readonly BLEND_EQUATION: /* 0x8009 */ GLenum<'BLEND_EQUATION'>; 169 | readonly BLEND_EQUATION_RGB: /* 0x8009 */ GLenum<'BLEND_EQUATION_RGB'>; /* same as BLEND_EQUATION */ 170 | readonly BLEND_EQUATION_ALPHA: /* 0x883D */ GLenum<'BLEND_EQUATION_ALPHA'>; 171 | 172 | /* BlendSubtract */ 173 | readonly FUNC_SUBTRACT: /* 0x800A */ GLenum<'FUNC_SUBTRACT'>; 174 | readonly FUNC_REVERSE_SUBTRACT: /* 0x800B */ GLenum<'FUNC_REVERSE_SUBTRACT'>; 175 | 176 | /* Separate Blend Functions */ 177 | readonly BLEND_DST_RGB: /* 0x80C8 */ GLenum<'BLEND_DST_RGB'>; 178 | readonly BLEND_SRC_RGB: /* 0x80C9 */ GLenum<'BLEND_SRC_RGB'>; 179 | readonly BLEND_DST_ALPHA: /* 0x80CA */ GLenum<'BLEND_DST_ALPHA'>; 180 | readonly BLEND_SRC_ALPHA: /* 0x80CB */ GLenum<'BLEND_SRC_ALPHA'>; 181 | readonly CONSTANT_COLOR: /* 0x8001 */ GLenum<'CONSTANT_COLOR'>; 182 | readonly ONE_MINUS_CONSTANT_COLOR: /* 0x8002 */ GLenum<'ONE_MINUS_CONSTANT_COLOR'>; 183 | readonly CONSTANT_ALPHA: /* 0x8003 */ GLenum<'CONSTANT_ALPHA'>; 184 | readonly ONE_MINUS_CONSTANT_ALPHA: /* 0x8004 */ GLenum<'ONE_MINUS_CONSTANT_ALPHA'>; 185 | readonly BLEND_COLOR: /* 0x8005 */ GLenum<'BLEND_COLOR'>; 186 | 187 | /* Buffer Objects */ 188 | readonly ARRAY_BUFFER: /* 0x8892 */ GLenum<'ARRAY_BUFFER'>; 189 | readonly ELEMENT_ARRAY_BUFFER: /* 0x8893 */ GLenum<'ELEMENT_ARRAY_BUFFER'>; 190 | readonly ARRAY_BUFFER_BINDING: /* 0x8894 */ GLenum<'ARRAY_BUFFER_BINDING'>; 191 | readonly ELEMENT_ARRAY_BUFFER_BINDING: /* 0x8895 */ GLenum<'ELEMENT_ARRAY_BUFFER_BINDING'>; 192 | 193 | readonly STREAM_DRAW: /* 0x88E0 */ GLenum<'STREAM_DRAW'>; 194 | readonly STATIC_DRAW: /* 0x88E4 */ GLenum<'STATIC_DRAW'>; 195 | readonly DYNAMIC_DRAW: /* 0x88E8 */ GLenum<'DYNAMIC_DRAW'>; 196 | 197 | readonly BUFFER_SIZE: /* 0x8764 */ GLenum<'BUFFER_SIZE'>; 198 | readonly BUFFER_USAGE: /* 0x8765 */ GLenum<'BUFFER_USAGE'>; 199 | 200 | readonly CURRENT_VERTEX_ATTRIB: /* 0x8626 */ GLenum<'CURRENT_VERTEX_ATTRIB'>; 201 | 202 | /* CullFaceMode */ 203 | readonly FRONT: /* 0x0404 */ GLenum<'FRONT'>; 204 | readonly BACK: /* 0x0405 */ GLenum<'BACK'>; 205 | readonly FRONT_AND_BACK: /* 0x0408 */ GLenum<'FRONT_AND_BACK'>; 206 | 207 | /* DepthFunction */ 208 | /* NEVER */ 209 | /* LESS */ 210 | /* EQUAL */ 211 | /* LEQUAL */ 212 | /* GREATER */ 213 | /* NOTEQUAL */ 214 | /* GEQUAL */ 215 | /* ALWAYS */ 216 | 217 | /* EnableCap */ 218 | /* TEXTURE_2D */ 219 | readonly CULL_FACE: /* 0x0B44 */ GLenum<'CULL_FACE'>; 220 | readonly BLEND: /* 0x0BE2 */ GLenum<'BLEND'>; 221 | readonly DITHER: /* 0x0BD0 */ GLenum<'DITHER'>; 222 | readonly STENCIL_TEST: /* 0x0B90 */ GLenum<'STENCIL_TEST'>; 223 | readonly DEPTH_TEST: /* 0x0B71 */ GLenum<'DEPTH_TEST'>; 224 | readonly SCISSOR_TEST: /* 0x0C11 */ GLenum<'SCISSOR_TEST'>; 225 | readonly POLYGON_OFFSET_FILL: /* 0x8037 */ GLenum<'POLYGON_OFFSET_FILL'>; 226 | readonly SAMPLE_ALPHA_TO_COVERAGE: /* 0x809E */ GLenum<'SAMPLE_ALPHA_TO_COVERAGE'>; 227 | readonly SAMPLE_COVERAGE: /* 0x80A0 */ GLenum<'SAMPLE_COVERAGE'>; 228 | 229 | /* ErrorCode */ 230 | readonly NO_ERROR: /* 0 */ GLenum<'NO_ERROR'>; 231 | readonly INVALID_ENUM: /* 0x0500 */ GLenum<'INVALID_ENUM'>; 232 | readonly INVALID_VALUE: /* 0x0501 */ GLenum<'INVALID_VALUE'>; 233 | readonly INVALID_OPERATION: /* 0x0502 */ GLenum<'INVALID_OPERATION'>; 234 | readonly OUT_OF_MEMORY: /* 0x0505 */ GLenum<'OUT_OF_MEMORY'>; 235 | 236 | /* FrontFaceDirection */ 237 | readonly CW: /* 0x0900 */ GLenum<'CW'>; 238 | readonly CCW: /* 0x0901 */ GLenum<'CCW'>; 239 | 240 | /* GetPName */ 241 | readonly LINE_WIDTH: /* 0x0B21 */ GLenum<'LINE_WIDTH'>; 242 | readonly ALIASED_POINT_SIZE_RANGE: /* 0x846D */ GLenum<'ALIASED_POINT_SIZE_RANGE'>; 243 | readonly ALIASED_LINE_WIDTH_RANGE: /* 0x846E */ GLenum<'ALIASED_LINE_WIDTH_RANGE'>; 244 | readonly CULL_FACE_MODE: /* 0x0B45 */ GLenum<'CULL_FACE_MODE'>; 245 | readonly FRONT_FACE: /* 0x0B46 */ GLenum<'FRONT_FACE'>; 246 | readonly DEPTH_RANGE: /* 0x0B70 */ GLenum<'DEPTH_RANGE'>; 247 | readonly DEPTH_WRITEMASK: /* 0x0B72 */ GLenum<'DEPTH_WRITEMASK'>; 248 | readonly DEPTH_CLEAR_VALUE: /* 0x0B73 */ GLenum<'DEPTH_CLEAR_VALUE'>; 249 | readonly DEPTH_FUNC: /* 0x0B74 */ GLenum<'DEPTH_FUNC'>; 250 | readonly STENCIL_CLEAR_VALUE: /* 0x0B91 */ GLenum<'STENCIL_CLEAR_VALUE'>; 251 | readonly STENCIL_FUNC: /* 0x0B92 */ GLenum<'STENCIL_FUNC'>; 252 | readonly STENCIL_FAIL: /* 0x0B94 */ GLenum<'STENCIL_FAIL'>; 253 | readonly STENCIL_PASS_DEPTH_FAIL: /* 0x0B95 */ GLenum<'STENCIL_PASS_DEPTH_FAIL'>; 254 | readonly STENCIL_PASS_DEPTH_PASS: /* 0x0B96 */ GLenum<'STENCIL_PASS_DEPTH_PASS'>; 255 | readonly STENCIL_REF: /* 0x0B97 */ GLenum<'STENCIL_REF'>; 256 | readonly STENCIL_VALUE_MASK: /* 0x0B93 */ GLenum<'STENCIL_VALUE_MASK'>; 257 | readonly STENCIL_WRITEMASK: /* 0x0B98 */ GLenum<'STENCIL_WRITEMASK'>; 258 | readonly STENCIL_BACK_FUNC: /* 0x8800 */ GLenum<'STENCIL_BACK_FUNC'>; 259 | readonly STENCIL_BACK_FAIL: /* 0x8801 */ GLenum<'STENCIL_BACK_FAIL'>; 260 | readonly STENCIL_BACK_PASS_DEPTH_FAIL: /* 0x8802 */ GLenum<'STENCIL_BACK_PASS_DEPTH_FAIL'>; 261 | readonly STENCIL_BACK_PASS_DEPTH_PASS: /* 0x8803 */ GLenum<'STENCIL_BACK_PASS_DEPTH_PASS'>; 262 | readonly STENCIL_BACK_REF: /* 0x8CA3 */ GLenum<'STENCIL_BACK_REF'>; 263 | readonly STENCIL_BACK_VALUE_MASK: /* 0x8CA4 */ GLenum<'STENCIL_BACK_VALUE_MASK'>; 264 | readonly STENCIL_BACK_WRITEMASK: /* 0x8CA5 */ GLenum<'STENCIL_BACK_WRITEMASK'>; 265 | readonly VIEWPORT: /* 0x0BA2 */ GLenum<'VIEWPORT'>; 266 | readonly SCISSOR_BOX: /* 0x0C10 */ GLenum<'SCISSOR_BOX'>; 267 | /* SCISSOR_TEST */ 268 | readonly COLOR_CLEAR_VALUE: /* 0x0C22 */ GLenum<'COLOR_CLEAR_VALUE'>; 269 | readonly COLOR_WRITEMASK: /* 0x0C23 */ GLenum<'COLOR_WRITEMASK'>; 270 | readonly UNPACK_ALIGNMENT: /* 0x0CF5 */ GLenum<'UNPACK_ALIGNMENT'>; 271 | readonly PACK_ALIGNMENT: /* 0x0D05 */ GLenum<'PACK_ALIGNMENT'>; 272 | readonly MAX_TEXTURE_SIZE: /* 0x0D33 */ GLenum<'MAX_TEXTURE_SIZE'>; 273 | readonly MAX_VIEWPORT_DIMS: /* 0x0D3A */ GLenum<'MAX_VIEWPORT_DIMS'>; 274 | readonly SUBPIXEL_BITS: /* 0x0D50 */ GLenum<'SUBPIXEL_BITS'>; 275 | readonly RED_BITS: /* 0x0D52 */ GLenum<'RED_BITS'>; 276 | readonly GREEN_BITS: /* 0x0D53 */ GLenum<'GREEN_BITS'>; 277 | readonly BLUE_BITS: /* 0x0D54 */ GLenum<'BLUE_BITS'>; 278 | readonly ALPHA_BITS: /* 0x0D55 */ GLenum<'ALPHA_BITS'>; 279 | readonly DEPTH_BITS: /* 0x0D56 */ GLenum<'DEPTH_BITS'>; 280 | readonly STENCIL_BITS: /* 0x0D57 */ GLenum<'STENCIL_BITS'>; 281 | readonly POLYGON_OFFSET_UNITS: /* 0x2A00 */ GLenum<'POLYGON_OFFSET_UNITS'>; 282 | /* POLYGON_OFFSET_FILL */ 283 | readonly POLYGON_OFFSET_FACTOR: /* 0x8038 */ GLenum<'POLYGON_OFFSET_FACTOR'>; 284 | readonly TEXTURE_BINDING_2D: /* 0x8069 */ GLenum<'TEXTURE_BINDING_2D'>; 285 | readonly SAMPLE_BUFFERS: /* 0x80A8 */ GLenum<'SAMPLE_BUFFERS'>; 286 | readonly SAMPLES: /* 0x80A9 */ GLenum<'SAMPLES'>; 287 | readonly SAMPLE_COVERAGE_VALUE: /* 0x80AA */ GLenum<'SAMPLE_COVERAGE_VALUE'>; 288 | readonly SAMPLE_COVERAGE_INVERT: /* 0x80AB */ GLenum<'SAMPLE_COVERAGE_INVERT'>; 289 | 290 | /* GetTextureParameter */ 291 | /* TEXTURE_MAG_FILTER */ 292 | /* TEXTURE_MIN_FILTER */ 293 | /* TEXTURE_WRAP_S */ 294 | /* TEXTURE_WRAP_T */ 295 | 296 | readonly COMPRESSED_TEXTURE_FORMATS: /* 0x86A3 */ GLenum<'COMPRESSED_TEXTURE_FORMATS'>; 297 | 298 | /* HintMode */ 299 | readonly DONT_CARE: /* 0x1100 */ GLenum<'DONT_CARE'>; 300 | readonly FASTEST: /* 0x1101 */ GLenum<'FASTEST'>; 301 | readonly NICEST: /* 0x1102 */ GLenum<'NICEST'>; 302 | 303 | /* HintTarget */ 304 | readonly GENERATE_MIPMAP_HINT: /* 0x8192 */ GLenum<'GENERATE_MIPMAP_HINT'>; 305 | 306 | /* DataType */ 307 | readonly BYTE: /* 0x1400 */ GLenum<'BYTE'>; 308 | readonly UNSIGNED_BYTE: /* 0x1401 */ GLenum<'UNSIGNED_BYTE'>; 309 | readonly SHORT: /* 0x1402 */ GLenum<'SHORT'>; 310 | readonly UNSIGNED_SHORT: /* 0x1403 */ GLenum<'UNSIGNED_SHORT'>; 311 | readonly INT: /* 0x1404 */ GLenum<'INT'>; 312 | readonly UNSIGNED_INT: /* 0x1405 */ GLenum<'UNSIGNED_INT'>; 313 | readonly FLOAT: /* 0x1406 */ GLenum<'FLOAT'>; 314 | 315 | /* PixelFormat */ 316 | readonly DEPTH_COMPONENT: /* 0x1902 */ GLenum<'DEPTH_COMPONENT'>; 317 | readonly ALPHA: /* 0x1906 */ GLenum<'ALPHA'>; 318 | readonly RGB: /* 0x1907 */ GLenum<'RGB'>; 319 | readonly RGBA: /* 0x1908 */ GLenum<'RGBA'>; 320 | readonly LUMINANCE: /* 0x1909 */ GLenum<'LUMINANCE'>; 321 | readonly LUMINANCE_ALPHA: /* 0x190A */ GLenum<'LUMINANCE_ALPHA'>; 322 | 323 | /* PixelType */ 324 | /* UNSIGNED_BYTE */ 325 | readonly UNSIGNED_SHORT_4_4_4_4: /* 0x8033 */ GLenum<'UNSIGNED_SHORT_4_4_4_4'>; 326 | readonly UNSIGNED_SHORT_5_5_5_1: /* 0x8034 */ GLenum<'UNSIGNED_SHORT_5_5_5_1'>; 327 | readonly UNSIGNED_SHORT_5_6_5: /* 0x8363 */ GLenum<'UNSIGNED_SHORT_5_6_5'>; 328 | 329 | /* Shaders */ 330 | readonly FRAGMENT_SHADER: /* 0x8B30 */ GLenum<'FRAGMENT_SHADER'>; 331 | readonly VERTEX_SHADER: /* 0x8B31 */ GLenum<'VERTEX_SHADER'>; 332 | readonly MAX_VERTEX_ATTRIBS: /* 0x8869 */ GLenum<'MAX_VERTEX_ATTRIBS'>; 333 | readonly MAX_VERTEX_UNIFORM_VECTORS: /* 0x8DFB */ GLenum<'MAX_VERTEX_UNIFORM_VECTORS'>; 334 | readonly MAX_VARYING_VECTORS: /* 0x8DFC */ GLenum<'MAX_VARYING_VECTORS'>; 335 | readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: /* 0x8B4D */ GLenum<'MAX_COMBINED_TEXTURE_IMAGE_UNITS'>; 336 | readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: /* 0x8B4C */ GLenum<'MAX_VERTEX_TEXTURE_IMAGE_UNITS'>; 337 | readonly MAX_TEXTURE_IMAGE_UNITS: /* 0x8872 */ GLenum<'MAX_TEXTURE_IMAGE_UNITS'>; 338 | readonly MAX_FRAGMENT_UNIFORM_VECTORS: /* 0x8DFD */ GLenum<'MAX_FRAGMENT_UNIFORM_VECTORS'>; 339 | readonly SHADER_TYPE: /* 0x8B4F */ GLenum<'SHADER_TYPE'>; 340 | readonly DELETE_STATUS: /* 0x8B80 */ GLenum<'DELETE_STATUS'>; 341 | readonly LINK_STATUS: /* 0x8B82 */ GLenum<'LINK_STATUS'>; 342 | readonly VALIDATE_STATUS: /* 0x8B83 */ GLenum<'VALIDATE_STATUS'>; 343 | readonly ATTACHED_SHADERS: /* 0x8B85 */ GLenum<'ATTACHED_SHADERS'>; 344 | readonly ACTIVE_UNIFORMS: /* 0x8B86 */ GLenum<'ACTIVE_UNIFORMS'>; 345 | readonly ACTIVE_ATTRIBUTES: /* 0x8B89 */ GLenum<'ACTIVE_ATTRIBUTES'>; 346 | readonly SHADING_LANGUAGE_VERSION: /* 0x8B8C */ GLenum<'SHADING_LANGUAGE_VERSION'>; 347 | readonly CURRENT_PROGRAM: /* 0x8B8D */ GLenum<'CURRENT_PROGRAM'>; 348 | 349 | /* StencilFunction */ 350 | readonly NEVER: /* 0x0200 */ GLenum<'NEVER'>; 351 | readonly LESS: /* 0x0201 */ GLenum<'LESS'>; 352 | readonly EQUAL: /* 0x0202 */ GLenum<'EQUAL'>; 353 | readonly LEQUAL: /* 0x0203 */ GLenum<'LEQUAL'>; 354 | readonly GREATER: /* 0x0204 */ GLenum<'GREATER'>; 355 | readonly NOTEQUAL: /* 0x0205 */ GLenum<'NOTEQUAL'>; 356 | readonly GEQUAL: /* 0x0206 */ GLenum<'GEQUAL'>; 357 | readonly ALWAYS: /* 0x0207 */ GLenum<'ALWAYS'>; 358 | 359 | /* StencilOp */ 360 | /* ZERO */ 361 | readonly KEEP: /* 0x1E00 */ GLenum<'KEEP'>; 362 | readonly REPLACE: /* 0x1E01 */ GLenum<'REPLACE'>; 363 | readonly INCR: /* 0x1E02 */ GLenum<'INCR'>; 364 | readonly DECR: /* 0x1E03 */ GLenum<'DECR'>; 365 | readonly INVERT: /* 0x150A */ GLenum<'INVERT'>; 366 | readonly INCR_WRAP: /* 0x8507 */ GLenum<'INCR_WRAP'>; 367 | readonly DECR_WRAP: /* 0x8508 */ GLenum<'DECR_WRAP'>; 368 | 369 | /* StringName */ 370 | readonly VENDOR: /* 0x1F00 */ GLenum<'VENDOR'>; 371 | readonly RENDERER: /* 0x1F01 */ GLenum<'RENDERER'>; 372 | readonly VERSION: /* 0x1F02 */ GLenum<'VERSION'>; 373 | 374 | /* TextureMagFilter */ 375 | readonly NEAREST: /* 0x2600 */ GLenum<'NEAREST'>; 376 | readonly LINEAR: /* 0x2601 */ GLenum<'LINEAR'>; 377 | 378 | /* TextureMinFilter */ 379 | /* NEAREST */ 380 | /* LINEAR */ 381 | readonly NEAREST_MIPMAP_NEAREST: /* 0x2700 */ GLenum<'NEAREST_MIPMAP_NEAREST'>; 382 | readonly LINEAR_MIPMAP_NEAREST: /* 0x2701 */ GLenum<'LINEAR_MIPMAP_NEAREST'>; 383 | readonly NEAREST_MIPMAP_LINEAR: /* 0x2702 */ GLenum<'NEAREST_MIPMAP_LINEAR'>; 384 | readonly LINEAR_MIPMAP_LINEAR: /* 0x2703 */ GLenum<'LINEAR_MIPMAP_LINEAR'>; 385 | 386 | /* TextureParameterName */ 387 | readonly TEXTURE_MAG_FILTER: /* 0x2800 */ GLenum<'TEXTURE_MAG_FILTER'>; 388 | readonly TEXTURE_MIN_FILTER: /* 0x2801 */ GLenum<'TEXTURE_MIN_FILTER'>; 389 | readonly TEXTURE_WRAP_S: /* 0x2802 */ GLenum<'TEXTURE_WRAP_S'>; 390 | readonly TEXTURE_WRAP_T: /* 0x2803 */ GLenum<'TEXTURE_WRAP_T'>; 391 | 392 | /* TextureTarget */ 393 | readonly TEXTURE_2D: /* 0x0DE1 */ GLenum<'TEXTURE_2D'>; 394 | readonly TEXTURE: /* 0x1702 */ GLenum<'TEXTURE'>; 395 | 396 | readonly TEXTURE_CUBE_MAP: /* 0x8513 */ GLenum<'TEXTURE_CUBE_MAP'>; 397 | readonly TEXTURE_BINDING_CUBE_MAP: /* 0x8514 */ GLenum<'TEXTURE_BINDING_CUBE_MAP'>; 398 | readonly TEXTURE_CUBE_MAP_POSITIVE_X: /* 0x8515 */ GLenum<'TEXTURE_CUBE_MAP_POSITIVE_X'>; 399 | readonly TEXTURE_CUBE_MAP_NEGATIVE_X: /* 0x8516 */ GLenum<'TEXTURE_CUBE_MAP_NEGATIVE_X'>; 400 | readonly TEXTURE_CUBE_MAP_POSITIVE_Y: /* 0x8517 */ GLenum<'TEXTURE_CUBE_MAP_POSITIVE_Y'>; 401 | readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: /* 0x8518 */ GLenum<'TEXTURE_CUBE_MAP_NEGATIVE_Y'>; 402 | readonly TEXTURE_CUBE_MAP_POSITIVE_Z: /* 0x8519 */ GLenum<'TEXTURE_CUBE_MAP_POSITIVE_Z'>; 403 | readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: /* 0x851A */ GLenum<'TEXTURE_CUBE_MAP_NEGATIVE_Z'>; 404 | readonly MAX_CUBE_MAP_TEXTURE_SIZE: /* 0x851C */ GLenum<'MAX_CUBE_MAP_TEXTURE_SIZE'>; 405 | 406 | /* TextureUnit */ 407 | readonly TEXTURE0: /* 0x84C0 */ GLenum<'TEXTURE0'>; 408 | readonly TEXTURE1: /* 0x84C1 */ GLenum<'TEXTURE1'>; 409 | readonly TEXTURE2: /* 0x84C2 */ GLenum<'TEXTURE2'>; 410 | readonly TEXTURE3: /* 0x84C3 */ GLenum<'TEXTURE3'>; 411 | readonly TEXTURE4: /* 0x84C4 */ GLenum<'TEXTURE4'>; 412 | readonly TEXTURE5: /* 0x84C5 */ GLenum<'TEXTURE5'>; 413 | readonly TEXTURE6: /* 0x84C6 */ GLenum<'TEXTURE6'>; 414 | readonly TEXTURE7: /* 0x84C7 */ GLenum<'TEXTURE7'>; 415 | readonly TEXTURE8: /* 0x84C8 */ GLenum<'TEXTURE8'>; 416 | readonly TEXTURE9: /* 0x84C9 */ GLenum<'TEXTURE9'>; 417 | readonly TEXTURE10: /* 0x84CA */ GLenum<'TEXTURE10'>; 418 | readonly TEXTURE11: /* 0x84CB */ GLenum<'TEXTURE11'>; 419 | readonly TEXTURE12: /* 0x84CC */ GLenum<'TEXTURE12'>; 420 | readonly TEXTURE13: /* 0x84CD */ GLenum<'TEXTURE13'>; 421 | readonly TEXTURE14: /* 0x84CE */ GLenum<'TEXTURE14'>; 422 | readonly TEXTURE15: /* 0x84CF */ GLenum<'TEXTURE15'>; 423 | readonly TEXTURE16: /* 0x84D0 */ GLenum<'TEXTURE16'>; 424 | readonly TEXTURE17: /* 0x84D1 */ GLenum<'TEXTURE17'>; 425 | readonly TEXTURE18: /* 0x84D2 */ GLenum<'TEXTURE18'>; 426 | readonly TEXTURE19: /* 0x84D3 */ GLenum<'TEXTURE19'>; 427 | readonly TEXTURE20: /* 0x84D4 */ GLenum<'TEXTURE20'>; 428 | readonly TEXTURE21: /* 0x84D5 */ GLenum<'TEXTURE21'>; 429 | readonly TEXTURE22: /* 0x84D6 */ GLenum<'TEXTURE22'>; 430 | readonly TEXTURE23: /* 0x84D7 */ GLenum<'TEXTURE23'>; 431 | readonly TEXTURE24: /* 0x84D8 */ GLenum<'TEXTURE24'>; 432 | readonly TEXTURE25: /* 0x84D9 */ GLenum<'TEXTURE25'>; 433 | readonly TEXTURE26: /* 0x84DA */ GLenum<'TEXTURE26'>; 434 | readonly TEXTURE27: /* 0x84DB */ GLenum<'TEXTURE27'>; 435 | readonly TEXTURE28: /* 0x84DC */ GLenum<'TEXTURE28'>; 436 | readonly TEXTURE29: /* 0x84DD */ GLenum<'TEXTURE29'>; 437 | readonly TEXTURE30: /* 0x84DE */ GLenum<'TEXTURE30'>; 438 | readonly TEXTURE31: /* 0x84DF */ GLenum<'TEXTURE31'>; 439 | readonly ACTIVE_TEXTURE: /* 0x84E0 */ GLenum<'ACTIVE_TEXTURE'>; 440 | 441 | /* TextureWrapMode */ 442 | readonly REPEAT: /* 0x2901 */ GLenum<'REPEAT'>; 443 | readonly CLAMP_TO_EDGE: /* 0x812F */ GLenum<'CLAMP_TO_EDGE'>; 444 | readonly MIRRORED_REPEAT: /* 0x8370 */ GLenum<'MIRRORED_REPEAT'>; 445 | 446 | /* Uniform Types */ 447 | readonly FLOAT_VEC2: /* 0x8B50 */ GLenum<'FLOAT_VEC2'>; 448 | readonly FLOAT_VEC3: /* 0x8B51 */ GLenum<'FLOAT_VEC3'>; 449 | readonly FLOAT_VEC4: /* 0x8B52 */ GLenum<'FLOAT_VEC4'>; 450 | readonly INT_VEC2: /* 0x8B53 */ GLenum<'INT_VEC2'>; 451 | readonly INT_VEC3: /* 0x8B54 */ GLenum<'INT_VEC3'>; 452 | readonly INT_VEC4: /* 0x8B55 */ GLenum<'INT_VEC4'>; 453 | readonly BOOL: /* 0x8B56 */ GLenum<'BOOL'>; 454 | readonly BOOL_VEC2: /* 0x8B57 */ GLenum<'BOOL_VEC2'>; 455 | readonly BOOL_VEC3: /* 0x8B58 */ GLenum<'BOOL_VEC3'>; 456 | readonly BOOL_VEC4: /* 0x8B59 */ GLenum<'BOOL_VEC4'>; 457 | readonly FLOAT_MAT2: /* 0x8B5A */ GLenum<'FLOAT_MAT2'>; 458 | readonly FLOAT_MAT3: /* 0x8B5B */ GLenum<'FLOAT_MAT3'>; 459 | readonly FLOAT_MAT4: /* 0x8B5C */ GLenum<'FLOAT_MAT4'>; 460 | readonly SAMPLER_2D: /* 0x8B5E */ GLenum<'SAMPLER_2D'>; 461 | readonly SAMPLER_CUBE: /* 0x8B60 */ GLenum<'SAMPLER_CUBE'>; 462 | 463 | /* Vertex Arrays */ 464 | readonly VERTEX_ATTRIB_ARRAY_ENABLED: /* 0x8622 */ GLenum<'VERTEX_ATTRIB_ARRAY_ENABLED'>; 465 | readonly VERTEX_ATTRIB_ARRAY_SIZE: /* 0x8623 */ GLenum<'VERTEX_ATTRIB_ARRAY_SIZE'>; 466 | readonly VERTEX_ATTRIB_ARRAY_STRIDE: /* 0x8624 */ GLenum<'VERTEX_ATTRIB_ARRAY_STRIDE'>; 467 | readonly VERTEX_ATTRIB_ARRAY_TYPE: /* 0x8625 */ GLenum<'VERTEX_ATTRIB_ARRAY_TYPE'>; 468 | readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: /* 0x886A */ GLenum<'VERTEX_ATTRIB_ARRAY_NORMALIZED'>; 469 | readonly VERTEX_ATTRIB_ARRAY_POINTER: /* 0x8645 */ GLenum<'VERTEX_ATTRIB_ARRAY_POINTER'>; 470 | readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: /* 0x889F */ GLenum<'VERTEX_ATTRIB_ARRAY_BUFFER_BINDING'>; 471 | 472 | /* Read Format */ 473 | readonly IMPLEMENTATION_COLOR_READ_TYPE: /* 0x8B9A */ GLenum<'IMPLEMENTATION_COLOR_READ_TYPE'>; 474 | readonly IMPLEMENTATION_COLOR_READ_FORMAT: /* 0x8B9B */ GLenum<'IMPLEMENTATION_COLOR_READ_FORMAT'>; 475 | 476 | /* Shader Source */ 477 | readonly COMPILE_STATUS: /* 0x8B81 */ GLenum<'COMPILE_STATUS'>; 478 | 479 | /* Shader Precision-Specified Types */ 480 | readonly LOW_FLOAT: /* 0x8DF0 */ GLenum<'LOW_FLOAT'>; 481 | readonly MEDIUM_FLOAT: /* 0x8DF1 */ GLenum<'MEDIUM_FLOAT'>; 482 | readonly HIGH_FLOAT: /* 0x8DF2 */ GLenum<'HIGH_FLOAT'>; 483 | readonly LOW_INT: /* 0x8DF3 */ GLenum<'LOW_INT'>; 484 | readonly MEDIUM_INT: /* 0x8DF4 */ GLenum<'MEDIUM_INT'>; 485 | readonly HIGH_INT: /* 0x8DF5 */ GLenum<'HIGH_INT'>; 486 | 487 | /* Framebuffer Object. */ 488 | readonly FRAMEBUFFER: /* 0x8D40 */ GLenum<'FRAMEBUFFER'>; 489 | readonly RENDERBUFFER: /* 0x8D41 */ GLenum<'RENDERBUFFER'>; 490 | 491 | readonly RGBA4: /* 0x8056 */ GLenum<'RGBA4'>; 492 | readonly RGB5_A1: /* 0x8057 */ GLenum<'RGB5_A1'>; 493 | readonly RGB565: /* 0x8D62 */ GLenum<'RGB565'>; 494 | readonly DEPTH_COMPONENT16: /* 0x81A5 */ GLenum<'DEPTH_COMPONENT16'>; 495 | readonly STENCIL_INDEX8: /* 0x8D48 */ GLenum<'STENCIL_INDEX8'>; 496 | readonly DEPTH_STENCIL: /* 0x84F9 */ GLenum<'DEPTH_STENCIL'>; 497 | 498 | readonly RENDERBUFFER_WIDTH: /* 0x8D42 */ GLenum<'RENDERBUFFER_WIDTH'>; 499 | readonly RENDERBUFFER_HEIGHT: /* 0x8D43 */ GLenum<'RENDERBUFFER_HEIGHT'>; 500 | readonly RENDERBUFFER_INTERNAL_FORMAT: /* 0x8D44 */ GLenum<'RENDERBUFFER_INTERNAL_FORMAT'>; 501 | readonly RENDERBUFFER_RED_SIZE: /* 0x8D50 */ GLenum<'RENDERBUFFER_RED_SIZE'>; 502 | readonly RENDERBUFFER_GREEN_SIZE: /* 0x8D51 */ GLenum<'RENDERBUFFER_GREEN_SIZE'>; 503 | readonly RENDERBUFFER_BLUE_SIZE: /* 0x8D52 */ GLenum<'RENDERBUFFER_BLUE_SIZE'>; 504 | readonly RENDERBUFFER_ALPHA_SIZE: /* 0x8D53 */ GLenum<'RENDERBUFFER_ALPHA_SIZE'>; 505 | readonly RENDERBUFFER_DEPTH_SIZE: /* 0x8D54 */ GLenum<'RENDERBUFFER_DEPTH_SIZE'>; 506 | readonly RENDERBUFFER_STENCIL_SIZE: /* 0x8D55 */ GLenum<'RENDERBUFFER_STENCIL_SIZE'>; 507 | 508 | readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: /* 0x8CD0 */ GLenum<'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE'>; 509 | readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: /* 0x8CD1 */ GLenum<'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME'>; 510 | readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: /* 0x8CD2 */ GLenum<'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL'>; 511 | readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: /* 0x8CD3 */ GLenum<'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE'>; 512 | 513 | readonly COLOR_ATTACHMENT0: /* 0x8CE0 */ GLenum<'COLOR_ATTACHMENT0'>; 514 | readonly DEPTH_ATTACHMENT: /* 0x8D00 */ GLenum<'DEPTH_ATTACHMENT'>; 515 | readonly STENCIL_ATTACHMENT: /* 0x8D20 */ GLenum<'STENCIL_ATTACHMENT'>; 516 | readonly DEPTH_STENCIL_ATTACHMENT: /* 0x821A */ GLenum<'DEPTH_STENCIL_ATTACHMENT'>; 517 | 518 | readonly NONE: /* 0 */ GLenum<'NONE'>; 519 | 520 | readonly FRAMEBUFFER_COMPLETE: /* 0x8CD5 */ GLenum<'FRAMEBUFFER_COMPLETE'>; 521 | readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: /* 0x8CD6 */ GLenum<'FRAMEBUFFER_INCOMPLETE_ATTACHMENT'>; 522 | readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: /* 0x8CD7 */ GLenum<'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT'>; 523 | readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: /* 0x8CD9 */ GLenum<'FRAMEBUFFER_INCOMPLETE_DIMENSIONS'>; 524 | readonly FRAMEBUFFER_UNSUPPORTED: /* 0x8CDD */ GLenum<'FRAMEBUFFER_UNSUPPORTED'>; 525 | 526 | readonly FRAMEBUFFER_BINDING: /* 0x8CA6 */ GLenum<'FRAMEBUFFER_BINDING'>; 527 | readonly RENDERBUFFER_BINDING: /* 0x8CA7 */ GLenum<'RENDERBUFFER_BINDING'>; 528 | readonly MAX_RENDERBUFFER_SIZE: /* 0x84E8 */ GLenum<'MAX_RENDERBUFFER_SIZE'>; 529 | 530 | readonly INVALID_FRAMEBUFFER_OPERATION: /* 0x0506 */ GLenum<'INVALID_FRAMEBUFFER_OPERATION'>; 531 | 532 | /* WebGL-specific enums */ 533 | readonly UNPACK_FLIP_Y_WEBGL: /* 0x9240 */ GLenum<'UNPACK_FLIP_Y_WEBGL'>; 534 | readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: /* 0x9241 */ GLenum<'UNPACK_PREMULTIPLY_ALPHA_WEBGL'>; 535 | readonly CONTEXT_LOST_WEBGL: /* 0x9242 */ GLenum<'CONTEXT_LOST_WEBGL'>; 536 | readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: /* 0x9243 */ GLenum<'UNPACK_COLORSPACE_CONVERSION_WEBGL'>; 537 | readonly BROWSER_DEFAULT_WEBGL: /* 0x9244 */ GLenum<'BROWSER_DEFAULT_WEBGL'>; 538 | } 539 | import GL = WebGLRenderingContextStrict; 540 | interface Base extends Constants { 541 | readonly canvas: HTMLCanvasElement; 542 | readonly drawingBufferWidth: GLsizei; 543 | readonly drawingBufferHeight: GLsizei; 544 | 545 | /* [WebGLHandlesContextLoss] */ getContextAttributes(): WebGLContextAttributes | null; 546 | /* [WebGLHandlesContextLoss] */ isContextLost(): boolean; 547 | 548 | getExtension(name: 'EXT_texture_filter_anisotropic'): EXT_texture_filter_anisotropic | null; 549 | getExtension(name: 'OES_texture_float_linear'): {} | null; 550 | getExtension(name: 'WEBGL_compressed_texture_astc'): WEBGL_compressed_texture_astc | null; 551 | getExtension(name: 'WEBGL_compressed_texture_atc'): WEBGL_compressed_texture_atc | null; 552 | getExtension(name: 'WEBGL_compressed_texture_etc'): WEBGL_compressed_texture_etc | null; 553 | getExtension(name: 'WEBGL_compressed_texture_etc1'): WEBGL_compressed_texture_etc1 | null; 554 | getExtension(name: 'WEBGL_compressed_texture_pvrtc'): WEBGL_compressed_texture_pvrtc | null; 555 | getExtension(name: 'WEBGL_compressed_texture_s3tc'): WEBGL_compressed_texture_s3tc | null; 556 | getExtension(name: 'WEBGL_compressed_texture_s3tc_srgb'): WEBGL_compressed_texture_s3tc_srgb | null; 557 | getExtension(name: 'WEBGL_debug_renderer_info'): WEBGL_debug_renderer_info | null; 558 | getExtension(name: 'WEBGL_debug_shaders'): WEBGL_debug_shaders | null; 559 | getExtension(name: 'WEBGL_lose_context'): WEBGL_lose_context | null; 560 | 561 | getSupportedExtensions(): DOMString[] | null; 562 | 563 | activeTexture(texture: TextureUnit): void; 564 | attachShader(program: WebGLProgram, shader: WebGLShader): void; 565 | bindAttribLocation(program: WebGLProgram, index: GLuint, name: DOMString): void; 566 | /** Bind a WebGLBuffer to a buffer target. Pass null to clear the current binding. */ 567 | bindBuffer(target: BufferTarget, buffer: WebGLBuffer | null): void; 568 | /** Bind a WebGLFramebuffer to FRAMEBUFFER. Pass null to clear the current binding. */ 569 | bindFramebuffer(target: GL['FRAMEBUFFER'], framebuffer: WebGLFramebuffer | null): void; 570 | /** Bind a WebGLFramebuffer to RENDERBUFFER. Pass null to clear the current binding. */ 571 | bindRenderbuffer(target: GL['RENDERBUFFER'], renderbuffer: WebGLRenderbuffer | null): void; 572 | bindTexture(target: TextureTarget, texture: WebGLTexture | null): void; 573 | blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void; 574 | blendEquation(mode: BlendEquationMode): void; 575 | blendEquationSeparate(modeRGB: BlendEquationMode, modeAlpha: BlendEquationMode): void; 576 | // In the WebGL API, constant color and constant alpha cannot be used together as source and destination factors in the blend function. A call to blendFunc will generate an INVALID_OPERATION error if one of the two factors is set to CONSTANT_COLOR or ONE_MINUS_CONSTANT_COLOR and the other to CONSTANT_ALPHA or ONE_MINUS_CONSTANT_ALPHA. 577 | blendFunc(sfactor: GL['CONSTANT_COLOR'] | GL['ONE_MINUS_CONSTANT_COLOR'], dfactor: BlendFuncDstFactorNoConstantAlpha): void; 578 | blendFunc(sfactor: BlendFuncDstFactorNoConstantAlpha, dfactor: GL['CONSTANT_COLOR'] | GL['ONE_MINUS_CONSTANT_COLOR']): void; 579 | blendFunc(sfactor: GL['CONSTANT_ALPHA'] | GL['ONE_MINUS_CONSTANT_ALPHA'], dfactor: BlendFuncDstFactorNoConstantColor): void; 580 | blendFunc(sfactor: BlendFuncDstFactorNoConstantColor, dfactor: GL['CONSTANT_ALPHA'] | GL['ONE_MINUS_CONSTANT_ALPHA']): void; 581 | blendFunc(sfactor: BlendFuncDstFactorNoConstant | GL['SRC_ALPHA_SATURATE'], dfactor: BlendFuncDstFactorNoConstant): void; 582 | 583 | // A call to blendFuncSeparate will generate an INVALID_OPERATION error if srcRGB is set to CONSTANT_COLOR or ONE_MINUS_CONSTANT_COLOR and dstRGB is set to CONSTANT_ALPHA or ONE_MINUS_CONSTANT_ALPHA or vice versa. 584 | // This doesn't seem to apply to srcAlpha/dstAlpha. 585 | blendFuncSeparate(sfactor: GL['CONSTANT_COLOR'] | GL['ONE_MINUS_CONSTANT_COLOR'], dfactor: BlendFuncDstFactorNoConstantAlpha, 586 | srcAlpha: BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE'], dstAlpha: BlendFuncDstFactor): void; 587 | blendFuncSeparate(sfactor: BlendFuncDstFactorNoConstantAlpha, dfactor: GL['CONSTANT_COLOR'] | GL['ONE_MINUS_CONSTANT_COLOR'], 588 | srcAlpha: BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE'], dstAlpha: BlendFuncDstFactor): void; 589 | blendFuncSeparate(sfactor: GL['CONSTANT_ALPHA'] | GL['ONE_MINUS_CONSTANT_ALPHA'], dfactor: BlendFuncDstFactorNoConstantColor, 590 | srcAlpha: BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE'], dstAlpha: BlendFuncDstFactor): void; 591 | blendFuncSeparate(sfactor: BlendFuncDstFactorNoConstantColor, dfactor: GL['CONSTANT_ALPHA'] | GL['ONE_MINUS_CONSTANT_ALPHA'], 592 | srcAlpha: BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE'], dstAlpha: BlendFuncDstFactor): void; 593 | blendFuncSeparate(sfactor: BlendFuncDstFactorNoConstant | GL['SRC_ALPHA_SATURATE'], dfactor: BlendFuncDstFactorNoConstant, 594 | srcAlpha: BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE'], dstAlpha: BlendFuncDstFactor): void; 595 | 596 | bufferData(target: BufferTarget, size: GLsizeiptr, usage: BufferDataUsage): void; 597 | bufferData(target: BufferTarget, /* [AllowShared] */ data: BufferSource | null, usage: BufferDataUsage): void; 598 | bufferSubData(target: BufferTarget, offset: GLintptr, /* [AllowShared] */ data: BufferSource): void; 599 | 600 | /* [WebGLHandlesContextLoss] */ checkFramebufferStatus(target: GL['FRAMEBUFFER']): FramebufferStatus; 601 | clear(mask: GLbitfield): void; 602 | clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void; 603 | clearDepth(depth: GLclampf): void; 604 | clearStencil(s: GLint): void; 605 | colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void; 606 | compileShader(shader: WebGLShader): void; 607 | 608 | createBuffer(): WebGLBuffer | null; 609 | createFramebuffer(): WebGLFramebuffer | null; 610 | createProgram(): WebGLProgram | null; 611 | createRenderbuffer(): WebGLRenderbuffer | null; 612 | createShader(type: ShaderType): WebGLShader | null; 613 | createTexture(): WebGLTexture | null; 614 | 615 | cullFace(mode: CullFaceMode): void; 616 | 617 | deleteBuffer(buffer: WebGLBuffer | null): void; 618 | deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void; 619 | deleteProgram(program: WebGLProgram | null): void; 620 | deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void; 621 | deleteShader(shader: WebGLShader | null): void; 622 | deleteTexture(texture: WebGLTexture | null): void; 623 | 624 | depthFunc(func: ComparisonFunc): void; 625 | depthMask(flag: GLboolean): void; 626 | depthRange(zNear: GLclampf, zFar: GLclampf): void; 627 | detachShader(program: WebGLProgram, shader: WebGLShader): void; 628 | disable(cap: Capability): void; 629 | disableVertexAttribArray(index: GLuint): void; 630 | drawArrays(mode: DrawMode, first: GLint, count: GLsizei): void; 631 | drawElements(mode: DrawMode, count: GLsizei, type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT'], offset: GLintptr): void; 632 | 633 | enable(cap: Capability): void; 634 | enableVertexAttribArray(index: GLuint): void; 635 | finish(): void; 636 | flush(): void; 637 | framebufferRenderbuffer(target: GL['FRAMEBUFFER'], attachment: FramebufferRenderbufferAttachment, renderbuffertarget: GL['RENDERBUFFER'], renderbuffer: WebGLRenderbuffer | null): void; 638 | framebufferTexture2D(target: GL['FRAMEBUFFER'], attachment: FramebufferTexture2DAttachment, textarget: TexImage2DTarget, texture: WebGLTexture | null, level: 0): void; 639 | frontFace(mode: FrontFaceMode): void; 640 | 641 | generateMipmap(target: TextureTarget): void; 642 | 643 | getAttachedShaders(program: WebGLProgram): WebGLShader[] | null; 644 | 645 | /* [WebGLHandlesContextLoss] */ getAttribLocation(program: WebGLProgram, name: DOMString): GLint; 646 | 647 | getBufferParameter(target: BufferTarget, pname: GL['BUFFER_SIZE']): GLint; 648 | 649 | getParameter(pname: GL['ACTIVE_TEXTURE']): TextureUnit; 650 | getParameter(pname: GL['ALIASED_LINE_WIDTH_RANGE']): Float32Array; // (with 2 elements) 651 | getParameter(pname: GL['ALIASED_POINT_SIZE_RANGE']): Float32Array; // (with 2 elements) 652 | getParameter(pname: GL['ALPHA_BITS']): GLint; 653 | getParameter(pname: GL.BufferTargetBinding): WebGLBuffer; 654 | getParameter(pname: GL['BLEND']): GLboolean; 655 | getParameter(pname: GL['BLEND_COLOR']): Float32Array; // (with 4 values) 656 | getParameter(pname: GL['BLEND_DST_ALPHA']): BlendFuncDstFactor; 657 | getParameter(pname: GL['BLEND_DST_RGB']): BlendFuncDstFactor; 658 | getParameter(pname: GL['BLEND_EQUATION_ALPHA']): BlendEquationMode; 659 | getParameter(pname: GL['BLEND_EQUATION_RGB']): BlendEquationMode; 660 | getParameter(pname: GL['BLEND_SRC_ALPHA']): BlendFuncSrcFactor | GL['SRC_ALPHA_SATURATE']; 661 | getParameter(pname: GL['BLEND_SRC_RGB']): BlendFuncSrcFactor | GL['SRC_ALPHA_SATURATE']; 662 | getParameter(pname: GL['BLUE_BITS']): GLint; 663 | getParameter(pname: GL['COLOR_CLEAR_VALUE']): Float32Array; // (with 4 values) 664 | getParameter(pname: GL['COLOR_WRITEMASK']): GLboolean[]; // (with 4 values) 665 | getParameter(pname: GL['COMPRESSED_TEXTURE_FORMATS']): ArrayLike & Uint32Array; 666 | getParameter(pname: GL['CULL_FACE']): GLboolean; 667 | getParameter(pname: GL['CULL_FACE_MODE']): CullFaceMode; 668 | getParameter(pname: GL['CURRENT_PROGRAM']): WebGLProgram; 669 | getParameter(pname: GL['DEPTH_BITS']): GLint; 670 | getParameter(pname: GL['DEPTH_CLEAR_VALUE']): GLfloat; 671 | getParameter(pname: GL['DEPTH_FUNC']): ComparisonFunc; 672 | getParameter(pname: GL['DEPTH_RANGE']): Float32Array; // (with 2 elements) 673 | getParameter(pname: GL['DEPTH_TEST']): GLboolean; 674 | getParameter(pname: GL['DEPTH_WRITEMASK']): GLboolean; 675 | getParameter(pname: GL['DITHER']): GLboolean; 676 | getParameter(pname: GL['FRAMEBUFFER_BINDING']): WebGLFramebuffer; 677 | getParameter(pname: GL['FRONT_FACE']): FrontFaceMode; 678 | getParameter(pname: GL['GENERATE_MIPMAP_HINT']): HintMode; 679 | getParameter(pname: GL['GREEN_BITS']): GLint; 680 | getParameter(pname: GL['LINE_WIDTH']): GLfloat; 681 | getParameter(pname: GL['MAX_COMBINED_TEXTURE_IMAGE_UNITS']): GLint; 682 | getParameter(pname: GL['MAX_CUBE_MAP_TEXTURE_SIZE']): GLint; 683 | getParameter(pname: GL['MAX_FRAGMENT_UNIFORM_VECTORS']): GLint; 684 | getParameter(pname: GL['MAX_RENDERBUFFER_SIZE']): GLint; 685 | getParameter(pname: GL['MAX_TEXTURE_IMAGE_UNITS']): GLint; 686 | getParameter(pname: GL['MAX_TEXTURE_SIZE']): GLint; 687 | getParameter(pname: GL['MAX_VARYING_VECTORS']): GLint; 688 | getParameter(pname: GL['MAX_VERTEX_ATTRIBS']): GLint; 689 | getParameter(pname: GL['MAX_VERTEX_TEXTURE_IMAGE_UNITS']): GLint; 690 | getParameter(pname: GL['MAX_VERTEX_UNIFORM_VECTORS']): GLint; 691 | getParameter(pname: GL['MAX_VIEWPORT_DIMS']): Int32Array; // (with 2 elements) 692 | getParameter(pname: GL['PACK_ALIGNMENT']): GLint; 693 | getParameter(pname: GL['POLYGON_OFFSET_FACTOR']): GLfloat; 694 | getParameter(pname: GL['POLYGON_OFFSET_FILL']): GLboolean; 695 | getParameter(pname: GL['POLYGON_OFFSET_UNITS']): GLfloat; 696 | getParameter(pname: GL['RED_BITS']): GLint; 697 | getParameter(pname: GL['RENDERBUFFER_BINDING']): WebGLRenderbuffer; 698 | getParameter(pname: GL['RENDERER']): DOMString; 699 | getParameter(pname: GL['SAMPLE_ALPHA_TO_COVERAGE']): GLboolean; 700 | getParameter(pname: GL['SAMPLE_BUFFERS']): GLint; 701 | getParameter(pname: GL['SAMPLE_COVERAGE']): GLboolean; 702 | getParameter(pname: GL['SAMPLE_COVERAGE_INVERT']): GLboolean; 703 | getParameter(pname: GL['SAMPLE_COVERAGE_VALUE']): GLfloat; 704 | getParameter(pname: GL['SAMPLES']): GLint; 705 | getParameter(pname: GL['SCISSOR_BOX']): Int32Array; // (with 4 elements) 706 | getParameter(pname: GL['SCISSOR_TEST']): GLboolean; 707 | getParameter(pname: GL['SHADING_LANGUAGE_VERSION']): DOMString; 708 | getParameter(pname: GL['STENCIL_BACK_FAIL']): StencilOp; 709 | getParameter(pname: GL['STENCIL_BACK_FUNC']): ComparisonFunc; 710 | getParameter(pname: GL['STENCIL_BACK_PASS_DEPTH_FAIL']): StencilOp; 711 | getParameter(pname: GL['STENCIL_BACK_PASS_DEPTH_PASS']): StencilOp; 712 | getParameter(pname: GL['STENCIL_BACK_REF']): GLint; 713 | getParameter(pname: GL['STENCIL_BACK_VALUE_MASK']): GLuint; 714 | getParameter(pname: GL['STENCIL_BACK_WRITEMASK']): GLuint; 715 | getParameter(pname: GL['STENCIL_BITS']): GLint; 716 | getParameter(pname: GL['STENCIL_CLEAR_VALUE']): GLint; 717 | getParameter(pname: GL['STENCIL_FAIL']): StencilOp; 718 | getParameter(pname: GL['STENCIL_FUNC']): ComparisonFunc; 719 | getParameter(pname: GL['STENCIL_PASS_DEPTH_FAIL']): StencilOp; 720 | getParameter(pname: GL['STENCIL_PASS_DEPTH_PASS']): StencilOp; 721 | getParameter(pname: GL['STENCIL_REF']): GLint; 722 | getParameter(pname: GL['STENCIL_TEST']): GLboolean; 723 | getParameter(pname: GL['STENCIL_VALUE_MASK']): GLuint; 724 | getParameter(pname: GL['STENCIL_WRITEMASK']): GLuint; 725 | getParameter(pname: GL['SUBPIXEL_BITS']): GLint; 726 | getParameter(pname: GL['TEXTURE_BINDING_2D']): WebGLTexture; 727 | getParameter(pname: GL['TEXTURE_BINDING_CUBE_MAP']): WebGLTexture; 728 | getParameter(pname: GL['UNPACK_ALIGNMENT']): GLint; 729 | getParameter(pname: GL['UNPACK_COLORSPACE_CONVERSION_WEBGL']): GL['BROWSER_DEFAULT_WEBGL'] | GL['NONE']; 730 | getParameter(pname: GL['UNPACK_FLIP_Y_WEBGL']): GLboolean; 731 | getParameter(pname: GL['UNPACK_PREMULTIPLY_ALPHA_WEBGL']): GLboolean; 732 | getParameter(pname: GL['VENDOR']): DOMString; 733 | getParameter(pname: GL['VERSION']): DOMString; 734 | getParameter(pname: GL['VIEWPORT']): Int32Array; // (with 4 elements) 735 | 736 | /* [WebGLHandlesContextLoss] */ getError(): Error; 737 | 738 | getFramebufferAttachmentParameter(target: GL['FRAMEBUFFER'], attachment: FramebufferRenderbufferAttachment, pname: GL['FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE']): 739 | GL['RENDERBUFFER'] | GL['TEXTURE'] | GL['NONE']; 740 | getFramebufferAttachmentParameter(target: GL['FRAMEBUFFER'], attachment: FramebufferRenderbufferAttachment, pname: GL['FRAMEBUFFER_ATTACHMENT_OBJECT_NAME']): WebGLRenderbuffer | WebGLTexture; 741 | getFramebufferAttachmentParameter(target: GL['FRAMEBUFFER'], attachment: FramebufferRenderbufferAttachment, pname: GL['FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL']): GLint; 742 | getFramebufferAttachmentParameter(target: GL['FRAMEBUFFER'], attachment: FramebufferRenderbufferAttachment, pname: GL['FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE']): CubeMapFaces | 0; 743 | 744 | getProgramParameter(program: WebGLProgram, pname: GL['DELETE_STATUS']): GLboolean; 745 | getProgramParameter(program: WebGLProgram, pname: GL['LINK_STATUS']): GLboolean; 746 | getProgramParameter(program: WebGLProgram, pname: GL['VALIDATE_STATUS']): GLboolean; 747 | getProgramParameter(program: WebGLProgram, pname: GL['ATTACHED_SHADERS']): GLint; 748 | getProgramParameter(program: WebGLProgram, pname: GL['ACTIVE_ATTRIBUTES']): GLint; 749 | getProgramParameter(program: WebGLProgram, pname: GL['ACTIVE_UNIFORMS']): GLint; 750 | 751 | getProgramInfoLog(program: WebGLProgram): DOMString | null; 752 | 753 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_WIDTH']): GLint; 754 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_HEIGHT']): GLint; 755 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_RED_SIZE']): GLint; 756 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_GREEN_SIZE']): GLint; 757 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_BLUE_SIZE']): GLint; 758 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_ALPHA_SIZE']): GLint; 759 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_DEPTH_SIZE']): GLint; 760 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_STENCIL_SIZE']): GLint; 761 | 762 | getShaderParameter(shader: WebGLShader, pname: GL['SHADER_TYPE']): ShaderType; 763 | getShaderParameter(shader: WebGLShader, pname: GL['DELETE_STATUS']): GLboolean; 764 | getShaderParameter(shader: WebGLShader, pname: GL['COMPILE_STATUS']): GLboolean; 765 | 766 | getShaderPrecisionFormat(shadertype: ShaderType, precisiontype: ShaderPrecisionType): WebGLShaderPrecisionFormat | null; 767 | getShaderInfoLog(shader: WebGLShader): DOMString | null; 768 | 769 | getShaderSource(shader: WebGLShader): DOMString | null; 770 | 771 | getTexParameter(target: TextureTarget, pname: GL['TEXTURE_MAG_FILTER']): TextureMagFilter; 772 | getTexParameter(target: TextureTarget, pname: GL['TEXTURE_MIN_FILTER']): TextureMinFilter; 773 | getTexParameter(target: TextureTarget, pname: GL['TEXTURE_WRAP_S']): TextureWrap; 774 | getTexParameter(target: TextureTarget, pname: GL['TEXTURE_WRAP_T']): TextureWrap; 775 | 776 | getUniformLocation(program: WebGLProgram, name: DOMString): WebGLUniformLocation | null; 777 | 778 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_BUFFER_BINDING']): WebGLBuffer; 779 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_ENABLED']): GLboolean; 780 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_SIZE']): GLint; 781 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_STRIDE']): GLint; 782 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_TYPE']): ArrayType; 783 | getVertexAttrib(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_NORMALIZED']): GLboolean; 784 | getVertexAttrib(index: GLuint, pname: GL['CURRENT_VERTEX_ATTRIB']): Float32Array; // (with 4 elements) 785 | 786 | /* [WebGLHandlesContextLoss] */ getVertexAttribOffset(index: GLuint, pname: GL['VERTEX_ATTRIB_ARRAY_POINTER']): GLintptr; 787 | 788 | hint(target: GL['GENERATE_MIPMAP_HINT'], mode: HintMode): void; 789 | /* [WebGLHandlesContextLoss] */ isBuffer(buffer: WebGLBuffer | null): GLboolean; 790 | /* [WebGLHandlesContextLoss] */ isEnabled(cap: Capability): GLboolean; 791 | /* [WebGLHandlesContextLoss] */ isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean; 792 | /* [WebGLHandlesContextLoss] */ isProgram(program: WebGLProgram | null): GLboolean; 793 | /* [WebGLHandlesContextLoss] */ isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean; 794 | /* [WebGLHandlesContextLoss] */ isShader(shader: WebGLShader | null): GLboolean; 795 | /* [WebGLHandlesContextLoss] */ isTexture(texture: WebGLTexture | null): GLboolean; 796 | lineWidth(width: GLfloat): void; 797 | linkProgram(program: WebGLProgram): void; 798 | 799 | pixelStorei(pname: GL['PACK_ALIGNMENT'], param: 1 | 2 | 4 | 8): void; 800 | pixelStorei(pname: GL['UNPACK_ALIGNMENT'], param: 1 | 2 | 4 | 8): void; 801 | pixelStorei(pname: GL['UNPACK_FLIP_Y_WEBGL'], param: boolean): void; 802 | pixelStorei(pname: GL['UNPACK_PREMULTIPLY_ALPHA_WEBGL'], param: boolean): void; 803 | pixelStorei(pname: GL['UNPACK_COLORSPACE_CONVERSION_WEBGL'], param: GL['BROWSER_DEFAULT_WEBGL'] | GL['NONE']): void; 804 | 805 | polygonOffset(factor: GLfloat, units: GLfloat): void; 806 | 807 | readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: ReadPixelsFormat, type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array): void; 808 | readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: ReadPixelsFormat, 809 | type: GL['UNSIGNED_SHORT_5_6_5'] | GL['UNSIGNED_SHORT_4_4_4_4'] | GL['UNSIGNED_SHORT_5_5_5_1'], 810 | /* [AllowShared] */ pixels: Uint16Array): void; 811 | readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: ReadPixelsFormat, type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array): void; 812 | 813 | renderbufferStorage(target: GL['RENDERBUFFER'], internalformat: RenderbufferInternalFormat, width: GLsizei, height: GLsizei): void; 814 | sampleCoverage(value: GLclampf, invert: GLboolean): void; 815 | scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; 816 | 817 | shaderSource(shader: WebGLShader, source: DOMString): void; 818 | 819 | stencilFunc(func: ComparisonFunc, ref: GLint, mask: GLuint): void; 820 | stencilFuncSeparate(face: CullFaceMode, func: ComparisonFunc, ref: GLint, mask: GLuint): void; 821 | stencilMask(mask: GLuint): void; 822 | stencilMaskSeparate(face: CullFaceMode, mask: GLuint): void; 823 | stencilOp(fail: StencilOp, zfail: StencilOp, zpass: StencilOp): void; 824 | stencilOpSeparate(face: CullFaceMode, fail: StencilOp, zfail: StencilOp, zpass: StencilOp): void; 825 | 826 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['ALPHA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 827 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGB'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 828 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGB'], type: GL['UNSIGNED_SHORT_5_6_5'], /* [AllowShared] */ pixels: Uint16Array | null): void; 829 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGBA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 830 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGBA'], type: GL['UNSIGNED_SHORT_5_5_5_1'] | GL['UNSIGNED_SHORT_4_4_4_4'], /* [AllowShared] */ pixels: Uint16Array | null): void; 831 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE_ALPHA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 832 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 833 | 834 | // May throw DOMException: 835 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], format: GL['ALPHA'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 836 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], format: GL['RGB'], type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT_5_6_5'], source: TexImageSource): void; 837 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], format: GL['RGBA'], type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT_5_5_5_1'] | GL['UNSIGNED_SHORT_4_4_4_4'], source: TexImageSource): void; 838 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], format: GL['LUMINANCE_ALPHA'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 839 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], format: GL['LUMINANCE'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 840 | 841 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['ALPHA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 842 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGB'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 843 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGB'], type: GL['UNSIGNED_SHORT_5_6_5'], /* [AllowShared] */ pixels: Uint16Array | null): void; 844 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGBA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 845 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGBA'], type: GL['UNSIGNED_SHORT_5_5_5_1'] | GL['UNSIGNED_SHORT_4_4_4_4'], /* [AllowShared] */ pixels: Uint16Array | null): void; 846 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE_ALPHA'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 847 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 848 | 849 | // May throw DOMException: 850 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['ALPHA'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 851 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGB'], type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT_5_6_5'], source: TexImageSource): void; 852 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGBA'], type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT_5_5_5_1'] | GL['UNSIGNED_SHORT_4_4_4_4'], source: TexImageSource): void; 853 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE_ALPHA'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 854 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 855 | 856 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: never, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 857 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: never, /* [AllowShared] */ data: ArrayBufferView): void; 858 | 859 | copyTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: TextureInternalFormat, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: 0): void; 860 | copyTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; 861 | 862 | texParameterf(target: TextureTarget, pname: never, param: GLfloat): void; 863 | texParameteri(target: TextureTarget, pname: GL['TEXTURE_MAG_FILTER'], param: TextureMagFilter): void; 864 | texParameteri(target: TextureTarget, pname: GL['TEXTURE_MIN_FILTER'], param: TextureMinFilter): void; 865 | texParameteri(target: TextureTarget, pname: GL['TEXTURE_WRAP_S'], param: TextureWrap): void; 866 | texParameteri(target: TextureTarget, pname: GL['TEXTURE_WRAP_T'], param: TextureWrap): void; 867 | 868 | uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void; 869 | uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void; 870 | uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void; 871 | uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void; 872 | 873 | uniform1i(location: WebGLUniformLocation | null, x: GLint): void; 874 | uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void; 875 | uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void; 876 | uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void; 877 | 878 | uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void; 879 | uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void; 880 | uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void; 881 | uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void; 882 | 883 | uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void; 884 | uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void; 885 | uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void; 886 | uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void; 887 | 888 | uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void; 889 | uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void; 890 | uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void; 891 | 892 | useProgram(program: WebGLProgram | null): void; 893 | validateProgram(program: WebGLProgram): void; 894 | 895 | vertexAttrib1f(index: GLuint, x: GLfloat): void; 896 | vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void; 897 | vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void; 898 | vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void; 899 | 900 | vertexAttrib1fv(index: GLuint, values: Float32List): void; 901 | vertexAttrib2fv(index: GLuint, values: Float32List): void; 902 | vertexAttrib3fv(index: GLuint, values: Float32List): void; 903 | vertexAttrib4fv(index: GLuint, values: Float32List): void; 904 | 905 | vertexAttribPointer(index: GLuint, size: 1 | 2 | 3 | 4, type: ArrayType, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void; 906 | 907 | viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; 908 | } 909 | 910 | // WebGLRenderingContext members which aren't common to WebGL2, mostly because their return values 911 | // are extended in WebGL2; 912 | interface Extra { 913 | // Khronos ratified WebGL Extensions 914 | getExtension(name: 'ANGLE_instanced_arrays '): ANGLE_instanced_arrays | null; 915 | getExtension(name: 'EXT_blend_minmax '): EXT_blend_minmax | null; 916 | getExtension(name: 'EXT_frag_depth'): {} | null; 917 | getExtension(name: 'EXT_shader_texture_lod'): {} | null; 918 | getExtension(name: 'OES_element_index_uint'): {} | null; 919 | getExtension(name: 'OES_standard_derivatives'): OES_standard_derivatives | null; 920 | getExtension(name: 'OES_texture_float'): OES_texture_float | null; 921 | getExtension(name: 'OES_texture_half_float'): OES_texture_half_float | null; 922 | getExtension(name: 'OES_texture_half_float_linear'): {} | null; 923 | getExtension(name: 'OES_vertex_array_object'): OES_vertex_array_object | null; 924 | getExtension(name: 'WEBGL_depth_texture'): WEBGL_depth_texture | null; 925 | getExtension(name: 'WEBGL_draw_buffers'): WEBGL_draw_buffers | null; 926 | 927 | // Community approved WebGL Extensions 928 | getExtension(name: 'EXT_color_buffer_half_float'): EXT_color_buffer_half_float | null; 929 | getExtension(name: 'EXT_disjoint_timer_query'): EXT_disjoint_timer_query | null; 930 | getExtension(name: 'EXT_sRGB'): EXT_sRGB | null; 931 | getExtension(name: 'WEBGL_color_buffer_float'): WEBGL_color_buffer_float | null; 932 | 933 | getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null; 934 | getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null; 935 | 936 | getRenderbufferParameter(target: GL['RENDERBUFFER'], pname: GL['RENDERBUFFER_INTERNAL_FORMAT']): RenderbufferInternalFormat; 937 | 938 | getParameter(pname: GL['IMPLEMENTATION_COLOR_READ_FORMAT']): ReadPixelsFormat; 939 | getParameter(pname: GL['IMPLEMENTATION_COLOR_READ_TYPE']): ReadPixelsType; 940 | 941 | getBufferParameter(target: BufferTarget, pname: GL['BUFFER_USAGE']): BufferDataUsage; 942 | 943 | getUniform(program: WebGLProgram, location: WebGLUniformLocation): UniformType; 944 | } 945 | 946 | // parameter types: 947 | type TextureUnit = GL['TEXTURE0'] 948 | | GL['TEXTURE1'] 949 | | GL['TEXTURE2'] 950 | | GL['TEXTURE3'] 951 | | GL['TEXTURE4'] 952 | | GL['TEXTURE5'] 953 | | GL['TEXTURE6'] 954 | | GL['TEXTURE7'] 955 | | GL['TEXTURE8'] 956 | | GL['TEXTURE9'] 957 | | GL['TEXTURE10'] 958 | | GL['TEXTURE11'] 959 | | GL['TEXTURE12'] 960 | | GL['TEXTURE13'] 961 | | GL['TEXTURE14'] 962 | | GL['TEXTURE15'] 963 | | GL['TEXTURE16'] 964 | | GL['TEXTURE17'] 965 | | GL['TEXTURE18'] 966 | | GL['TEXTURE19'] 967 | | GL['TEXTURE20'] 968 | | GL['TEXTURE21'] 969 | | GL['TEXTURE22'] 970 | | GL['TEXTURE23'] 971 | | GL['TEXTURE24'] 972 | | GL['TEXTURE25'] 973 | | GL['TEXTURE26'] 974 | | GL['TEXTURE27'] 975 | | GL['TEXTURE28'] 976 | | GL['TEXTURE29'] 977 | | GL['TEXTURE30'] 978 | | GL['TEXTURE31']; 979 | type BufferTarget = GL['ARRAY_BUFFER'] | GL['ELEMENT_ARRAY_BUFFER']; 980 | type BufferTargetBinding = GL['ARRAY_BUFFER_BINDING'] | GL['ELEMENT_ARRAY_BUFFER']; 981 | type RenderbufferTarget = GL['RENDERBUFFER']; 982 | type RenderbufferInternalFormat = GL['RGBA4'] 983 | | GL['RGB565'] 984 | | GL['RGB5_A1'] 985 | | GL['DEPTH_COMPONENT16'] 986 | | GL['STENCIL_INDEX8'] 987 | | GL['DEPTH_STENCIL']; 988 | type TextureInternalFormat = GL['ALPHA'] 989 | | GL['RGB'] 990 | | GL['RGBA'] 991 | | GL['LUMINANCE'] 992 | | GL['LUMINANCE_ALPHA']; 993 | type TextureTarget = GL['TEXTURE_2D'] | GL['TEXTURE_CUBE_MAP']; 994 | type BlendEquationMode = GL['FUNC_ADD'] | GL['FUNC_SUBTRACT'] | GL['FUNC_REVERSE_SUBTRACT']; 995 | type BlendFuncDstFactorNoConstant = GL['ZERO'] 996 | | GL['ONE'] 997 | | GL['SRC_COLOR'] 998 | | GL['ONE_MINUS_SRC_COLOR'] 999 | | GL['DST_COLOR'] 1000 | | GL['ONE_MINUS_DST_COLOR'] 1001 | | GL['SRC_ALPHA'] 1002 | | GL['ONE_MINUS_SRC_ALPHA'] 1003 | | GL['DST_ALPHA'] 1004 | | GL['ONE_MINUS_DST_ALPHA']; 1005 | type BlendFuncDstFactorNoConstantColor = BlendFuncDstFactorNoConstant 1006 | | GL['CONSTANT_ALPHA'] 1007 | | GL['ONE_MINUS_CONSTANT_ALPHA']; 1008 | type BlendFuncDstFactorNoConstantAlpha = BlendFuncDstFactorNoConstant 1009 | | GL['CONSTANT_COLOR'] 1010 | | GL['ONE_MINUS_CONSTANT_COLOR']; 1011 | type BlendFuncDstFactor = BlendFuncDstFactorNoConstantAlpha | BlendFuncDstFactorNoConstantColor; 1012 | type BlendFuncSrcFactor = BlendFuncDstFactor | GL['SRC_ALPHA_SATURATE']; 1013 | type BufferDataUsage = GL['STREAM_DRAW'] | GL['STATIC_DRAW'] | GL['DYNAMIC_DRAW']; 1014 | type FramebufferStatus = GL['FRAMEBUFFER_COMPLETE'] 1015 | | GL['FRAMEBUFFER_INCOMPLETE_ATTACHMENT'] 1016 | | GL['FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT'] 1017 | | GL['FRAMEBUFFER_INCOMPLETE_DIMENSIONS'] 1018 | | GL['FRAMEBUFFER_UNSUPPORTED']; 1019 | type CubeMapFaces = GL['TEXTURE_CUBE_MAP_POSITIVE_X'] 1020 | | GL['TEXTURE_CUBE_MAP_NEGATIVE_X'] 1021 | | GL['TEXTURE_CUBE_MAP_POSITIVE_Y'] 1022 | | GL['TEXTURE_CUBE_MAP_NEGATIVE_Y'] 1023 | | GL['TEXTURE_CUBE_MAP_POSITIVE_Z'] 1024 | | GL['TEXTURE_CUBE_MAP_NEGATIVE_Z']; 1025 | type TexImage2DTarget = GL['TEXTURE_2D'] | CubeMapFaces; 1026 | type ShaderType = GL['FRAGMENT_SHADER'] | GL['VERTEX_SHADER']; 1027 | type CullFaceMode = GL['FRONT'] | GL['BACK'] | GL['FRONT_AND_BACK']; 1028 | type Capability = GL['BLEND'] 1029 | | GL['CULL_FACE'] 1030 | | GL['DEPTH_TEST'] 1031 | | GL['DITHER'] 1032 | | GL['POLYGON_OFFSET_FILL'] 1033 | | GL['SAMPLE_ALPHA_TO_COVERAGE'] 1034 | | GL['SAMPLE_COVERAGE'] 1035 | | GL['SCISSOR_TEST'] 1036 | | GL['STENCIL_TEST']; 1037 | type ComparisonFunc = GL['NEVER'] 1038 | | GL['LESS'] 1039 | | GL['EQUAL'] 1040 | | GL['LEQUAL'] 1041 | | GL['GREATER'] 1042 | | GL['NOTEQUAL'] 1043 | | GL['GEQUAL'] 1044 | | GL['ALWAYS']; 1045 | type DrawMode = GL['POINTS'] 1046 | | GL['LINE_STRIP'] 1047 | | GL['LINE_LOOP'] 1048 | | GL['LINES'] 1049 | | GL['TRIANGLE_STRIP'] 1050 | | GL['TRIANGLE_FAN'] 1051 | | GL['TRIANGLES']; 1052 | type FramebufferRenderbufferAttachment = GL['COLOR_ATTACHMENT0'] 1053 | | GL['DEPTH_ATTACHMENT'] 1054 | | GL['DEPTH_STENCIL_ATTACHMENT'] 1055 | | GL['STENCIL_ATTACHMENT']; 1056 | type FramebufferTexture2DAttachment = GL['COLOR_ATTACHMENT0'] 1057 | | GL['DEPTH_ATTACHMENT'] 1058 | | GL['STENCIL_ATTACHMENT']; 1059 | type Error = GL['NO_ERROR'] 1060 | | GL['INVALID_ENUM'] 1061 | | GL['INVALID_VALUE'] 1062 | | GL['INVALID_OPERATION'] 1063 | | GL['INVALID_FRAMEBUFFER_OPERATION'] 1064 | | GL['OUT_OF_MEMORY'] 1065 | | GL['CONTEXT_LOST_WEBGL']; 1066 | type ShaderPrecisionType = GL['LOW_FLOAT'] 1067 | | GL['MEDIUM_FLOAT'] 1068 | | GL['HIGH_FLOAT'] 1069 | | GL['LOW_INT'] 1070 | | GL['MEDIUM_INT'] 1071 | | GL['HIGH_INT']; 1072 | type ArrayType = GL['BYTE'] 1073 | | GL['UNSIGNED_BYTE'] 1074 | | GL['SHORT'] 1075 | | GL['UNSIGNED_SHORT'] 1076 | | GL['FLOAT']; 1077 | type HintMode = GL['FASTEST'] | GL['NICEST'] | GL['DONT_CARE']; 1078 | type StencilOp = GL['KEEP'] 1079 | | GL['ZERO'] 1080 | | GL['REPLACE'] 1081 | | GL['INCR'] 1082 | | GL['INCR_WRAP'] 1083 | | GL['DECR'] 1084 | | GL['DECR_WRAP'] 1085 | | GL['INVERT']; 1086 | type TextureMagFilter = GL['LINEAR'] | GL['NEAREST']; 1087 | type TextureMinFilter = GL['LINEAR'] | GL['NEAREST'] | GL['NEAREST_MIPMAP_NEAREST'] | GL['LINEAR_MIPMAP_NEAREST'] | GL['NEAREST_MIPMAP_LINEAR'] | GL['LINEAR_MIPMAP_LINEAR']; 1088 | type TextureWrap = GL['REPEAT'] | GL['CLAMP_TO_EDGE'] | GL['MIRRORED_REPEAT']; 1089 | type FrontFaceMode = GL['CW'] | GL['CCW']; 1090 | type AttribType = GL['FLOAT'] 1091 | | GL['FLOAT_VEC2'] 1092 | | GL['FLOAT_VEC3'] 1093 | | GL['FLOAT_VEC4'] 1094 | | GL['FLOAT_MAT2'] 1095 | | GL['FLOAT_MAT3'] 1096 | | GL['FLOAT_MAT4']; 1097 | type UniformType = GL['FLOAT'] 1098 | | GL['FLOAT_VEC2'] 1099 | | GL['FLOAT_VEC3'] 1100 | | GL['FLOAT_VEC4'] 1101 | | GL['INT'] 1102 | | GL['INT_VEC2'] 1103 | | GL['INT_VEC3'] 1104 | | GL['INT_VEC4'] 1105 | | GL['BOOL'] 1106 | | GL['BOOL_VEC2'] 1107 | | GL['BOOL_VEC3'] 1108 | | GL['BOOL_VEC4'] 1109 | | GL['FLOAT_MAT2'] 1110 | | GL['FLOAT_MAT3'] 1111 | | GL['FLOAT_MAT4'] 1112 | | GL['SAMPLER_2D'] 1113 | | GL['SAMPLER_CUBE']; 1114 | type ReadPixelsFormat = GL['ALPHA'] | GL['RGB'] | GL['RGBA']; 1115 | type ReadPixelsType = GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT_5_6_5'] | GL['UNSIGNED_SHORT_4_4_4_4'] | GL['UNSIGNED_SHORT_5_5_5_1'] | GL['FLOAT']; 1116 | 1117 | // ####################################### 1118 | // ## Khronos ratified WebGL Extensions ## 1119 | // ####################################### 1120 | 1121 | // https://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/ 1122 | /* [NoInterfaceObject] */ 1123 | interface ANGLE_instanced_arrays { 1124 | readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: /* 0x88FE */ GLenum<'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'>; 1125 | drawArraysInstancedANGLE(mode: DrawMode, first: GLint, count: GLsizei, primcount: GLsizei): void; 1126 | drawElementsInstancedANGLE(mode: DrawMode, count: GLsizei, type: GL['UNSIGNED_BYTE'] | GL['UNSIGNED_SHORT'], offset: GLintptr): void; 1127 | // Only with OES_element_index_uint 1128 | drawElementsInstancedANGLE(mode: DrawMode, count: GLsizei, type: GL['UNSIGNED_INT'], offset: GLintptr): void; 1129 | vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void; 1130 | } 1131 | interface Base_ANGLE_instanced_arrays { 1132 | getParameter(pname: WEBGL_draw_buffers['MAX_COLOR_ATTACHMENTS_WEBGL']): GLuint; 1133 | getParameter(pname: WEBGL_draw_buffers['MAX_DRAW_BUFFERS_WEBGL']): GLuint; 1134 | getParameter(pname: DrawBuffer): GL['NONE'] | GL['BACK'] | ColorAttachment; // accurate? 1135 | framebufferRenderbuffer(target: GL['FRAMEBUFFER'], attachment: ColorAttachment, renderbuffertarget: GL['RENDERBUFFER'], renderbuffer: WebGLRenderbuffer | null): void; 1136 | framebufferTexture2D(target: GL['FRAMEBUFFER'], attachment: ColorAttachment, textarget: TexImage2DTarget, texture: WebGLTexture | null, level: GLint): void; 1137 | drawBuffersWEBGL(buffers: Array): void; 1138 | getVertexAttrib(index: GLuint, pname: WEBGL_draw_buffers['MAX_COLOR_ATTACHMENTS_WEBGL']): GLint; 1139 | } 1140 | 1141 | // https://www.khronos.org/registry/webgl/extensions/OES_texture_half_float/ 1142 | interface Base_OES_texture_float { 1143 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['ALPHA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1144 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGB'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1145 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGBA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1146 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE_ALPHA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1147 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1148 | 1149 | // May throw DOMException: 1150 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], format: GL['ALPHA'], type: GL['FLOAT'], source: TexImageSource): void; 1151 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], format: GL['RGB'], type: GL['FLOAT'], source: TexImageSource): void; 1152 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], format: GL['RGBA'], type: GL['FLOAT'], source: TexImageSource): void; 1153 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], format: GL['LUMINANCE_ALPHA'], type: GL['FLOAT'], source: TexImageSource): void; 1154 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], format: GL['LUMINANCE'], type: GL['FLOAT'], source: TexImageSource): void; 1155 | 1156 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['ALPHA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1157 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGB'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1158 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGBA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1159 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE_ALPHA'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1160 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE'], type: GL['FLOAT'], /* [AllowShared] */ pixels: Float32Array | null): void; 1161 | 1162 | // May throw DOMException: 1163 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['ALPHA'], type: GL['FLOAT'], source: TexImageSource): void; 1164 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGB'], type: GL['FLOAT'], source: TexImageSource): void; 1165 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGBA'], type: GL['FLOAT'], source: TexImageSource): void; 1166 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE_ALPHA'], type: GL['FLOAT'], source: TexImageSource): void; 1167 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE'], type: GL['FLOAT'], source: TexImageSource): void; 1168 | } 1169 | 1170 | // https://www.khronos.org/registry/webgl/extensions/OES_texture_half_float/ 1171 | interface OES_texture_half_float { 1172 | readonly HALF_FLOAT_OES: /* 0x8D61 */ GLenum<'HALF_FLOAT_OES'>; 1173 | } 1174 | interface Base_OES_texture_half_float { 1175 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1176 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGB'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1177 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], width: GLsizei, height: GLsizei, border: 0, format: GL['RGBA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1178 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE_ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1179 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], width: GLsizei, height: GLsizei, border: 0, format: GL['LUMINANCE'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1180 | 1181 | // May throw DOMException: 1182 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['ALPHA'], format: GL['ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1183 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGB'], format: GL['RGB'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1184 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['RGBA'], format: GL['RGBA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1185 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE_ALPHA'], format: GL['LUMINANCE_ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1186 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['LUMINANCE'], format: GL['LUMINANCE'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1187 | 1188 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1189 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGB'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1190 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['RGBA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1191 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE_ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1192 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GL['LUMINANCE'], type: OES_texture_half_float['HALF_FLOAT_OES'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1193 | 1194 | // May throw DOMException: 1195 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1196 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGB'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1197 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['RGBA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1198 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE_ALPHA'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1199 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: GL['LUMINANCE'], type: OES_texture_half_float['HALF_FLOAT_OES'], source: TexImageSource): void; 1200 | } 1201 | 1202 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_lose_context/ 1203 | /* [NoInterfaceObject] */ 1204 | interface WEBGL_lose_context { 1205 | loseContext(): void; 1206 | restoreContext(): void; 1207 | } 1208 | 1209 | // https://www.khronos.org/registry/webgl/extensions/OES_standard_derivatives/ 1210 | interface OES_standard_derivatives { 1211 | readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: /* 0x8B8B */ GLenum<'FRAGMENT_SHADER_DERIVATIVE_HINT_OES'>; 1212 | } 1213 | interface Base_OES_standard_derivatives { 1214 | hint(target: OES_standard_derivatives['FRAGMENT_SHADER_DERIVATIVE_HINT_OES'], mode: HintMode): void; 1215 | getParameter(pname: OES_standard_derivatives['FRAGMENT_SHADER_DERIVATIVE_HINT_OES']): HintMode; 1216 | } 1217 | 1218 | // https://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/ 1219 | /* [NoInterfaceObject] */ 1220 | interface WebGLVertexArrayObjectOES extends WebGLObject { 1221 | __WebGLObjectBrand: 'WebGLVertexArrayObjectOES'; 1222 | } 1223 | /* [NoInterfaceObject] */ 1224 | interface OES_vertex_array_object { 1225 | readonly VERTEX_ARRAY_BINDING_OES: /* 0x85B5 */ GLenum<'VERTEX_ARRAY_BINDING_OES'>; 1226 | 1227 | createVertexArrayOES(): WebGLVertexArrayObjectOES | null; 1228 | deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void; 1229 | /* [WebGLHandlesContextLoss] */ isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean; 1230 | bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void; 1231 | } 1232 | 1233 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/ 1234 | /* [NoInterfaceObject] */ 1235 | interface WEBGL_debug_renderer_info { 1236 | readonly UNMASKED_VENDOR_WEBGL: /* 0x9245 */ GLenum<'UNMASKED_VENDOR_WEBGL'>; 1237 | readonly UNMASKED_RENDERER_WEBGL: /* 0x9246 */ GLenum<'UNMASKED_RENDERER_WEBGL'>; 1238 | } 1239 | interface Base_WEBGL_debug_renderer_info { 1240 | getParameter(pname: WEBGL_debug_renderer_info['UNMASKED_VENDOR_WEBGL']): DOMString; 1241 | getParameter(pname: WEBGL_debug_renderer_info['UNMASKED_RENDERER_WEBGL']): DOMString; 1242 | } 1243 | 1244 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_shaders/ 1245 | /* [NoInterfaceObject] */ 1246 | interface WEBGL_debug_shaders { 1247 | getTranslatedShaderSource(shader: WebGLShader): DOMString; 1248 | } 1249 | 1250 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/ 1251 | /* [NoInterfaceObject] */ 1252 | interface WEBGL_compressed_texture_s3tc { 1253 | /* Compressed Texture Formats */ 1254 | readonly COMPRESSED_RGB_S3TC_DXT1_EXT: /* 0x83F0 */ GLenum<'COMPRESSED_RGB_S3TC_DXT1_EXT'>; 1255 | readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: /* 0x83F1 */ GLenum<'COMPRESSED_RGBA_S3TC_DXT1_EXT'>; 1256 | readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: /* 0x83F2 */ GLenum<'COMPRESSED_RGBA_S3TC_DXT3_EXT'>; 1257 | readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: /* 0x83F3 */ GLenum<'COMPRESSED_RGBA_S3TC_DXT5_EXT'>; 1258 | } 1259 | interface Base_WEBGL_compressed_texture_s3tc { 1260 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatS3tc, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1261 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatS3tc, /* [AllowShared] */ data: ArrayBufferView): void; 1262 | } 1263 | type CompressedTextureFormatS3tc = WEBGL_compressed_texture_s3tc['COMPRESSED_RGB_S3TC_DXT1_EXT'] 1264 | | WEBGL_compressed_texture_s3tc['COMPRESSED_RGBA_S3TC_DXT1_EXT'] 1265 | | WEBGL_compressed_texture_s3tc['COMPRESSED_RGBA_S3TC_DXT3_EXT'] 1266 | | WEBGL_compressed_texture_s3tc['COMPRESSED_RGBA_S3TC_DXT5_EXT']; 1267 | 1268 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ 1269 | /* [NoInterfaceObject] */ 1270 | interface WEBGL_depth_texture { 1271 | readonly UNSIGNED_INT_24_8_WEBGL: /* 0x84FA */ GLenum<'UNSIGNED_INT_24_8_WEBGL'>; 1272 | } 1273 | interface Base_WEBGL_depth_texture { 1274 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['DEPTH_COMPONENT'], width: GLsizei, height: GLsizei, border: 0, format: GL['DEPTH_COMPONENT'], type: GL['UNSIGNED_SHORT'], /* [AllowShared] */ pixels: Uint16Array | null): void; 1275 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['DEPTH_COMPONENT'], width: GLsizei, height: GLsizei, border: 0, format: GL['DEPTH_COMPONENT'], type: GL['UNSIGNED_INT'], /* [AllowShared] */ pixels: Uint32Array | null): void; 1276 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['DEPTH_STENCIL'], width: GLsizei, height: GLsizei, border: 0, format: GL['DEPTH_STENCIL'], type: WEBGL_depth_texture['UNSIGNED_INT_24_8_WEBGL'], /* [AllowShared] */ pixels: Uint32Array | null): void; 1277 | 1278 | // May throw DOMException: 1279 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['DEPTH_COMPONENT'], format: GL['DEPTH_COMPONENT'], type: GL['UNSIGNED_SHORT'] | GL['UNSIGNED_INT'], source: TexImageSource): void; 1280 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: GL['DEPTH_STENCIL'], format: GL['DEPTH_STENCIL'], type: WEBGL_depth_texture['UNSIGNED_INT_24_8_WEBGL'], source: TexImageSource): void; 1281 | 1282 | framebufferTexture2D(target: GL['FRAMEBUFFER'], attachment: GL['DEPTH_STENCIL_ATTACHMENT'], textarget: TexImage2DTarget, texture: WebGLTexture | null, level: GLint): void; 1283 | } 1284 | 1285 | // https://www.khronos.org/registry/webgl/extensions/Base_OES_element_index_uint/ 1286 | interface Base_OES_element_index_uint { 1287 | drawElements(mode: DrawMode, count: GLsizei, type: GL['UNSIGNED_INT'], offset: GLintptr): void; 1288 | } 1289 | 1290 | // https://www.khronos.org/registry/webgl/extensions/EXT_texture_filter_anisotropic/ 1291 | /* [NoInterfaceObject] */ 1292 | interface EXT_texture_filter_anisotropic { 1293 | readonly TEXTURE_MAX_ANISOTROPY_EXT: /* 0x84FE */ GLenum<'TEXTURE_MAX_ANISOTROPY_EXT'>; 1294 | readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: /* 0x84FF */ GLenum<'MAX_TEXTURE_MAX_ANISOTROPY_EXT'>; 1295 | } 1296 | interface Base_EXT_texture_filter_anisotropic { 1297 | getParameter(pname: EXT_texture_filter_anisotropic['MAX_TEXTURE_MAX_ANISOTROPY_EXT']): GLfloat; 1298 | getTexParameter(target: TextureTarget, pname: EXT_texture_filter_anisotropic['TEXTURE_MAX_ANISOTROPY_EXT']): GLfloat; 1299 | texParameterf(target: TextureTarget, pname: EXT_texture_filter_anisotropic['TEXTURE_MAX_ANISOTROPY_EXT'], param: GLfloat): void; 1300 | } 1301 | 1302 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/ 1303 | /* [NoInterfaceObject] */ 1304 | interface WEBGL_draw_buffers { 1305 | readonly COLOR_ATTACHMENT0_WEBGL: /* 0x8CE0 */ GLenum<'COLOR_ATTACHMENT0'>; 1306 | readonly COLOR_ATTACHMENT1_WEBGL: /* 0x8CE1 */ GLenum<'COLOR_ATTACHMENT1'>; 1307 | readonly COLOR_ATTACHMENT2_WEBGL: /* 0x8CE2 */ GLenum<'COLOR_ATTACHMENT2'>; 1308 | readonly COLOR_ATTACHMENT3_WEBGL: /* 0x8CE3 */ GLenum<'COLOR_ATTACHMENT3'>; 1309 | readonly COLOR_ATTACHMENT4_WEBGL: /* 0x8CE4 */ GLenum<'COLOR_ATTACHMENT4'>; 1310 | readonly COLOR_ATTACHMENT5_WEBGL: /* 0x8CE5 */ GLenum<'COLOR_ATTACHMENT5'>; 1311 | readonly COLOR_ATTACHMENT6_WEBGL: /* 0x8CE6 */ GLenum<'COLOR_ATTACHMENT6'>; 1312 | readonly COLOR_ATTACHMENT7_WEBGL: /* 0x8CE7 */ GLenum<'COLOR_ATTACHMENT7'>; 1313 | readonly COLOR_ATTACHMENT8_WEBGL: /* 0x8CE8 */ GLenum<'COLOR_ATTACHMENT8'>; 1314 | readonly COLOR_ATTACHMENT9_WEBGL: /* 0x8CE9 */ GLenum<'COLOR_ATTACHMENT9'>; 1315 | readonly COLOR_ATTACHMENT10_WEBGL: /* 0x8CEA */ GLenum<'COLOR_ATTACHMENT10'>; 1316 | readonly COLOR_ATTACHMENT11_WEBGL: /* 0x8CEB */ GLenum<'COLOR_ATTACHMENT11'>; 1317 | readonly COLOR_ATTACHMENT12_WEBGL: /* 0x8CEC */ GLenum<'COLOR_ATTACHMENT12'>; 1318 | readonly COLOR_ATTACHMENT13_WEBGL: /* 0x8CED */ GLenum<'COLOR_ATTACHMENT13'>; 1319 | readonly COLOR_ATTACHMENT14_WEBGL: /* 0x8CEE */ GLenum<'COLOR_ATTACHMENT14'>; 1320 | readonly COLOR_ATTACHMENT15_WEBGL: /* 0x8CEF */ GLenum<'COLOR_ATTACHMENT15'>; 1321 | 1322 | readonly DRAW_BUFFER0_WEBGL: /* 0x8825 */ GLenum<'DRAW_BUFFER0'>; 1323 | readonly DRAW_BUFFER1_WEBGL: /* 0x8826 */ GLenum<'DRAW_BUFFER1'>; 1324 | readonly DRAW_BUFFER2_WEBGL: /* 0x8827 */ GLenum<'DRAW_BUFFER2'>; 1325 | readonly DRAW_BUFFER3_WEBGL: /* 0x8828 */ GLenum<'DRAW_BUFFER3'>; 1326 | readonly DRAW_BUFFER4_WEBGL: /* 0x8829 */ GLenum<'DRAW_BUFFER4'>; 1327 | readonly DRAW_BUFFER5_WEBGL: /* 0x882A */ GLenum<'DRAW_BUFFER5'>; 1328 | readonly DRAW_BUFFER6_WEBGL: /* 0x882B */ GLenum<'DRAW_BUFFER6'>; 1329 | readonly DRAW_BUFFER7_WEBGL: /* 0x882C */ GLenum<'DRAW_BUFFER7'>; 1330 | readonly DRAW_BUFFER8_WEBGL: /* 0x882D */ GLenum<'DRAW_BUFFER8'>; 1331 | readonly DRAW_BUFFER9_WEBGL: /* 0x882E */ GLenum<'DRAW_BUFFER9'>; 1332 | readonly DRAW_BUFFER10_WEBGL: /* 0x882F */ GLenum<'DRAW_BUFFER10'>; 1333 | readonly DRAW_BUFFER11_WEBGL: /* 0x8830 */ GLenum<'DRAW_BUFFER11'>; 1334 | readonly DRAW_BUFFER12_WEBGL: /* 0x8831 */ GLenum<'DRAW_BUFFER12'>; 1335 | readonly DRAW_BUFFER13_WEBGL: /* 0x8832 */ GLenum<'DRAW_BUFFER13'>; 1336 | readonly DRAW_BUFFER14_WEBGL: /* 0x8833 */ GLenum<'DRAW_BUFFER14'>; 1337 | readonly DRAW_BUFFER15_WEBGL: /* 0x8834 */ GLenum<'DRAW_BUFFER15'>; 1338 | 1339 | readonly MAX_COLOR_ATTACHMENTS_WEBGL: /* 0x8CDF */ GLenum<'MAX_COLOR_ATTACHMENTS_WEBGL'>; 1340 | readonly MAX_DRAW_BUFFERS_WEBGL: /* 0x8824 */ GLenum<'MAX_DRAW_BUFFERS_WEBGL'>; 1341 | 1342 | drawBuffersWEBGL(buffers: Array): void; 1343 | } 1344 | interface Base_WEBGL_draw_buffers { 1345 | getParameter(pname: WEBGL_draw_buffers['MAX_COLOR_ATTACHMENTS_WEBGL']): GLuint; 1346 | getParameter(pname: WEBGL_draw_buffers['MAX_DRAW_BUFFERS_WEBGL']): GLuint; 1347 | getParameter(pname: DrawBuffer): GL['NONE'] | GL['BACK'] | ColorAttachment; 1348 | framebufferRenderbuffer(target: GL['FRAMEBUFFER'], attachment: ColorAttachment, renderbuffertarget: GL['RENDERBUFFER'], renderbuffer: WebGLRenderbuffer | null): void; 1349 | framebufferTexture2D(target: GL['FRAMEBUFFER'], attachment: ColorAttachment, textarget: TexImage2DTarget, texture: WebGLTexture | null, level: GLint): void; 1350 | } 1351 | // TODO: remove "_WEBGL" os it works with wgl2 1352 | type ColorAttachment = WEBGL_draw_buffers['COLOR_ATTACHMENT0_WEBGL'] 1353 | | WEBGL_draw_buffers['COLOR_ATTACHMENT1_WEBGL'] 1354 | | WEBGL_draw_buffers['COLOR_ATTACHMENT2_WEBGL'] 1355 | | WEBGL_draw_buffers['COLOR_ATTACHMENT3_WEBGL'] 1356 | | WEBGL_draw_buffers['COLOR_ATTACHMENT4_WEBGL'] 1357 | | WEBGL_draw_buffers['COLOR_ATTACHMENT5_WEBGL'] 1358 | | WEBGL_draw_buffers['COLOR_ATTACHMENT6_WEBGL'] 1359 | | WEBGL_draw_buffers['COLOR_ATTACHMENT7_WEBGL'] 1360 | | WEBGL_draw_buffers['COLOR_ATTACHMENT8_WEBGL'] 1361 | | WEBGL_draw_buffers['COLOR_ATTACHMENT9_WEBGL'] 1362 | | WEBGL_draw_buffers['COLOR_ATTACHMENT10_WEBGL'] 1363 | | WEBGL_draw_buffers['COLOR_ATTACHMENT11_WEBGL'] 1364 | | WEBGL_draw_buffers['COLOR_ATTACHMENT12_WEBGL'] 1365 | | WEBGL_draw_buffers['COLOR_ATTACHMENT13_WEBGL'] 1366 | | WEBGL_draw_buffers['COLOR_ATTACHMENT14_WEBGL'] 1367 | | WEBGL_draw_buffers['COLOR_ATTACHMENT15_WEBGL']; 1368 | type DrawBuffer = WEBGL_draw_buffers['DRAW_BUFFER0_WEBGL'] 1369 | | WEBGL_draw_buffers['DRAW_BUFFER1_WEBGL'] 1370 | | WEBGL_draw_buffers['DRAW_BUFFER2_WEBGL'] 1371 | | WEBGL_draw_buffers['DRAW_BUFFER3_WEBGL'] 1372 | | WEBGL_draw_buffers['DRAW_BUFFER4_WEBGL'] 1373 | | WEBGL_draw_buffers['DRAW_BUFFER5_WEBGL'] 1374 | | WEBGL_draw_buffers['DRAW_BUFFER6_WEBGL'] 1375 | | WEBGL_draw_buffers['DRAW_BUFFER7_WEBGL'] 1376 | | WEBGL_draw_buffers['DRAW_BUFFER8_WEBGL'] 1377 | | WEBGL_draw_buffers['DRAW_BUFFER9_WEBGL'] 1378 | | WEBGL_draw_buffers['DRAW_BUFFER10_WEBGL'] 1379 | | WEBGL_draw_buffers['DRAW_BUFFER11_WEBGL'] 1380 | | WEBGL_draw_buffers['DRAW_BUFFER12_WEBGL'] 1381 | | WEBGL_draw_buffers['DRAW_BUFFER13_WEBGL'] 1382 | | WEBGL_draw_buffers['DRAW_BUFFER14_WEBGL'] 1383 | | WEBGL_draw_buffers['DRAW_BUFFER15_WEBGL']; 1384 | 1385 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/ 1386 | /* [NoInterfaceObject] */ 1387 | interface EXT_blend_minmax { 1388 | readonly MIN_EXT: /* 0x8007 */ GLenum<'MIN_EXT'>; 1389 | readonly MAX_EXT: /* 0x8008 */ GLenum<'MAX_EXT'>; 1390 | } 1391 | interface Base_EXT_blend_minmax { 1392 | blendEquation(mode: BlendEquationModeMinMax): void; 1393 | blendEquationSeparate(modeRGB: BlendEquationModeMinMax, modeAlpha: BlendEquationModeMinMax): void; 1394 | } 1395 | type BlendEquationModeMinMax = EXT_blend_minmax['MIN_EXT'] | EXT_blend_minmax['MAX_EXT']; 1396 | 1397 | // ######################################### 1398 | // ## Community approved WebGL Extensions ## 1399 | // ######################################### 1400 | 1401 | // https://www.khronos.org/registry/webgl/extensions/EXT_color_buffer_half_float/ 1402 | /* [NoInterfaceObject] */ 1403 | interface EXT_color_buffer_half_float { 1404 | readonly RGBA16F_EXT: /* 0x881A */ GLenum<'RGBA16F_EXT'>; 1405 | readonly RGB16F_EXT: /* 0x881B */ GLenum<'RGB16F_EXT'>; 1406 | readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: /* 0x8211 */ GLenum<'FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT'>; 1407 | readonly UNSIGNED_NORMALIZED_EXT: /* 0x8C17 */ GLenum<'UNSIGNED_NORMALIZED_EXT'>; 1408 | } 1409 | interface Base_EXT_color_buffer_half_float { 1410 | renderbufferStorage(target: GL['RENDERBUFFER'], internalformat: EXT_color_buffer_half_float['RGBA16F_EXT'] | EXT_color_buffer_half_float['RGB16F_EXT'], width: GLsizei, height: GLsizei): void; 1411 | } 1412 | 1413 | // https://www.khronos.org/registry/webgl/extensions/EXT_disjoint_timer_query/ 1414 | type GLuint64EXT = number; // WebIDL: unsigned long long 1415 | /* [NoInterfaceObject] */ 1416 | interface WebGLTimerQueryEXT extends WebGLObject { 1417 | __WebGLObjectBrand: 'WebGLTimerQueryEXT'; 1418 | } 1419 | /* [NoInterfaceObject] */ 1420 | interface EXT_disjoint_timer_query { 1421 | readonly QUERY_COUNTER_BITS_EXT: /* 0x8864 */ GLenum<'QUERY_COUNTER_BITS_EXT'>; 1422 | readonly CURRENT_QUERY_EXT: /* 0x8865 */ GLenum<'CURRENT_QUERY_EXT'>; 1423 | readonly QUERY_RESULT_EXT: /* 0x8866 */ GLenum<'QUERY_RESULT_EXT'>; 1424 | readonly QUERY_RESULT_AVAILABLE_EXT: /* 0x8867 */ GLenum<'QUERY_RESULT_AVAILABLE_EXT'>; 1425 | readonly TIME_ELAPSED_EXT: /* 0x88BF */ GLenum<'TIME_ELAPSED_EXT'>; 1426 | readonly TIMESTAMP_EXT: /* 0x8E28 */ GLenum<'TIMESTAMP_EXT'>; 1427 | readonly GPU_DISJOINT_EXT: /* 0x8FBB */ GLenum<'GPU_DISJOINT_EXT'>; 1428 | 1429 | createQueryEXT(): WebGLTimerQueryEXT | null; 1430 | deleteQueryEXT(query: WebGLTimerQueryEXT | null): void; 1431 | /* [WebGLHandlesContextLoss] */ isQueryEXT(query: WebGLTimerQueryEXT | null): boolean; 1432 | beginQueryEXT(target: EXT_disjoint_timer_query['TIME_ELAPSED_EXT'], query: WebGLTimerQueryEXT): void; 1433 | endQueryEXT(target: EXT_disjoint_timer_query['TIME_ELAPSED_EXT']): void; 1434 | queryCounterEXT(query: WebGLTimerQueryEXT, target: EXT_disjoint_timer_query['TIMESTAMP_EXT']): void; 1435 | 1436 | getQueryEXT(target: EXT_disjoint_timer_query['TIME_ELAPSED_EXT'], pname: EXT_disjoint_timer_query['CURRENT_QUERY_EXT']): WebGLTimerQueryEXT | null; 1437 | getQueryEXT(target: EXT_disjoint_timer_query['TIMESTAMP_EXT'], pname: EXT_disjoint_timer_query['CURRENT_QUERY_EXT']): null; 1438 | getQueryEXT(target: EXT_disjoint_timer_query['TIME_ELAPSED_EXT'], pname: EXT_disjoint_timer_query['QUERY_COUNTER_BITS_EXT']): GLint; 1439 | getQueryEXT(target: EXT_disjoint_timer_query['TIMESTAMP_EXT'], pname: EXT_disjoint_timer_query['QUERY_COUNTER_BITS_EXT']): GLint; 1440 | 1441 | getQueryObjectEXT(query: WebGLTimerQueryEXT, pname: EXT_disjoint_timer_query['QUERY_RESULT_EXT']): GLuint64EXT; 1442 | getQueryObjectEXT(query: WebGLTimerQueryEXT, pname: EXT_disjoint_timer_query['QUERY_RESULT_AVAILABLE_EXT']): boolean; 1443 | } 1444 | interface Base_EXT_disjoint_timer_query { 1445 | getParameter(pname: EXT_disjoint_timer_query['TIMESTAMP_EXT']): GLuint64EXT; 1446 | getParameter(pname: EXT_disjoint_timer_query['GPU_DISJOINT_EXT']): boolean; 1447 | } 1448 | 1449 | // https://www.khronos.org/registry/webgl/extensions/EXT_sRGB/ 1450 | /* [NoInterfaceObject] */ 1451 | interface EXT_sRGB { 1452 | readonly SRGB_EXT: /* 0x8C40 */ GLenum<'SRGB_EXT'>; 1453 | readonly SRGB_ALPHA_EXT: /* 0x8C42 */ GLenum<'SRGB_ALPHA_EXT'>; 1454 | readonly SRGB8_ALPHA8_EXT: /* 0x8C43 */ GLenum<'SRGB8_ALPHA8_EXT'>; 1455 | readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: /* 0x8210 */ GLenum<'FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT'>; 1456 | } 1457 | interface Base_EXT_sRGB { 1458 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: EXT_sRGB['SRGB_EXT'], width: GLsizei, height: GLsizei, border: 0, format: EXT_sRGB['SRGB_EXT'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 1459 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: EXT_sRGB['SRGB_ALPHA_EXT'], width: GLsizei, height: GLsizei, border: 0, format: EXT_sRGB['SRGB_ALPHA_EXT'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 1460 | 1461 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: EXT_sRGB['SRGB_EXT'], format: EXT_sRGB['SRGB_EXT'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 1462 | texImage2D(target: TexImage2DTarget, level: GLint, internalformat: EXT_sRGB['SRGB_ALPHA_EXT'], format: EXT_sRGB['SRGB_ALPHA_EXT'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 1463 | 1464 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: EXT_sRGB['SRGB_EXT'] | EXT_sRGB['SRGB_ALPHA_EXT'], type: GL['UNSIGNED_BYTE'], /* [AllowShared] */ pixels: Uint8Array | null): void; 1465 | texSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, format: EXT_sRGB['SRGB_EXT'] | EXT_sRGB['SRGB_ALPHA_EXT'], type: GL['UNSIGNED_BYTE'], source: TexImageSource): void; 1466 | 1467 | renderbufferStorage(target: GL['RENDERBUFFER'], internalformat: EXT_sRGB['SRGB8_ALPHA8_EXT'], width: GLsizei, height: GLsizei): void; 1468 | 1469 | getFramebufferAttachmentParameter(target: GL['FRAMEBUFFER'], attachment: ColorAttachment, pname: EXT_sRGB['FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT']): GL['LINEAR'] | EXT_sRGB['SRGB_EXT']; 1470 | } 1471 | 1472 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_color_buffer_float/ 1473 | /* [NoInterfaceObject] */ 1474 | interface WEBGL_color_buffer_float { 1475 | readonly RGBA32F_EXT: /* 0x8814 */ GLenum<'RGBA32F_EXT'>; 1476 | readonly RGB32F_EXT: /* 0x8815 */ GLenum<'RGB32F_EXT'>; 1477 | readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: /* 0x8211 */ GLenum<'FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT'>; 1478 | readonly UNSIGNED_NORMALIZED_EXT: /* 0x8C17 */ GLenum<'UNSIGNED_NORMALIZED_EXT'>; 1479 | } 1480 | interface Base_WEBGL_color_buffer_float { 1481 | renderbufferStorage(target: GL['RENDERBUFFER'], internalformat: WEBGL_color_buffer_float['RGBA32F_EXT'] | WEBGL_color_buffer_float['RGB32F_EXT'], width: GLsizei, height: GLsizei): void; 1482 | } 1483 | 1484 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/ 1485 | /* [NoInterfaceObject] */ 1486 | interface WEBGL_compressed_texture_astc { 1487 | /* Compressed Texture Format */ 1488 | readonly COMPRESSED_RGBA_ASTC_4x4_KHR: /* 0x93B0 */ GLenum<'COMPRESSED_RGBA_ASTC_4x4_KHR'>; 1489 | readonly COMPRESSED_RGBA_ASTC_5x4_KHR: /* 0x93B1 */ GLenum<'COMPRESSED_RGBA_ASTC_5x4_KHR'>; 1490 | readonly COMPRESSED_RGBA_ASTC_5x5_KHR: /* 0x93B2 */ GLenum<'COMPRESSED_RGBA_ASTC_5x5_KHR'>; 1491 | readonly COMPRESSED_RGBA_ASTC_6x5_KHR: /* 0x93B3 */ GLenum<'COMPRESSED_RGBA_ASTC_6x5_KHR'>; 1492 | readonly COMPRESSED_RGBA_ASTC_6x6_KHR: /* 0x93B4 */ GLenum<'COMPRESSED_RGBA_ASTC_6x6_KHR'>; 1493 | readonly COMPRESSED_RGBA_ASTC_8x5_KHR: /* 0x93B5 */ GLenum<'COMPRESSED_RGBA_ASTC_8x5_KHR'>; 1494 | readonly COMPRESSED_RGBA_ASTC_8x6_KHR: /* 0x93B6 */ GLenum<'COMPRESSED_RGBA_ASTC_8x6_KHR'>; 1495 | readonly COMPRESSED_RGBA_ASTC_8x8_KHR: /* 0x93B7 */ GLenum<'COMPRESSED_RGBA_ASTC_8x8_KHR'>; 1496 | readonly COMPRESSED_RGBA_ASTC_10x5_KHR: /* 0x93B8 */ GLenum<'COMPRESSED_RGBA_ASTC_10x5_KHR'>; 1497 | readonly COMPRESSED_RGBA_ASTC_10x6_KHR: /* 0x93B9 */ GLenum<'COMPRESSED_RGBA_ASTC_10x6_KHR'>; 1498 | readonly COMPRESSED_RGBA_ASTC_10x8_KHR: /* 0x93BA */ GLenum<'COMPRESSED_RGBA_ASTC_10x8_KHR'>; 1499 | readonly COMPRESSED_RGBA_ASTC_10x10_KHR: /* 0x93BB */ GLenum<'COMPRESSED_RGBA_ASTC_10x10_KHR'>; 1500 | readonly COMPRESSED_RGBA_ASTC_12x10_KHR: /* 0x93BC */ GLenum<'COMPRESSED_RGBA_ASTC_12x10_KHR'>; 1501 | readonly COMPRESSED_RGBA_ASTC_12x12_KHR: /* 0x93BD */ GLenum<'COMPRESSED_RGBA_ASTC_12x12_KHR'>; 1502 | 1503 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: /* 0x93D0 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR'>; 1504 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: /* 0x93D1 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR'>; 1505 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: /* 0x93D2 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR'>; 1506 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: /* 0x93D3 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR'>; 1507 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: /* 0x93D4 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR'>; 1508 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: /* 0x93D5 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR'>; 1509 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: /* 0x93D6 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR'>; 1510 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: /* 0x93D7 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR'>; 1511 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: /* 0x93D8 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR'>; 1512 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: /* 0x93D9 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR'>; 1513 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: /* 0x93DA */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR'>; 1514 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: /* 0x93DB */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR'>; 1515 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: /* 0x93DC */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR'>; 1516 | readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: /* 0x93DD */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR'>; 1517 | 1518 | // Profile query support. 1519 | getSupportedProfiles(): DOMString[]; 1520 | } 1521 | interface Base_WEBGL_compressed_texture_astc { 1522 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatAstc, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1523 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatAstc, /* [AllowShared] */ data: ArrayBufferView): void; 1524 | } 1525 | type CompressedTextureFormatAstc = WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_4x4_KHR'] 1526 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_5x4_KHR'] 1527 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_5x5_KHR'] 1528 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_6x5_KHR'] 1529 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_6x6_KHR'] 1530 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_8x5_KHR'] 1531 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_8x6_KHR'] 1532 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_8x8_KHR'] 1533 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_10x5_KHR'] 1534 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_10x6_KHR'] 1535 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_10x8_KHR'] 1536 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_10x10_KHR'] 1537 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_12x10_KHR'] 1538 | | WEBGL_compressed_texture_astc['COMPRESSED_RGBA_ASTC_12x12_KHR'] 1539 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR'] 1540 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR'] 1541 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR'] 1542 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR'] 1543 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR'] 1544 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR'] 1545 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR'] 1546 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR'] 1547 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR'] 1548 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR'] 1549 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR'] 1550 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR'] 1551 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR'] 1552 | | WEBGL_compressed_texture_astc['COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR']; 1553 | 1554 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_atc/ 1555 | /* [NoInterfaceObject] */ 1556 | interface WEBGL_compressed_texture_atc { 1557 | /* Compressed Texture Formats */ 1558 | readonly COMPRESSED_RGB_ATC_WEBGL: /* 0x8C92 */ GLenum<'COMPRESSED_RGB_ATC_WEBGL'>; 1559 | readonly COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: /* 0x8C93 */ GLenum<'COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL'>; 1560 | readonly COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: /* 0x87EE */ GLenum<'COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL'>; 1561 | } 1562 | interface Base_WEBGL_compressed_texture_atc { 1563 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatAtc, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1564 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatAtc, /* [AllowShared] */ data: ArrayBufferView): void; 1565 | } 1566 | type CompressedTextureFormatAtc = WEBGL_compressed_texture_atc['COMPRESSED_RGB_ATC_WEBGL'] 1567 | | WEBGL_compressed_texture_atc['COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL'] 1568 | | WEBGL_compressed_texture_atc['COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL']; 1569 | 1570 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/ 1571 | /* [NoInterfaceObject] */ 1572 | interface WEBGL_compressed_texture_etc { 1573 | /* Compressed Texture Formats */ 1574 | readonly COMPRESSED_R11_EAC: /* 0x9270 */ GLenum<'COMPRESSED_R11_EAC'>; 1575 | readonly COMPRESSED_SIGNED_R11_EAC: /* 0x9271 */ GLenum<'COMPRESSED_SIGNED_R11_EAC'>; 1576 | readonly COMPRESSED_RG11_EAC: /* 0x9272 */ GLenum<'COMPRESSED_RG11_EAC'>; 1577 | readonly COMPRESSED_SIGNED_RG11_EAC: /* 0x9273 */ GLenum<'COMPRESSED_SIGNED_RG11_EAC'>; 1578 | readonly COMPRESSED_RGB8_ETC2: /* 0x9274 */ GLenum<'COMPRESSED_RGB8_ETC2'>; 1579 | readonly COMPRESSED_SRGB8_ETC2: /* 0x9275 */ GLenum<'COMPRESSED_SRGB8_ETC2'>; 1580 | readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: /* 0x9276 */ GLenum<'COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2'>; 1581 | readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: /* 0x9277 */ GLenum<'COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2'>; 1582 | readonly COMPRESSED_RGBA8_ETC2_EAC: /* 0x9278 */ GLenum<'COMPRESSED_RGBA8_ETC2_EAC'>; 1583 | readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: /* 0x9279 */ GLenum<'COMPRESSED_SRGB8_ALPHA8_ETC2_EAC'>; 1584 | } 1585 | interface Base_WEBGL_compressed_texture_etc { 1586 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatEtc, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1587 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatEtc, /* [AllowShared] */ data: ArrayBufferView): void; 1588 | } 1589 | type CompressedTextureFormatEtc = WEBGL_compressed_texture_etc['COMPRESSED_R11_EAC'] 1590 | | WEBGL_compressed_texture_etc['COMPRESSED_SIGNED_R11_EAC'] 1591 | | WEBGL_compressed_texture_etc['COMPRESSED_RG11_EAC'] 1592 | | WEBGL_compressed_texture_etc['COMPRESSED_SIGNED_RG11_EAC'] 1593 | | WEBGL_compressed_texture_etc['COMPRESSED_RGB8_ETC2'] 1594 | | WEBGL_compressed_texture_etc['COMPRESSED_SRGB8_ETC2'] 1595 | | WEBGL_compressed_texture_etc['COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2'] 1596 | | WEBGL_compressed_texture_etc['COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2'] 1597 | | WEBGL_compressed_texture_etc['COMPRESSED_RGBA8_ETC2_EAC'] 1598 | | WEBGL_compressed_texture_etc['COMPRESSED_SRGB8_ALPHA8_ETC2_EAC']; 1599 | 1600 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc1/ 1601 | /* [NoInterfaceObject] */ 1602 | interface WEBGL_compressed_texture_etc1 { 1603 | /* Compressed Texture Formats */ 1604 | readonly COMPRESSED_RGB_ETC1_WEBGL: /* 0x8D64 */ GLenum<'COMPRESSED_RGB_ETC1_WEBGL'>; 1605 | } 1606 | interface Base_WEBGL_compressed_texture_etc1 { 1607 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: WEBGL_compressed_texture_etc1['COMPRESSED_RGB_ETC1_WEBGL'], width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1608 | // not supported for compressedTexSubImage2D 1609 | } 1610 | 1611 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/ 1612 | /* [NoInterfaceObject] */ 1613 | interface WEBGL_compressed_texture_pvrtc { 1614 | /* Compressed Texture Formats */ 1615 | readonly COMPRESSED_RGB_PVRTC_4BPPV1_IMG: /* 0x8C00 */ GLenum<'COMPRESSED_RGB_PVRTC_4BPPV1_IMG'>; 1616 | readonly COMPRESSED_RGB_PVRTC_2BPPV1_IMG: /* 0x8C01 */ GLenum<'COMPRESSED_RGB_PVRTC_2BPPV1_IMG'>; 1617 | readonly COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: /* 0x8C02 */ GLenum<'COMPRESSED_RGBA_PVRTC_4BPPV1_IMG'>; 1618 | readonly COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: /* 0x8C03 */ GLenum<'COMPRESSED_RGBA_PVRTC_2BPPV1_IMG'>; 1619 | } 1620 | interface Base_WEBGL_compressed_texture_pvrtc { 1621 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatPvrtc, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1622 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatPvrtc, /* [AllowShared] */ data: ArrayBufferView): void; 1623 | } 1624 | type CompressedTextureFormatPvrtc = WEBGL_compressed_texture_pvrtc['COMPRESSED_RGB_PVRTC_4BPPV1_IMG'] 1625 | | WEBGL_compressed_texture_pvrtc['COMPRESSED_RGB_PVRTC_2BPPV1_IMG'] 1626 | | WEBGL_compressed_texture_pvrtc['COMPRESSED_RGBA_PVRTC_4BPPV1_IMG'] 1627 | | WEBGL_compressed_texture_pvrtc['COMPRESSED_RGBA_PVRTC_2BPPV1_IMG']; 1628 | 1629 | // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/ 1630 | /* [NoInterfaceObject] */ 1631 | interface WEBGL_compressed_texture_s3tc_srgb { 1632 | /* Compressed Texture Formats */ 1633 | readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: /* 0x8C4C */ GLenum<'COMPRESSED_SRGB_S3TC_DXT1_EXT'>; 1634 | readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: /* 0x8C4D */ GLenum<'COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT'>; 1635 | readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: /* 0x8C4E */ GLenum<'COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT'>; 1636 | readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: /* 0x8C4F */ GLenum<'COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT'>; 1637 | } 1638 | interface Base_WEBGL_compressed_texture_s3tc_srgb { 1639 | compressedTexImage2D(target: TexImage2DTarget, level: GLint, internalformat: CompressedTextureFormatS3tcSrgb, width: GLsizei, height: GLsizei, border: 0, /* [AllowShared] */ data: ArrayBufferView): void; 1640 | compressedTexSubImage2D(target: TexImage2DTarget, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: CompressedTextureFormatS3tcSrgb, /* [AllowShared] */ data: ArrayBufferView): void; 1641 | } 1642 | type CompressedTextureFormatS3tcSrgb = WEBGL_compressed_texture_s3tc_srgb['COMPRESSED_SRGB_S3TC_DXT1_EXT'] 1643 | | WEBGL_compressed_texture_s3tc_srgb['COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT'] 1644 | | WEBGL_compressed_texture_s3tc_srgb['COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT'] 1645 | | WEBGL_compressed_texture_s3tc_srgb['COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT']; 1646 | } 1647 | 1648 | type WebGLRenderingContextStrict = WebGLRenderingContextStrict.Base & 1649 | WebGLRenderingContextStrict.Extra & 1650 | WebGLRenderingContextStrict.Base_ANGLE_instanced_arrays & 1651 | WebGLRenderingContextStrict.Base_EXT_blend_minmax & 1652 | WebGLRenderingContextStrict.Base_EXT_texture_filter_anisotropic & 1653 | WebGLRenderingContextStrict.Base_OES_element_index_uint & 1654 | WebGLRenderingContextStrict.Base_OES_standard_derivatives & 1655 | WebGLRenderingContextStrict.Base_OES_texture_float & 1656 | WebGLRenderingContextStrict.Base_OES_texture_half_float & 1657 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_s3tc & 1658 | WebGLRenderingContextStrict.Base_WEBGL_debug_renderer_info & 1659 | WebGLRenderingContextStrict.Base_WEBGL_depth_texture & 1660 | WebGLRenderingContextStrict.Base_WEBGL_draw_buffers & 1661 | 1662 | WebGLRenderingContextStrict.Base_EXT_color_buffer_half_float & 1663 | WebGLRenderingContextStrict.Base_EXT_disjoint_timer_query & 1664 | WebGLRenderingContextStrict.Base_EXT_sRGB & 1665 | WebGLRenderingContextStrict.Base_WEBGL_color_buffer_float & 1666 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_astc & 1667 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_atc & 1668 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_etc & 1669 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_etc1 & 1670 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_pvrtc & 1671 | WebGLRenderingContextStrict.Base_WEBGL_compressed_texture_s3tc_srgb; 1672 | 1673 | // declare var WebGLRenderingContext: WebGLRenderingContextStrict.Constants & { 1674 | // prototype: WebGLRenderingContextStrict; 1675 | // new(_: never): WebGLRenderingContextStrict; 1676 | // } 1677 | 1678 | interface WebGLContextEvent extends Event { 1679 | readonly statusMessage: string; 1680 | } 1681 | 1682 | // EventInit is defined in the DOM4 specification. 1683 | interface WebGLContextEventInit extends EventInit { 1684 | statusMessage?: string; 1685 | } 1686 | declare var WebGLContextEvent: { 1687 | prototype: WebGLContextEvent; 1688 | new(typeArg: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; 1689 | }; 1690 | -------------------------------------------------------------------------------- /webgl2-tests.ts: -------------------------------------------------------------------------------- 1 | window.onload = () => { 2 | const canvas: HTMLCanvasElement = document.createElement("canvas"); 3 | canvas.getContext('webgl') as any as WebGLRenderingContextStrict; 4 | const gl: WebGL2RenderingContext = canvas.getContext("webgl2", { antialias: false })! as any as WebGL2RenderingContext; 5 | 6 | if (gl === null) { 7 | console.log("WebGL2 not available"); 8 | return; 9 | } 10 | 11 | const maxsize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE); 12 | console.log(`Attempting to create super useful, empty, NPOT 3D texture of size ${maxsize} x 13 x 5...`); 13 | 14 | const texture = gl.createTexture(); 15 | 16 | gl.activeTexture(gl.TEXTURE0); 17 | gl.bindTexture(gl.TEXTURE_3D, texture); 18 | gl.texImage3D(gl.TEXTURE_3D, 0, gl.R32F, maxsize, 13, 5, 0, gl.RED, gl.FLOAT, null); 19 | 20 | if (gl.getError() !== gl.NO_ERROR) { 21 | console.log("Oh noes!"); 22 | } else { 23 | console.log("Success!"); 24 | } 25 | 26 | gl.deleteTexture(texture); 27 | 28 | gl.texParameteri(gl.TEXTURE_3D, gl.TEXTURE_WRAP_R, gl.CLAMP_TO_EDGE); 29 | 30 | const etc = gl.getExtension('WEBGL_compressed_texture_etc')!; 31 | gl.compressedTexImage3D(gl.TEXTURE_3D, 0, etc.COMPRESSED_RGB8_ETC2, 1024, 1024, 1024, 0, 0, 0); 32 | }; 33 | 34 | import GL = WebGLRenderingContextStrict; 35 | import GL2 = WebGL2RenderingContextStrict; 36 | 37 | declare const gl: GL; 38 | gl.texImage2D(0 as any, 0, gl.RGBA, 1024, 1024, 0, gl.RGBA, gl.FLOAT, new Float32Array([])); 39 | if (gl.getExtension('OES_texture_float')) { 40 | gl.texImage2D(0 as any, 0, gl.RGBA, 1024, 1024, 0, gl.RGBA, gl.FLOAT, new Float32Array([])); 41 | } 42 | const x: GL.BlendFuncSrcFactor = gl.getParameter(gl.BLEND_SRC_RGB); 43 | gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 44 | 45 | const OES_standard_derivatives2 = gl.getExtension('OES_standard_derivatives'); 46 | if (OES_standard_derivatives2) { 47 | const go = gl.getParameter(OES_standard_derivatives2.FRAGMENT_SHADER_DERIVATIVE_HINT_OES); 48 | } 49 | gl.texImage2D(gl.TEXTURE_2D, 0, gl.ALPHA, 64, 64, 0, gl.ALPHA, gl.UNSIGNED_BYTE, null); 50 | 51 | function attachRenderbufferToFramebuffer(gl: GL, fb: WebGLFramebuffer, rb: WebGLRenderbuffer) { 52 | const currentFramebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING); 53 | currentFramebuffer !== fb && gl.bindFramebuffer(gl.FRAMEBUFFER, fb); 54 | gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, rb); 55 | currentFramebuffer !== fb && gl.bindFramebuffer(gl.FRAMEBUFFER, currentFramebuffer); 56 | } 57 | 58 | // a variable which is either GL or GL2 should allow common methods to be called. 59 | function testWebGL1or2(gl: GL | GL2) { 60 | gl.bufferData(gl.ARRAY_BUFFER, 12, gl.STREAM_DRAW); 61 | 62 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); 63 | 64 | const buffer = gl.createBuffer(); 65 | console.log(buffer instanceof WebGLBuffer); 66 | 67 | new WebGLBuffer(); 68 | } 69 | 70 | // instanceof should work with GL and GL2; and type narrowing should work as expected 71 | declare const unknown: {}; 72 | if (unknown instanceof WebGLRenderingContext) { 73 | const gl: WebGLRenderingContext = unknown; 74 | } 75 | if (unknown instanceof WebGL2RenderingContext) { 76 | const gl2: WebGL2RenderingContext = unknown; 77 | } 78 | --------------------------------------------------------------------------------