├── .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 |
--------------------------------------------------------------------------------