1 module libwasm.bindings.WebGL2RenderingContext;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.HTMLCanvasElement;
7 import libwasm.bindings.HTMLImageElement;
8 import libwasm.bindings.HTMLVideoElement;
9 import libwasm.bindings.ImageBitmap;
10 import libwasm.bindings.ImageData;
11 import libwasm.bindings.OffscreenCanvas;
12 import libwasm.bindings.WebGLRenderingContext;
13 
14 @safe:
15 nothrow:
16 
17 struct EXT_color_buffer_float {
18   nothrow:
19   JsHandle handle;
20   alias handle this;
21   this(Handle h) {
22     this.handle = JsHandle(h);
23   }
24 }
25 alias GLint64 = int;
26 alias GLuint64 = uint;
27 alias Uint32List = SumType!(Uint32Array, Sequence!(uint));
28 struct WebGL2RenderingContext {
29   nothrow:
30   JsHandle handle;
31   alias handle this;
32   this(Handle h) {
33     this.handle = JsHandle(h);
34   }
35   enum uint READ_BUFFER = 0x0C02;
36   enum uint UNPACK_ROW_LENGTH = 0x0CF2;
37   enum uint UNPACK_SKIP_ROWS = 0x0CF3;
38   enum uint UNPACK_SKIP_PIXELS = 0x0CF4;
39   enum uint PACK_ROW_LENGTH = 0x0D02;
40   enum uint PACK_SKIP_ROWS = 0x0D03;
41   enum uint PACK_SKIP_PIXELS = 0x0D04;
42   enum uint COLOR = 0x1800;
43   enum uint DEPTH = 0x1801;
44   enum uint STENCIL = 0x1802;
45   enum uint RED = 0x1903;
46   enum uint RGB8 = 0x8051;
47   enum uint RGBA8 = 0x8058;
48   enum uint RGB10_A2 = 0x8059;
49   enum uint TEXTURE_BINDING_3D = 0x806A;
50   enum uint UNPACK_SKIP_IMAGES = 0x806D;
51   enum uint UNPACK_IMAGE_HEIGHT = 0x806E;
52   enum uint TEXTURE_3D = 0x806F;
53   enum uint TEXTURE_WRAP_R = 0x8072;
54   enum uint MAX_3D_TEXTURE_SIZE = 0x8073;
55   enum uint UNSIGNED_INT_2_10_10_10_REV = 0x8368;
56   enum uint MAX_ELEMENTS_VERTICES = 0x80E8;
57   enum uint MAX_ELEMENTS_INDICES = 0x80E9;
58   enum uint TEXTURE_MIN_LOD = 0x813A;
59   enum uint TEXTURE_MAX_LOD = 0x813B;
60   enum uint TEXTURE_BASE_LEVEL = 0x813C;
61   enum uint TEXTURE_MAX_LEVEL = 0x813D;
62   enum uint MIN = 0x8007;
63   enum uint MAX = 0x8008;
64   enum uint DEPTH_COMPONENT24 = 0x81A6;
65   enum uint MAX_TEXTURE_LOD_BIAS = 0x84FD;
66   enum uint TEXTURE_COMPARE_MODE = 0x884C;
67   enum uint TEXTURE_COMPARE_FUNC = 0x884D;
68   enum uint CURRENT_QUERY = 0x8865;
69   enum uint QUERY_RESULT = 0x8866;
70   enum uint QUERY_RESULT_AVAILABLE = 0x8867;
71   enum uint STREAM_READ = 0x88E1;
72   enum uint STREAM_COPY = 0x88E2;
73   enum uint STATIC_READ = 0x88E5;
74   enum uint STATIC_COPY = 0x88E6;
75   enum uint DYNAMIC_READ = 0x88E9;
76   enum uint DYNAMIC_COPY = 0x88EA;
77   enum uint MAX_DRAW_BUFFERS = 0x8824;
78   enum uint DRAW_BUFFER0 = 0x8825;
79   enum uint DRAW_BUFFER1 = 0x8826;
80   enum uint DRAW_BUFFER2 = 0x8827;
81   enum uint DRAW_BUFFER3 = 0x8828;
82   enum uint DRAW_BUFFER4 = 0x8829;
83   enum uint DRAW_BUFFER5 = 0x882A;
84   enum uint DRAW_BUFFER6 = 0x882B;
85   enum uint DRAW_BUFFER7 = 0x882C;
86   enum uint DRAW_BUFFER8 = 0x882D;
87   enum uint DRAW_BUFFER9 = 0x882E;
88   enum uint DRAW_BUFFER10 = 0x882F;
89   enum uint DRAW_BUFFER11 = 0x8830;
90   enum uint DRAW_BUFFER12 = 0x8831;
91   enum uint DRAW_BUFFER13 = 0x8832;
92   enum uint DRAW_BUFFER14 = 0x8833;
93   enum uint DRAW_BUFFER15 = 0x8834;
94   enum uint MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
95   enum uint MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
96   enum uint SAMPLER_3D = 0x8B5F;
97   enum uint SAMPLER_2D_SHADOW = 0x8B62;
98   enum uint FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
99   enum uint PIXEL_PACK_BUFFER = 0x88EB;
100   enum uint PIXEL_UNPACK_BUFFER = 0x88EC;
101   enum uint PIXEL_PACK_BUFFER_BINDING = 0x88ED;
102   enum uint PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
103   enum uint FLOAT_MAT2x3 = 0x8B65;
104   enum uint FLOAT_MAT2x4 = 0x8B66;
105   enum uint FLOAT_MAT3x2 = 0x8B67;
106   enum uint FLOAT_MAT3x4 = 0x8B68;
107   enum uint FLOAT_MAT4x2 = 0x8B69;
108   enum uint FLOAT_MAT4x3 = 0x8B6A;
109   enum uint SRGB = 0x8C40;
110   enum uint SRGB8 = 0x8C41;
111   enum uint SRGB8_ALPHA8 = 0x8C43;
112   enum uint COMPARE_REF_TO_TEXTURE = 0x884E;
113   enum uint RGBA32F = 0x8814;
114   enum uint RGB32F = 0x8815;
115   enum uint RGBA16F = 0x881A;
116   enum uint RGB16F = 0x881B;
117   enum uint VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD;
118   enum uint MAX_ARRAY_TEXTURE_LAYERS = 0x88FF;
119   enum uint MIN_PROGRAM_TEXEL_OFFSET = 0x8904;
120   enum uint MAX_PROGRAM_TEXEL_OFFSET = 0x8905;
121   enum uint MAX_VARYING_COMPONENTS = 0x8B4B;
122   enum uint TEXTURE_2D_ARRAY = 0x8C1A;
123   enum uint TEXTURE_BINDING_2D_ARRAY = 0x8C1D;
124   enum uint R11F_G11F_B10F = 0x8C3A;
125   enum uint UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;
126   enum uint RGB9_E5 = 0x8C3D;
127   enum uint UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;
128   enum uint TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F;
129   enum uint MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80;
130   enum uint TRANSFORM_FEEDBACK_VARYINGS = 0x8C83;
131   enum uint TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
132   enum uint TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
133   enum uint TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
134   enum uint RASTERIZER_DISCARD = 0x8C89;
135   enum uint MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
136   enum uint MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
137   enum uint INTERLEAVED_ATTRIBS = 0x8C8C;
138   enum uint SEPARATE_ATTRIBS = 0x8C8D;
139   enum uint TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
140   enum uint TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
141   enum uint RGBA32UI = 0x8D70;
142   enum uint RGB32UI = 0x8D71;
143   enum uint RGBA16UI = 0x8D76;
144   enum uint RGB16UI = 0x8D77;
145   enum uint RGBA8UI = 0x8D7C;
146   enum uint RGB8UI = 0x8D7D;
147   enum uint RGBA32I = 0x8D82;
148   enum uint RGB32I = 0x8D83;
149   enum uint RGBA16I = 0x8D88;
150   enum uint RGB16I = 0x8D89;
151   enum uint RGBA8I = 0x8D8E;
152   enum uint RGB8I = 0x8D8F;
153   enum uint RED_INTEGER = 0x8D94;
154   enum uint RGB_INTEGER = 0x8D98;
155   enum uint RGBA_INTEGER = 0x8D99;
156   enum uint SAMPLER_2D_ARRAY = 0x8DC1;
157   enum uint SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;
158   enum uint SAMPLER_CUBE_SHADOW = 0x8DC5;
159   enum uint UNSIGNED_INT_VEC2 = 0x8DC6;
160   enum uint UNSIGNED_INT_VEC3 = 0x8DC7;
161   enum uint UNSIGNED_INT_VEC4 = 0x8DC8;
162   enum uint INT_SAMPLER_2D = 0x8DCA;
163   enum uint INT_SAMPLER_3D = 0x8DCB;
164   enum uint INT_SAMPLER_CUBE = 0x8DCC;
165   enum uint INT_SAMPLER_2D_ARRAY = 0x8DCF;
166   enum uint UNSIGNED_INT_SAMPLER_2D = 0x8DD2;
167   enum uint UNSIGNED_INT_SAMPLER_3D = 0x8DD3;
168   enum uint UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;
169   enum uint UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;
170   enum uint DEPTH_COMPONENT32F = 0x8CAC;
171   enum uint DEPTH32F_STENCIL8 = 0x8CAD;
172   enum uint FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;
173   enum uint FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210;
174   enum uint FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211;
175   enum uint FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212;
176   enum uint FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213;
177   enum uint FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214;
178   enum uint FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215;
179   enum uint FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
180   enum uint FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
181   enum uint FRAMEBUFFER_DEFAULT = 0x8218;
182   enum uint UNSIGNED_INT_24_8 = 0x84FA;
183   enum uint DEPTH24_STENCIL8 = 0x88F0;
184   enum uint UNSIGNED_NORMALIZED = 0x8C17;
185   enum uint DRAW_FRAMEBUFFER_BINDING = 0x8CA6;
186   enum uint READ_FRAMEBUFFER = 0x8CA8;
187   enum uint DRAW_FRAMEBUFFER = 0x8CA9;
188   enum uint READ_FRAMEBUFFER_BINDING = 0x8CAA;
189   enum uint RENDERBUFFER_SAMPLES = 0x8CAB;
190   enum uint FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4;
191   enum uint MAX_COLOR_ATTACHMENTS = 0x8CDF;
192   enum uint COLOR_ATTACHMENT1 = 0x8CE1;
193   enum uint COLOR_ATTACHMENT2 = 0x8CE2;
194   enum uint COLOR_ATTACHMENT3 = 0x8CE3;
195   enum uint COLOR_ATTACHMENT4 = 0x8CE4;
196   enum uint COLOR_ATTACHMENT5 = 0x8CE5;
197   enum uint COLOR_ATTACHMENT6 = 0x8CE6;
198   enum uint COLOR_ATTACHMENT7 = 0x8CE7;
199   enum uint COLOR_ATTACHMENT8 = 0x8CE8;
200   enum uint COLOR_ATTACHMENT9 = 0x8CE9;
201   enum uint COLOR_ATTACHMENT10 = 0x8CEA;
202   enum uint COLOR_ATTACHMENT11 = 0x8CEB;
203   enum uint COLOR_ATTACHMENT12 = 0x8CEC;
204   enum uint COLOR_ATTACHMENT13 = 0x8CED;
205   enum uint COLOR_ATTACHMENT14 = 0x8CEE;
206   enum uint COLOR_ATTACHMENT15 = 0x8CEF;
207   enum uint FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
208   enum uint MAX_SAMPLES = 0x8D57;
209   enum uint HALF_FLOAT = 0x140B;
210   enum uint RG = 0x8227;
211   enum uint RG_INTEGER = 0x8228;
212   enum uint R8 = 0x8229;
213   enum uint RG8 = 0x822B;
214   enum uint R16F = 0x822D;
215   enum uint R32F = 0x822E;
216   enum uint RG16F = 0x822F;
217   enum uint RG32F = 0x8230;
218   enum uint R8I = 0x8231;
219   enum uint R8UI = 0x8232;
220   enum uint R16I = 0x8233;
221   enum uint R16UI = 0x8234;
222   enum uint R32I = 0x8235;
223   enum uint R32UI = 0x8236;
224   enum uint RG8I = 0x8237;
225   enum uint RG8UI = 0x8238;
226   enum uint RG16I = 0x8239;
227   enum uint RG16UI = 0x823A;
228   enum uint RG32I = 0x823B;
229   enum uint RG32UI = 0x823C;
230   enum uint VERTEX_ARRAY_BINDING = 0x85B5;
231   enum uint R8_SNORM = 0x8F94;
232   enum uint RG8_SNORM = 0x8F95;
233   enum uint RGB8_SNORM = 0x8F96;
234   enum uint RGBA8_SNORM = 0x8F97;
235   enum uint SIGNED_NORMALIZED = 0x8F9C;
236   enum uint COPY_READ_BUFFER = 0x8F36;
237   enum uint COPY_WRITE_BUFFER = 0x8F37;
238   enum uint COPY_READ_BUFFER_BINDING = 0x8F36;
239   enum uint COPY_WRITE_BUFFER_BINDING = 0x8F37;
240   enum uint UNIFORM_BUFFER = 0x8A11;
241   enum uint UNIFORM_BUFFER_BINDING = 0x8A28;
242   enum uint UNIFORM_BUFFER_START = 0x8A29;
243   enum uint UNIFORM_BUFFER_SIZE = 0x8A2A;
244   enum uint MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B;
245   enum uint MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D;
246   enum uint MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E;
247   enum uint MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F;
248   enum uint MAX_UNIFORM_BLOCK_SIZE = 0x8A30;
249   enum uint MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31;
250   enum uint MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33;
251   enum uint UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34;
252   enum uint ACTIVE_UNIFORM_BLOCKS = 0x8A36;
253   enum uint UNIFORM_TYPE = 0x8A37;
254   enum uint UNIFORM_SIZE = 0x8A38;
255   enum uint UNIFORM_BLOCK_INDEX = 0x8A3A;
256   enum uint UNIFORM_OFFSET = 0x8A3B;
257   enum uint UNIFORM_ARRAY_STRIDE = 0x8A3C;
258   enum uint UNIFORM_MATRIX_STRIDE = 0x8A3D;
259   enum uint UNIFORM_IS_ROW_MAJOR = 0x8A3E;
260   enum uint UNIFORM_BLOCK_BINDING = 0x8A3F;
261   enum uint UNIFORM_BLOCK_DATA_SIZE = 0x8A40;
262   enum uint UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42;
263   enum uint UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
264   enum uint UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
265   enum uint UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
266   enum uint INVALID_INDEX = 0xFFFFFFFF;
267   enum uint MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
268   enum uint MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
269   enum uint MAX_SERVER_WAIT_TIMEOUT = 0x9111;
270   enum uint OBJECT_TYPE = 0x9112;
271   enum uint SYNC_CONDITION = 0x9113;
272   enum uint SYNC_STATUS = 0x9114;
273   enum uint SYNC_FLAGS = 0x9115;
274   enum uint SYNC_FENCE = 0x9116;
275   enum uint SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
276   enum uint UNSIGNALED = 0x9118;
277   enum uint SIGNALED = 0x9119;
278   enum uint ALREADY_SIGNALED = 0x911A;
279   enum uint TIMEOUT_EXPIRED = 0x911B;
280   enum uint CONDITION_SATISFIED = 0x911C;
281   enum uint WAIT_FAILED = 0x911D;
282   enum uint SYNC_FLUSH_COMMANDS_BIT = 0x00000001;
283   enum uint VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE;
284   enum uint ANY_SAMPLES_PASSED = 0x8C2F;
285   enum uint ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
286   enum uint SAMPLER_BINDING = 0x8919;
287   enum uint RGB10_A2UI = 0x906F;
288   enum uint INT_2_10_10_10_REV = 0x8D9F;
289   enum uint TRANSFORM_FEEDBACK = 0x8E22;
290   enum uint TRANSFORM_FEEDBACK_PAUSED = 0x8E23;
291   enum uint TRANSFORM_FEEDBACK_ACTIVE = 0x8E24;
292   enum uint TRANSFORM_FEEDBACK_BINDING = 0x8E25;
293   enum uint TEXTURE_IMMUTABLE_FORMAT = 0x912F;
294   enum uint MAX_ELEMENT_INDEX = 0x8D6B;
295   enum uint TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
296   enum int TIMEOUT_IGNORED = -1;
297   enum uint MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
298   void bufferData()(uint target, int size, uint usage) {
299     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;int;uint", tuple(target, size, usage));
300   }
301   void bufferData(T1)(uint target, scope auto ref Optional!(T1) srcData, uint usage) if (isTOrPointer!(T1, ArrayBuffer)) {
302     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Optional!Handle;uint", tuple(target, !srcData.empty, cast(Handle)srcData.front.handle, usage));
303   }
304   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage) {
305     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint", tuple(target, cast(Handle)srcData.handle, usage));
306   }
307   void bufferSubData()(uint target, int offset, scope ref ArrayBuffer srcData) {
308     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle", tuple(target, offset, cast(Handle)srcData.handle));
309   }
310   void bufferSubData()(uint target, int offset, scope ref ArrayBufferView srcData) {
311     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle", tuple(target, offset, cast(Handle)srcData.handle));
312   }
313   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage, uint srcOffset, uint length /* = 0 */) {
314     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint;uint;uint", tuple(target, cast(Handle)srcData.handle, usage, srcOffset, length));
315   }
316   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage, uint srcOffset) {
317     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint;uint", tuple(target, cast(Handle)srcData.handle, usage, srcOffset));
318   }
319   void bufferSubData()(uint target, int dstByteOffset, scope ref ArrayBufferView srcData, uint srcOffset, uint length /* = 0 */) {
320     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle;uint;uint", tuple(target, dstByteOffset, cast(Handle)srcData.handle, srcOffset, length));
321   }
322   void bufferSubData()(uint target, int dstByteOffset, scope ref ArrayBufferView srcData, uint srcOffset) {
323     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle;uint", tuple(target, dstByteOffset, cast(Handle)srcData.handle, srcOffset));
324   }
325   void copyBufferSubData()(uint readTarget, uint writeTarget, int readOffset, int writeOffset, int size) {
326     Serialize_Object_VarArgCall!void(this.handle, "copyBufferSubData", "uint;uint;int;int;int", tuple(readTarget, writeTarget, readOffset, writeOffset, size));
327   }
328   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData, uint dstOffset /* = 0 */, uint length /* = 0 */) {
329     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle;uint;uint", tuple(target, srcByteOffset, cast(Handle)dstData.handle, dstOffset, length));
330   }
331   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData, uint dstOffset /* = 0 */) {
332     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle;uint", tuple(target, srcByteOffset, cast(Handle)dstData.handle, dstOffset));
333   }
334   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData) {
335     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle", tuple(target, srcByteOffset, cast(Handle)dstData.handle));
336   }
337   void blitFramebuffer()(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) {
338     Serialize_Object_VarArgCall!void(this.handle, "blitFramebuffer", "int;int;int;int;int;int;int;int;uint;uint", tuple(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
339   }
340   void framebufferTextureLayer(T2)(uint target, uint attachment, scope auto ref Optional!(T2) texture, int level, int layer) if (isTOrPointer!(T2, WebGLTexture)) {
341     Serialize_Object_VarArgCall!void(this.handle, "framebufferTextureLayer", "uint;uint;Optional!Handle;int;int", tuple(target, attachment, !texture.empty, cast(Handle)texture.front.handle, level, layer));
342   }
343   void invalidateFramebuffer()(uint target, scope ref Sequence!(uint) attachments) {
344     Serialize_Object_VarArgCall!void(this.handle, "invalidateFramebuffer", "uint;Handle", tuple(target, cast(Handle)attachments.handle));
345   }
346   void invalidateSubFramebuffer()(uint target, scope ref Sequence!(uint) attachments, int x, int y, int width, int height) {
347     Serialize_Object_VarArgCall!void(this.handle, "invalidateSubFramebuffer", "uint;Handle;int;int;int;int", tuple(target, cast(Handle)attachments.handle, x, y, width, height));
348   }
349   void readBuffer()(uint src) {
350     Object_Call_uint__void(this.handle, "readBuffer", src);
351   }
352   auto getInternalformatParameter()(uint target, uint internalformat, uint pname) {
353     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getInternalformatParameter", "uint;uint;uint", tuple(target, internalformat, pname)));
354   }
355   void renderbufferStorageMultisample()(uint target, int samples, uint internalformat, int width, int height) {
356     Serialize_Object_VarArgCall!void(this.handle, "renderbufferStorageMultisample", "uint;int;uint;int;int", tuple(target, samples, internalformat, width, height));
357   }
358   void texStorage2D()(uint target, int levels, uint internalformat, int width, int height) {
359     Serialize_Object_VarArgCall!void(this.handle, "texStorage2D", "uint;int;uint;int;int", tuple(target, levels, internalformat, width, height));
360   }
361   void texStorage3D()(uint target, int levels, uint internalformat, int width, int height, int depth) {
362     Serialize_Object_VarArgCall!void(this.handle, "texStorage3D", "uint;int;uint;int;int;int", tuple(target, levels, internalformat, width, height, depth));
363   }
364   void texImage2D(T8)(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope auto ref Optional!(T8) pixels) if (isTOrPointer!(T8, ArrayBufferView)) {
365     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, internalformat, width, height, border, format, type, !pixels.empty, cast(Handle)pixels.front.handle));
366   }
367   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLCanvasElement source) {
368     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
369   }
370   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLImageElement source) {
371     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
372   }
373   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLVideoElement source) {
374     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
375   }
376   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref ImageBitmap source) {
377     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source.handle));
378   }
379   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref ImageData source) {
380     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source.handle));
381   }
382   void texSubImage2D(T8)(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope auto ref Optional!(T8) pixels) if (isTOrPointer!(T8, ArrayBufferView)) {
383     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, !pixels.empty, cast(Handle)pixels.front.handle));
384   }
385   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLCanvasElement source) {
386     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
387   }
388   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLImageElement source) {
389     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
390   }
391   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLVideoElement source) {
392     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
393   }
394   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref ImageBitmap source) {
395     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source.handle));
396   }
397   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref ImageData source) {
398     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source.handle));
399   }
400   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, int pboOffset) {
401     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;int", tuple(target, level, internalformat, width, height, border, format, type, pboOffset));
402   }
403   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLCanvasElement source) {
404     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
405   }
406   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLImageElement source) {
407     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
408   }
409   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLVideoElement source) {
410     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
411   }
412   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ImageBitmap source) {
413     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source.handle));
414   }
415   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ImageData source) {
416     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source.handle));
417   }
418   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
419     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)srcData.handle, srcOffset));
420   }
421   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, int pboOffset) {
422     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;int", tuple(target, level, internalformat, width, height, depth, border, format, type, pboOffset));
423   }
424   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLCanvasElement source) {
425     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
426   }
427   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLImageElement source) {
428     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
429   }
430   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLVideoElement source) {
431     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
432   }
433   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ImageBitmap source) {
434     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source.handle));
435   }
436   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ImageData source) {
437     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source.handle));
438   }
439   void texImage3D(T9)(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope auto ref Optional!(T9) srcData) if (isTOrPointer!(T9, ArrayBufferView)) {
440     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, !srcData.empty, cast(Handle)srcData.front.handle));
441   }
442   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
443     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)srcData.handle, srcOffset));
444   }
445   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, int pboOffset) {
446     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;int", tuple(target, level, xoffset, yoffset, width, height, format, type, pboOffset));
447   }
448   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLCanvasElement source) {
449     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
450   }
451   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLImageElement source) {
452     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
453   }
454   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLVideoElement source) {
455     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
456   }
457   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ImageBitmap source) {
458     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source.handle));
459   }
460   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ImageData source) {
461     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source.handle));
462   }
463   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
464     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)srcData.handle, srcOffset));
465   }
466   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, int pboOffset) {
467     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;int", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pboOffset));
468   }
469   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLCanvasElement source) {
470     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
471   }
472   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLImageElement source) {
473     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
474   }
475   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLVideoElement source) {
476     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
477   }
478   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref ImageBitmap source) {
479     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source.handle));
480   }
481   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref ImageData source) {
482     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source.handle));
483   }
484   void texSubImage3D(T10)(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope auto ref Optional!(T10) srcData, uint srcOffset /* = 0 */) if (isTOrPointer!(T10, ArrayBufferView)) {
485     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Optional!Handle;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, !srcData.empty, cast(Handle)srcData.front.handle, srcOffset));
486   }
487   void texSubImage3D(T10)(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope auto ref Optional!(T10) srcData) if (isTOrPointer!(T10, ArrayBufferView)) {
488     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, !srcData.empty, cast(Handle)srcData.front.handle));
489   }
490   void copyTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) {
491     Serialize_Object_VarArgCall!void(this.handle, "copyTexSubImage3D", "uint;int;int;int;int;int;int;int;int", tuple(target, level, xoffset, yoffset, zoffset, x, y, width, height));
492   }
493   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, int offset) {
494     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;int;int", tuple(target, level, internalformat, width, height, border, imageSize, offset));
495   }
496   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
497     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle;uint;uint", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
498   }
499   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
500     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle;uint", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle, srcOffset));
501   }
502   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData) {
503     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle));
504   }
505   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, int offset) {
506     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;int;int", tuple(target, level, internalformat, width, height, depth, border, imageSize, offset));
507   }
508   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
509     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle;uint;uint", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
510   }
511   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
512     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle;uint", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle, srcOffset));
513   }
514   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData) {
515     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle));
516   }
517   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, int offset) {
518     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;int;int", tuple(target, level, xoffset, yoffset, width, height, format, imageSize, offset));
519   }
520   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
521     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle;uint;uint", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
522   }
523   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
524     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle;uint", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle, srcOffset));
525   }
526   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData) {
527     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle));
528   }
529   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, int offset) {
530     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;int;int", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset));
531   }
532   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
533     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle;uint;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
534   }
535   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
536     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle, srcOffset));
537   }
538   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData) {
539     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle));
540   }
541   int getFragDataLocation()(scope ref WebGLProgram program, string name) {
542     return Serialize_Object_VarArgCall!int(this.handle, "getFragDataLocation", "Handle;string", tuple(cast(Handle)program.handle, name));
543   }
544   void uniform1ui(T0)(scope auto ref Optional!(T0) location, uint v0) if (isTOrPointer!(T0, WebGLUniformLocation)) {
545     Serialize_Object_VarArgCall!void(this.handle, "uniform1ui", "Optional!Handle;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0));
546   }
547   void uniform2ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1) if (isTOrPointer!(T0, WebGLUniformLocation)) {
548     Serialize_Object_VarArgCall!void(this.handle, "uniform2ui", "Optional!Handle;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1));
549   }
550   void uniform3ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1, uint v2) if (isTOrPointer!(T0, WebGLUniformLocation)) {
551     Serialize_Object_VarArgCall!void(this.handle, "uniform3ui", "Optional!Handle;uint;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1, v2));
552   }
553   void uniform4ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1, uint v2, uint v3) if (isTOrPointer!(T0, WebGLUniformLocation)) {
554     Serialize_Object_VarArgCall!void(this.handle, "uniform4ui", "Optional!Handle;uint;uint;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1, v2, v3));
555   }
556   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
557     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
558   }
559   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
560     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
561   }
562   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
563     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
564   }
565   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
566     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
567   }
568   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
569     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
570   }
571   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
572     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
573   }
574   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
575     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
576   }
577   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
578     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
579   }
580   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
581     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
582   }
583   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
584     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
585   }
586   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
587     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
588   }
589   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
590     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
591   }
592   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
593     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
594   }
595   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
596     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
597   }
598   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
599     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
600   }
601   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
602     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
603   }
604   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
605     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
606   }
607   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
608     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
609   }
610   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
611     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
612   }
613   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
614     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
615   }
616   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
617     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
618   }
619   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
620     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
621   }
622   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
623     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
624   }
625   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
626     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
627   }
628   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
629     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
630   }
631   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
632     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
633   }
634   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
635     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
636   }
637   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
638     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
639   }
640   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
641     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
642   }
643   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
644     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
645   }
646   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
647     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
648   }
649   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
650     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
651   }
652   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
653     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
654   }
655   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
656     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
657   }
658   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
659     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
660   }
661   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
662     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
663   }
664   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
665     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
666   }
667   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
668     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
669   }
670   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
671     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
672   }
673   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
674     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
675   }
676   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
677     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
678   }
679   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
680     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
681   }
682   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
683     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
684   }
685   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
686     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
687   }
688   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
689     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
690   }
691   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
692     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
693   }
694   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
695     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
696   }
697   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
698     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
699   }
700   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
701     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
702   }
703   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
704     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
705   }
706   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
707     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
708   }
709   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
710     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
711   }
712   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
713     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
714   }
715   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
716     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
717   }
718   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
719     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
720   }
721   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
722     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
723   }
724   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
725     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
726   }
727   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
728     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
729   }
730   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
731     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
732   }
733   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
734     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
735   }
736   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
737     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
738   }
739   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
740     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
741   }
742   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
743     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
744   }
745   void vertexAttribI4i()(uint index, int x, int y, int z, int w) {
746     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4i", "uint;int;int;int;int", tuple(index, x, y, z, w));
747   }
748   void vertexAttribI4iv()(uint index, scope ref Int32List values) {
749     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4iv", "uint;SumType!(Handle,Handle)", tuple(index, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
750   }
751   void vertexAttribI4ui()(uint index, uint x, uint y, uint z, uint w) {
752     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4ui", "uint;uint;uint;uint;uint", tuple(index, x, y, z, w));
753   }
754   void vertexAttribI4uiv()(uint index, scope ref Uint32List values) {
755     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4uiv", "uint;SumType!(Handle,Handle)", tuple(index, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
756   }
757   void vertexAttribIPointer()(uint index, int size, uint type, int stride, int offset) {
758     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribIPointer", "uint;int;uint;int;int", tuple(index, size, type, stride, offset));
759   }
760   void vertexAttribDivisor()(uint index, uint divisor) {
761     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribDivisor", "uint;uint", tuple(index, divisor));
762   }
763   void drawArraysInstanced()(uint mode, int first, int count, int instanceCount) {
764     Serialize_Object_VarArgCall!void(this.handle, "drawArraysInstanced", "uint;int;int;int", tuple(mode, first, count, instanceCount));
765   }
766   void drawElementsInstanced()(uint mode, int count, uint type, int offset, int instanceCount) {
767     Serialize_Object_VarArgCall!void(this.handle, "drawElementsInstanced", "uint;int;uint;int;int", tuple(mode, count, type, offset, instanceCount));
768   }
769   void drawRangeElements()(uint mode, uint start, uint end, int count, uint type, int offset) {
770     Serialize_Object_VarArgCall!void(this.handle, "drawRangeElements", "uint;uint;uint;int;uint;int", tuple(mode, start, end, count, type, offset));
771   }
772   void readPixels(T6)(int x, int y, int width, int height, uint format, uint type, scope auto ref Optional!(T6) dstData) if (isTOrPointer!(T6, ArrayBufferView)) {
773     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;Optional!Handle", tuple(x, y, width, height, format, type, !dstData.empty, cast(Handle)dstData.front.handle));
774   }
775   void readPixels()(int x, int y, int width, int height, uint format, uint type, int offset) {
776     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;int", tuple(x, y, width, height, format, type, offset));
777   }
778   void readPixels()(int x, int y, int width, int height, uint format, uint type, scope ref ArrayBufferView dstData, uint dstOffset) {
779     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;Handle;uint", tuple(x, y, width, height, format, type, cast(Handle)dstData.handle, dstOffset));
780   }
781   void drawBuffers()(scope ref Sequence!(uint) buffers) {
782     Object_Call_Handle__void(this.handle, "drawBuffers", buffers.handle);
783   }
784   void clearBufferfv()(uint buffer, int drawbuffer, scope ref Float32List values, uint srcOffset /* = 0 */) {
785     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
786   }
787   void clearBufferfv()(uint buffer, int drawbuffer, scope ref Float32List values) {
788     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
789   }
790   void clearBufferiv()(uint buffer, int drawbuffer, scope ref Int32List values, uint srcOffset /* = 0 */) {
791     Serialize_Object_VarArgCall!void(this.handle, "clearBufferiv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
792   }
793   void clearBufferiv()(uint buffer, int drawbuffer, scope ref Int32List values) {
794     Serialize_Object_VarArgCall!void(this.handle, "clearBufferiv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
795   }
796   void clearBufferuiv()(uint buffer, int drawbuffer, scope ref Uint32List values, uint srcOffset /* = 0 */) {
797     Serialize_Object_VarArgCall!void(this.handle, "clearBufferuiv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
798   }
799   void clearBufferuiv()(uint buffer, int drawbuffer, scope ref Uint32List values) {
800     Serialize_Object_VarArgCall!void(this.handle, "clearBufferuiv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
801   }
802   void clearBufferfi()(uint buffer, int drawbuffer, float depth, int stencil) {
803     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfi", "uint;int;float;int", tuple(buffer, drawbuffer, depth, stencil));
804   }
805   auto createQuery()() {
806     return recastOpt!(WebGLQuery)(Object_Getter__OptionalHandle(this.handle, "createQuery"));
807   }
808   void deleteQuery(T0)(scope auto ref Optional!(T0) query) if (isTOrPointer!(T0, WebGLQuery)) {
809     Serialize_Object_VarArgCall!void(this.handle, "deleteQuery", "Optional!Handle", tuple(!query.empty, cast(Handle)query.front.handle));
810   }
811   bool isQuery(T0)(scope auto ref Optional!(T0) query) if (isTOrPointer!(T0, WebGLQuery)) {
812     return Serialize_Object_VarArgCall!bool(this.handle, "isQuery", "Optional!Handle", tuple(!query.empty, cast(Handle)query.front.handle));
813   }
814   void beginQuery()(uint target, scope ref WebGLQuery query) {
815     Serialize_Object_VarArgCall!void(this.handle, "beginQuery", "uint;Handle", tuple(target, cast(Handle)query.handle));
816   }
817   void endQuery()(uint target) {
818     Object_Call_uint__void(this.handle, "endQuery", target);
819   }
820   auto getQuery()(uint target, uint pname) {
821     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getQuery", "uint;uint", tuple(target, pname)));
822   }
823   auto getQueryParameter()(scope ref WebGLQuery query, uint pname) {
824     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getQueryParameter", "Handle;uint", tuple(cast(Handle)query.handle, pname)));
825   }
826   auto createSampler()() {
827     return recastOpt!(WebGLSampler)(Object_Getter__OptionalHandle(this.handle, "createSampler"));
828   }
829   void deleteSampler(T0)(scope auto ref Optional!(T0) sampler) if (isTOrPointer!(T0, WebGLSampler)) {
830     Serialize_Object_VarArgCall!void(this.handle, "deleteSampler", "Optional!Handle", tuple(!sampler.empty, cast(Handle)sampler.front.handle));
831   }
832   bool isSampler(T0)(scope auto ref Optional!(T0) sampler) if (isTOrPointer!(T0, WebGLSampler)) {
833     return Serialize_Object_VarArgCall!bool(this.handle, "isSampler", "Optional!Handle", tuple(!sampler.empty, cast(Handle)sampler.front.handle));
834   }
835   void bindSampler(T1)(uint unit, scope auto ref Optional!(T1) sampler) if (isTOrPointer!(T1, WebGLSampler)) {
836     Serialize_Object_VarArgCall!void(this.handle, "bindSampler", "uint;Optional!Handle", tuple(unit, !sampler.empty, cast(Handle)sampler.front.handle));
837   }
838   void samplerParameteri()(scope ref WebGLSampler sampler, uint pname, int param) {
839     Serialize_Object_VarArgCall!void(this.handle, "samplerParameteri", "Handle;uint;int", tuple(cast(Handle)sampler.handle, pname, param));
840   }
841   void samplerParameterf()(scope ref WebGLSampler sampler, uint pname, float param) {
842     Serialize_Object_VarArgCall!void(this.handle, "samplerParameterf", "Handle;uint;float", tuple(cast(Handle)sampler.handle, pname, param));
843   }
844   auto getSamplerParameter()(scope ref WebGLSampler sampler, uint pname) {
845     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getSamplerParameter", "Handle;uint", tuple(cast(Handle)sampler.handle, pname)));
846   }
847   auto fenceSync()(uint condition, uint flags) {
848     return recastOpt!(WebGLSync)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "fenceSync", "uint;uint", tuple(condition, flags)));
849   }
850   bool isSync(T0)(scope auto ref Optional!(T0) sync) if (isTOrPointer!(T0, WebGLSync)) {
851     return Serialize_Object_VarArgCall!bool(this.handle, "isSync", "Optional!Handle", tuple(!sync.empty, cast(Handle)sync.front.handle));
852   }
853   void deleteSync(T0)(scope auto ref Optional!(T0) sync) if (isTOrPointer!(T0, WebGLSync)) {
854     Serialize_Object_VarArgCall!void(this.handle, "deleteSync", "Optional!Handle", tuple(!sync.empty, cast(Handle)sync.front.handle));
855   }
856   uint clientWaitSync()(scope ref WebGLSync sync, uint flags, uint timeout) {
857     return Serialize_Object_VarArgCall!uint(this.handle, "clientWaitSync", "Handle;uint;uint", tuple(cast(Handle)sync.handle, flags, timeout));
858   }
859   void waitSync()(scope ref WebGLSync sync, uint flags, int timeout) {
860     Serialize_Object_VarArgCall!void(this.handle, "waitSync", "Handle;uint;int", tuple(cast(Handle)sync.handle, flags, timeout));
861   }
862   auto getSyncParameter()(scope ref WebGLSync sync, uint pname) {
863     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getSyncParameter", "Handle;uint", tuple(cast(Handle)sync.handle, pname)));
864   }
865   auto createTransformFeedback()() {
866     return recastOpt!(WebGLTransformFeedback)(Object_Getter__OptionalHandle(this.handle, "createTransformFeedback"));
867   }
868   void deleteTransformFeedback(T0)(scope auto ref Optional!(T0) tf) if (isTOrPointer!(T0, WebGLTransformFeedback)) {
869     Serialize_Object_VarArgCall!void(this.handle, "deleteTransformFeedback", "Optional!Handle", tuple(!tf.empty, cast(Handle)tf.front.handle));
870   }
871   bool isTransformFeedback(T0)(scope auto ref Optional!(T0) tf) if (isTOrPointer!(T0, WebGLTransformFeedback)) {
872     return Serialize_Object_VarArgCall!bool(this.handle, "isTransformFeedback", "Optional!Handle", tuple(!tf.empty, cast(Handle)tf.front.handle));
873   }
874   void bindTransformFeedback(T1)(uint target, scope auto ref Optional!(T1) tf) if (isTOrPointer!(T1, WebGLTransformFeedback)) {
875     Serialize_Object_VarArgCall!void(this.handle, "bindTransformFeedback", "uint;Optional!Handle", tuple(target, !tf.empty, cast(Handle)tf.front.handle));
876   }
877   void beginTransformFeedback()(uint primitiveMode) {
878     Object_Call_uint__void(this.handle, "beginTransformFeedback", primitiveMode);
879   }
880   void endTransformFeedback()() {
881     Object_Call__void(this.handle, "endTransformFeedback");
882   }
883   void transformFeedbackVaryings()(scope ref WebGLProgram program, scope ref Sequence!(string) varyings, uint bufferMode) {
884     Serialize_Object_VarArgCall!void(this.handle, "transformFeedbackVaryings", "Handle;Handle;uint", tuple(cast(Handle)program.handle, cast(Handle)varyings.handle, bufferMode));
885   }
886   auto getTransformFeedbackVarying()(scope ref WebGLProgram program, uint index) {
887     return recastOpt!(WebGLActiveInfo)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getTransformFeedbackVarying", "Handle;uint", tuple(cast(Handle)program.handle, index)));
888   }
889   void pauseTransformFeedback()() {
890     Object_Call__void(this.handle, "pauseTransformFeedback");
891   }
892   void resumeTransformFeedback()() {
893     Object_Call__void(this.handle, "resumeTransformFeedback");
894   }
895   void bindBufferBase(T2)(uint target, uint index, scope auto ref Optional!(T2) buffer) if (isTOrPointer!(T2, WebGLBuffer)) {
896     Serialize_Object_VarArgCall!void(this.handle, "bindBufferBase", "uint;uint;Optional!Handle", tuple(target, index, !buffer.empty, cast(Handle)buffer.front.handle));
897   }
898   void bindBufferRange(T2)(uint target, uint index, scope auto ref Optional!(T2) buffer, int offset, int size) if (isTOrPointer!(T2, WebGLBuffer)) {
899     Serialize_Object_VarArgCall!void(this.handle, "bindBufferRange", "uint;uint;Optional!Handle;int;int", tuple(target, index, !buffer.empty, cast(Handle)buffer.front.handle, offset, size));
900   }
901   auto getIndexedParameter()(uint target, uint index) {
902     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getIndexedParameter", "uint;uint", tuple(target, index)));
903   }
904   auto getUniformIndices()(scope ref WebGLProgram program, scope ref Sequence!(string) uniformNames) {
905     return recastOpt!(Sequence!(uint))(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getUniformIndices", "Handle;Handle", tuple(cast(Handle)program.handle, cast(Handle)uniformNames.handle)));
906   }
907   auto getActiveUniforms()(scope ref WebGLProgram program, scope ref Sequence!(uint) uniformIndices, uint pname) {
908     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getActiveUniforms", "Handle;Handle;uint", tuple(cast(Handle)program.handle, cast(Handle)uniformIndices.handle, pname)));
909   }
910   uint getUniformBlockIndex()(scope ref WebGLProgram program, string uniformBlockName) {
911     return Serialize_Object_VarArgCall!uint(this.handle, "getUniformBlockIndex", "Handle;string", tuple(cast(Handle)program.handle, uniformBlockName));
912   }
913   auto getActiveUniformBlockParameter()(scope ref WebGLProgram program, uint uniformBlockIndex, uint pname) {
914     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getActiveUniformBlockParameter", "Handle;uint;uint", tuple(cast(Handle)program.handle, uniformBlockIndex, pname)));
915   }
916   Optional!(string) getActiveUniformBlockName()(scope ref WebGLProgram program, uint uniformBlockIndex) {
917     return Serialize_Object_VarArgCall!(Optional!string)(this.handle, "getActiveUniformBlockName", "Handle;uint", tuple(cast(Handle)program.handle, uniformBlockIndex));
918   }
919   void uniformBlockBinding()(scope ref WebGLProgram program, uint uniformBlockIndex, uint uniformBlockBinding) {
920     Serialize_Object_VarArgCall!void(this.handle, "uniformBlockBinding", "Handle;uint;uint", tuple(cast(Handle)program.handle, uniformBlockIndex, uniformBlockBinding));
921   }
922   auto createVertexArray()() {
923     return recastOpt!(WebGLVertexArrayObject)(Object_Getter__OptionalHandle(this.handle, "createVertexArray"));
924   }
925   void deleteVertexArray(T0)(scope auto ref Optional!(T0) vertexArray) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
926     Serialize_Object_VarArgCall!void(this.handle, "deleteVertexArray", "Optional!Handle", tuple(!vertexArray.empty, cast(Handle)vertexArray.front.handle));
927   }
928   bool isVertexArray(T0)(scope auto ref Optional!(T0) vertexArray) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
929     return Serialize_Object_VarArgCall!bool(this.handle, "isVertexArray", "Optional!Handle", tuple(!vertexArray.empty, cast(Handle)vertexArray.front.handle));
930   }
931   void bindVertexArray(T0)(scope auto ref Optional!(T0) array) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
932     Serialize_Object_VarArgCall!void(this.handle, "bindVertexArray", "Optional!Handle", tuple(!array.empty, cast(Handle)array.front.handle));
933   }
934 }
935 struct WebGL2RenderingContextBase {
936   nothrow:
937   JsHandle handle;
938   alias handle this;
939   this(Handle h) {
940     this.handle = JsHandle(h);
941   }
942   enum uint READ_BUFFER = 0x0C02;
943   enum uint UNPACK_ROW_LENGTH = 0x0CF2;
944   enum uint UNPACK_SKIP_ROWS = 0x0CF3;
945   enum uint UNPACK_SKIP_PIXELS = 0x0CF4;
946   enum uint PACK_ROW_LENGTH = 0x0D02;
947   enum uint PACK_SKIP_ROWS = 0x0D03;
948   enum uint PACK_SKIP_PIXELS = 0x0D04;
949   enum uint COLOR = 0x1800;
950   enum uint DEPTH = 0x1801;
951   enum uint STENCIL = 0x1802;
952   enum uint RED = 0x1903;
953   enum uint RGB8 = 0x8051;
954   enum uint RGBA8 = 0x8058;
955   enum uint RGB10_A2 = 0x8059;
956   enum uint TEXTURE_BINDING_3D = 0x806A;
957   enum uint UNPACK_SKIP_IMAGES = 0x806D;
958   enum uint UNPACK_IMAGE_HEIGHT = 0x806E;
959   enum uint TEXTURE_3D = 0x806F;
960   enum uint TEXTURE_WRAP_R = 0x8072;
961   enum uint MAX_3D_TEXTURE_SIZE = 0x8073;
962   enum uint UNSIGNED_INT_2_10_10_10_REV = 0x8368;
963   enum uint MAX_ELEMENTS_VERTICES = 0x80E8;
964   enum uint MAX_ELEMENTS_INDICES = 0x80E9;
965   enum uint TEXTURE_MIN_LOD = 0x813A;
966   enum uint TEXTURE_MAX_LOD = 0x813B;
967   enum uint TEXTURE_BASE_LEVEL = 0x813C;
968   enum uint TEXTURE_MAX_LEVEL = 0x813D;
969   enum uint MIN = 0x8007;
970   enum uint MAX = 0x8008;
971   enum uint DEPTH_COMPONENT24 = 0x81A6;
972   enum uint MAX_TEXTURE_LOD_BIAS = 0x84FD;
973   enum uint TEXTURE_COMPARE_MODE = 0x884C;
974   enum uint TEXTURE_COMPARE_FUNC = 0x884D;
975   enum uint CURRENT_QUERY = 0x8865;
976   enum uint QUERY_RESULT = 0x8866;
977   enum uint QUERY_RESULT_AVAILABLE = 0x8867;
978   enum uint STREAM_READ = 0x88E1;
979   enum uint STREAM_COPY = 0x88E2;
980   enum uint STATIC_READ = 0x88E5;
981   enum uint STATIC_COPY = 0x88E6;
982   enum uint DYNAMIC_READ = 0x88E9;
983   enum uint DYNAMIC_COPY = 0x88EA;
984   enum uint MAX_DRAW_BUFFERS = 0x8824;
985   enum uint DRAW_BUFFER0 = 0x8825;
986   enum uint DRAW_BUFFER1 = 0x8826;
987   enum uint DRAW_BUFFER2 = 0x8827;
988   enum uint DRAW_BUFFER3 = 0x8828;
989   enum uint DRAW_BUFFER4 = 0x8829;
990   enum uint DRAW_BUFFER5 = 0x882A;
991   enum uint DRAW_BUFFER6 = 0x882B;
992   enum uint DRAW_BUFFER7 = 0x882C;
993   enum uint DRAW_BUFFER8 = 0x882D;
994   enum uint DRAW_BUFFER9 = 0x882E;
995   enum uint DRAW_BUFFER10 = 0x882F;
996   enum uint DRAW_BUFFER11 = 0x8830;
997   enum uint DRAW_BUFFER12 = 0x8831;
998   enum uint DRAW_BUFFER13 = 0x8832;
999   enum uint DRAW_BUFFER14 = 0x8833;
1000   enum uint DRAW_BUFFER15 = 0x8834;
1001   enum uint MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
1002   enum uint MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
1003   enum uint SAMPLER_3D = 0x8B5F;
1004   enum uint SAMPLER_2D_SHADOW = 0x8B62;
1005   enum uint FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
1006   enum uint PIXEL_PACK_BUFFER = 0x88EB;
1007   enum uint PIXEL_UNPACK_BUFFER = 0x88EC;
1008   enum uint PIXEL_PACK_BUFFER_BINDING = 0x88ED;
1009   enum uint PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
1010   enum uint FLOAT_MAT2x3 = 0x8B65;
1011   enum uint FLOAT_MAT2x4 = 0x8B66;
1012   enum uint FLOAT_MAT3x2 = 0x8B67;
1013   enum uint FLOAT_MAT3x4 = 0x8B68;
1014   enum uint FLOAT_MAT4x2 = 0x8B69;
1015   enum uint FLOAT_MAT4x3 = 0x8B6A;
1016   enum uint SRGB = 0x8C40;
1017   enum uint SRGB8 = 0x8C41;
1018   enum uint SRGB8_ALPHA8 = 0x8C43;
1019   enum uint COMPARE_REF_TO_TEXTURE = 0x884E;
1020   enum uint RGBA32F = 0x8814;
1021   enum uint RGB32F = 0x8815;
1022   enum uint RGBA16F = 0x881A;
1023   enum uint RGB16F = 0x881B;
1024   enum uint VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD;
1025   enum uint MAX_ARRAY_TEXTURE_LAYERS = 0x88FF;
1026   enum uint MIN_PROGRAM_TEXEL_OFFSET = 0x8904;
1027   enum uint MAX_PROGRAM_TEXEL_OFFSET = 0x8905;
1028   enum uint MAX_VARYING_COMPONENTS = 0x8B4B;
1029   enum uint TEXTURE_2D_ARRAY = 0x8C1A;
1030   enum uint TEXTURE_BINDING_2D_ARRAY = 0x8C1D;
1031   enum uint R11F_G11F_B10F = 0x8C3A;
1032   enum uint UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;
1033   enum uint RGB9_E5 = 0x8C3D;
1034   enum uint UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;
1035   enum uint TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F;
1036   enum uint MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80;
1037   enum uint TRANSFORM_FEEDBACK_VARYINGS = 0x8C83;
1038   enum uint TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
1039   enum uint TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
1040   enum uint TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
1041   enum uint RASTERIZER_DISCARD = 0x8C89;
1042   enum uint MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
1043   enum uint MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
1044   enum uint INTERLEAVED_ATTRIBS = 0x8C8C;
1045   enum uint SEPARATE_ATTRIBS = 0x8C8D;
1046   enum uint TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
1047   enum uint TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
1048   enum uint RGBA32UI = 0x8D70;
1049   enum uint RGB32UI = 0x8D71;
1050   enum uint RGBA16UI = 0x8D76;
1051   enum uint RGB16UI = 0x8D77;
1052   enum uint RGBA8UI = 0x8D7C;
1053   enum uint RGB8UI = 0x8D7D;
1054   enum uint RGBA32I = 0x8D82;
1055   enum uint RGB32I = 0x8D83;
1056   enum uint RGBA16I = 0x8D88;
1057   enum uint RGB16I = 0x8D89;
1058   enum uint RGBA8I = 0x8D8E;
1059   enum uint RGB8I = 0x8D8F;
1060   enum uint RED_INTEGER = 0x8D94;
1061   enum uint RGB_INTEGER = 0x8D98;
1062   enum uint RGBA_INTEGER = 0x8D99;
1063   enum uint SAMPLER_2D_ARRAY = 0x8DC1;
1064   enum uint SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;
1065   enum uint SAMPLER_CUBE_SHADOW = 0x8DC5;
1066   enum uint UNSIGNED_INT_VEC2 = 0x8DC6;
1067   enum uint UNSIGNED_INT_VEC3 = 0x8DC7;
1068   enum uint UNSIGNED_INT_VEC4 = 0x8DC8;
1069   enum uint INT_SAMPLER_2D = 0x8DCA;
1070   enum uint INT_SAMPLER_3D = 0x8DCB;
1071   enum uint INT_SAMPLER_CUBE = 0x8DCC;
1072   enum uint INT_SAMPLER_2D_ARRAY = 0x8DCF;
1073   enum uint UNSIGNED_INT_SAMPLER_2D = 0x8DD2;
1074   enum uint UNSIGNED_INT_SAMPLER_3D = 0x8DD3;
1075   enum uint UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;
1076   enum uint UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;
1077   enum uint DEPTH_COMPONENT32F = 0x8CAC;
1078   enum uint DEPTH32F_STENCIL8 = 0x8CAD;
1079   enum uint FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;
1080   enum uint FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210;
1081   enum uint FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211;
1082   enum uint FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212;
1083   enum uint FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213;
1084   enum uint FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214;
1085   enum uint FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215;
1086   enum uint FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
1087   enum uint FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
1088   enum uint FRAMEBUFFER_DEFAULT = 0x8218;
1089   enum uint UNSIGNED_INT_24_8 = 0x84FA;
1090   enum uint DEPTH24_STENCIL8 = 0x88F0;
1091   enum uint UNSIGNED_NORMALIZED = 0x8C17;
1092   enum uint DRAW_FRAMEBUFFER_BINDING = 0x8CA6;
1093   enum uint READ_FRAMEBUFFER = 0x8CA8;
1094   enum uint DRAW_FRAMEBUFFER = 0x8CA9;
1095   enum uint READ_FRAMEBUFFER_BINDING = 0x8CAA;
1096   enum uint RENDERBUFFER_SAMPLES = 0x8CAB;
1097   enum uint FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4;
1098   enum uint MAX_COLOR_ATTACHMENTS = 0x8CDF;
1099   enum uint COLOR_ATTACHMENT1 = 0x8CE1;
1100   enum uint COLOR_ATTACHMENT2 = 0x8CE2;
1101   enum uint COLOR_ATTACHMENT3 = 0x8CE3;
1102   enum uint COLOR_ATTACHMENT4 = 0x8CE4;
1103   enum uint COLOR_ATTACHMENT5 = 0x8CE5;
1104   enum uint COLOR_ATTACHMENT6 = 0x8CE6;
1105   enum uint COLOR_ATTACHMENT7 = 0x8CE7;
1106   enum uint COLOR_ATTACHMENT8 = 0x8CE8;
1107   enum uint COLOR_ATTACHMENT9 = 0x8CE9;
1108   enum uint COLOR_ATTACHMENT10 = 0x8CEA;
1109   enum uint COLOR_ATTACHMENT11 = 0x8CEB;
1110   enum uint COLOR_ATTACHMENT12 = 0x8CEC;
1111   enum uint COLOR_ATTACHMENT13 = 0x8CED;
1112   enum uint COLOR_ATTACHMENT14 = 0x8CEE;
1113   enum uint COLOR_ATTACHMENT15 = 0x8CEF;
1114   enum uint FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
1115   enum uint MAX_SAMPLES = 0x8D57;
1116   enum uint HALF_FLOAT = 0x140B;
1117   enum uint RG = 0x8227;
1118   enum uint RG_INTEGER = 0x8228;
1119   enum uint R8 = 0x8229;
1120   enum uint RG8 = 0x822B;
1121   enum uint R16F = 0x822D;
1122   enum uint R32F = 0x822E;
1123   enum uint RG16F = 0x822F;
1124   enum uint RG32F = 0x8230;
1125   enum uint R8I = 0x8231;
1126   enum uint R8UI = 0x8232;
1127   enum uint R16I = 0x8233;
1128   enum uint R16UI = 0x8234;
1129   enum uint R32I = 0x8235;
1130   enum uint R32UI = 0x8236;
1131   enum uint RG8I = 0x8237;
1132   enum uint RG8UI = 0x8238;
1133   enum uint RG16I = 0x8239;
1134   enum uint RG16UI = 0x823A;
1135   enum uint RG32I = 0x823B;
1136   enum uint RG32UI = 0x823C;
1137   enum uint VERTEX_ARRAY_BINDING = 0x85B5;
1138   enum uint R8_SNORM = 0x8F94;
1139   enum uint RG8_SNORM = 0x8F95;
1140   enum uint RGB8_SNORM = 0x8F96;
1141   enum uint RGBA8_SNORM = 0x8F97;
1142   enum uint SIGNED_NORMALIZED = 0x8F9C;
1143   enum uint COPY_READ_BUFFER = 0x8F36;
1144   enum uint COPY_WRITE_BUFFER = 0x8F37;
1145   enum uint COPY_READ_BUFFER_BINDING = 0x8F36;
1146   enum uint COPY_WRITE_BUFFER_BINDING = 0x8F37;
1147   enum uint UNIFORM_BUFFER = 0x8A11;
1148   enum uint UNIFORM_BUFFER_BINDING = 0x8A28;
1149   enum uint UNIFORM_BUFFER_START = 0x8A29;
1150   enum uint UNIFORM_BUFFER_SIZE = 0x8A2A;
1151   enum uint MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B;
1152   enum uint MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D;
1153   enum uint MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E;
1154   enum uint MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F;
1155   enum uint MAX_UNIFORM_BLOCK_SIZE = 0x8A30;
1156   enum uint MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31;
1157   enum uint MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33;
1158   enum uint UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34;
1159   enum uint ACTIVE_UNIFORM_BLOCKS = 0x8A36;
1160   enum uint UNIFORM_TYPE = 0x8A37;
1161   enum uint UNIFORM_SIZE = 0x8A38;
1162   enum uint UNIFORM_BLOCK_INDEX = 0x8A3A;
1163   enum uint UNIFORM_OFFSET = 0x8A3B;
1164   enum uint UNIFORM_ARRAY_STRIDE = 0x8A3C;
1165   enum uint UNIFORM_MATRIX_STRIDE = 0x8A3D;
1166   enum uint UNIFORM_IS_ROW_MAJOR = 0x8A3E;
1167   enum uint UNIFORM_BLOCK_BINDING = 0x8A3F;
1168   enum uint UNIFORM_BLOCK_DATA_SIZE = 0x8A40;
1169   enum uint UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42;
1170   enum uint UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
1171   enum uint UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
1172   enum uint UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
1173   enum uint INVALID_INDEX = 0xFFFFFFFF;
1174   enum uint MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
1175   enum uint MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
1176   enum uint MAX_SERVER_WAIT_TIMEOUT = 0x9111;
1177   enum uint OBJECT_TYPE = 0x9112;
1178   enum uint SYNC_CONDITION = 0x9113;
1179   enum uint SYNC_STATUS = 0x9114;
1180   enum uint SYNC_FLAGS = 0x9115;
1181   enum uint SYNC_FENCE = 0x9116;
1182   enum uint SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
1183   enum uint UNSIGNALED = 0x9118;
1184   enum uint SIGNALED = 0x9119;
1185   enum uint ALREADY_SIGNALED = 0x911A;
1186   enum uint TIMEOUT_EXPIRED = 0x911B;
1187   enum uint CONDITION_SATISFIED = 0x911C;
1188   enum uint WAIT_FAILED = 0x911D;
1189   enum uint SYNC_FLUSH_COMMANDS_BIT = 0x00000001;
1190   enum uint VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE;
1191   enum uint ANY_SAMPLES_PASSED = 0x8C2F;
1192   enum uint ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
1193   enum uint SAMPLER_BINDING = 0x8919;
1194   enum uint RGB10_A2UI = 0x906F;
1195   enum uint INT_2_10_10_10_REV = 0x8D9F;
1196   enum uint TRANSFORM_FEEDBACK = 0x8E22;
1197   enum uint TRANSFORM_FEEDBACK_PAUSED = 0x8E23;
1198   enum uint TRANSFORM_FEEDBACK_ACTIVE = 0x8E24;
1199   enum uint TRANSFORM_FEEDBACK_BINDING = 0x8E25;
1200   enum uint TEXTURE_IMMUTABLE_FORMAT = 0x912F;
1201   enum uint MAX_ELEMENT_INDEX = 0x8D6B;
1202   enum uint TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
1203   enum int TIMEOUT_IGNORED = -1;
1204   enum uint MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
1205   void bufferData()(uint target, int size, uint usage) {
1206     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;int;uint", tuple(target, size, usage));
1207   }
1208   void bufferData(T1)(uint target, scope auto ref Optional!(T1) srcData, uint usage) if (isTOrPointer!(T1, ArrayBuffer)) {
1209     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Optional!Handle;uint", tuple(target, !srcData.empty, cast(Handle)srcData.front.handle, usage));
1210   }
1211   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage) {
1212     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint", tuple(target, cast(Handle)srcData.handle, usage));
1213   }
1214   void bufferSubData()(uint target, int offset, scope ref ArrayBuffer srcData) {
1215     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle", tuple(target, offset, cast(Handle)srcData.handle));
1216   }
1217   void bufferSubData()(uint target, int offset, scope ref ArrayBufferView srcData) {
1218     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle", tuple(target, offset, cast(Handle)srcData.handle));
1219   }
1220   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage, uint srcOffset, uint length /* = 0 */) {
1221     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint;uint;uint", tuple(target, cast(Handle)srcData.handle, usage, srcOffset, length));
1222   }
1223   void bufferData()(uint target, scope ref ArrayBufferView srcData, uint usage, uint srcOffset) {
1224     Serialize_Object_VarArgCall!void(this.handle, "bufferData", "uint;Handle;uint;uint", tuple(target, cast(Handle)srcData.handle, usage, srcOffset));
1225   }
1226   void bufferSubData()(uint target, int dstByteOffset, scope ref ArrayBufferView srcData, uint srcOffset, uint length /* = 0 */) {
1227     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle;uint;uint", tuple(target, dstByteOffset, cast(Handle)srcData.handle, srcOffset, length));
1228   }
1229   void bufferSubData()(uint target, int dstByteOffset, scope ref ArrayBufferView srcData, uint srcOffset) {
1230     Serialize_Object_VarArgCall!void(this.handle, "bufferSubData", "uint;int;Handle;uint", tuple(target, dstByteOffset, cast(Handle)srcData.handle, srcOffset));
1231   }
1232   void copyBufferSubData()(uint readTarget, uint writeTarget, int readOffset, int writeOffset, int size) {
1233     Serialize_Object_VarArgCall!void(this.handle, "copyBufferSubData", "uint;uint;int;int;int", tuple(readTarget, writeTarget, readOffset, writeOffset, size));
1234   }
1235   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData, uint dstOffset /* = 0 */, uint length /* = 0 */) {
1236     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle;uint;uint", tuple(target, srcByteOffset, cast(Handle)dstData.handle, dstOffset, length));
1237   }
1238   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData, uint dstOffset /* = 0 */) {
1239     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle;uint", tuple(target, srcByteOffset, cast(Handle)dstData.handle, dstOffset));
1240   }
1241   void getBufferSubData()(uint target, int srcByteOffset, scope ref ArrayBufferView dstData) {
1242     Serialize_Object_VarArgCall!void(this.handle, "getBufferSubData", "uint;int;Handle", tuple(target, srcByteOffset, cast(Handle)dstData.handle));
1243   }
1244   void blitFramebuffer()(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) {
1245     Serialize_Object_VarArgCall!void(this.handle, "blitFramebuffer", "int;int;int;int;int;int;int;int;uint;uint", tuple(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
1246   }
1247   void framebufferTextureLayer(T2)(uint target, uint attachment, scope auto ref Optional!(T2) texture, int level, int layer) if (isTOrPointer!(T2, WebGLTexture)) {
1248     Serialize_Object_VarArgCall!void(this.handle, "framebufferTextureLayer", "uint;uint;Optional!Handle;int;int", tuple(target, attachment, !texture.empty, cast(Handle)texture.front.handle, level, layer));
1249   }
1250   void invalidateFramebuffer()(uint target, scope ref Sequence!(uint) attachments) {
1251     Serialize_Object_VarArgCall!void(this.handle, "invalidateFramebuffer", "uint;Handle", tuple(target, cast(Handle)attachments.handle));
1252   }
1253   void invalidateSubFramebuffer()(uint target, scope ref Sequence!(uint) attachments, int x, int y, int width, int height) {
1254     Serialize_Object_VarArgCall!void(this.handle, "invalidateSubFramebuffer", "uint;Handle;int;int;int;int", tuple(target, cast(Handle)attachments.handle, x, y, width, height));
1255   }
1256   void readBuffer()(uint src) {
1257     Object_Call_uint__void(this.handle, "readBuffer", src);
1258   }
1259   auto getInternalformatParameter()(uint target, uint internalformat, uint pname) {
1260     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getInternalformatParameter", "uint;uint;uint", tuple(target, internalformat, pname)));
1261   }
1262   void renderbufferStorageMultisample()(uint target, int samples, uint internalformat, int width, int height) {
1263     Serialize_Object_VarArgCall!void(this.handle, "renderbufferStorageMultisample", "uint;int;uint;int;int", tuple(target, samples, internalformat, width, height));
1264   }
1265   void texStorage2D()(uint target, int levels, uint internalformat, int width, int height) {
1266     Serialize_Object_VarArgCall!void(this.handle, "texStorage2D", "uint;int;uint;int;int", tuple(target, levels, internalformat, width, height));
1267   }
1268   void texStorage3D()(uint target, int levels, uint internalformat, int width, int height, int depth) {
1269     Serialize_Object_VarArgCall!void(this.handle, "texStorage3D", "uint;int;uint;int;int;int", tuple(target, levels, internalformat, width, height, depth));
1270   }
1271   void texImage2D(T8)(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope auto ref Optional!(T8) pixels) if (isTOrPointer!(T8, ArrayBufferView)) {
1272     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, internalformat, width, height, border, format, type, !pixels.empty, cast(Handle)pixels.front.handle));
1273   }
1274   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLCanvasElement source) {
1275     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
1276   }
1277   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLImageElement source) {
1278     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
1279   }
1280   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref HTMLVideoElement source) {
1281     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source._parent));
1282   }
1283   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref ImageBitmap source) {
1284     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source.handle));
1285   }
1286   void texImage2D()(uint target, int level, int internalformat, uint format, uint type, scope ref ImageData source) {
1287     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;uint;uint;Handle", tuple(target, level, internalformat, format, type, cast(Handle)source.handle));
1288   }
1289   void texSubImage2D(T8)(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope auto ref Optional!(T8) pixels) if (isTOrPointer!(T8, ArrayBufferView)) {
1290     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, !pixels.empty, cast(Handle)pixels.front.handle));
1291   }
1292   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLCanvasElement source) {
1293     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
1294   }
1295   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLImageElement source) {
1296     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
1297   }
1298   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref HTMLVideoElement source) {
1299     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source._parent));
1300   }
1301   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref ImageBitmap source) {
1302     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source.handle));
1303   }
1304   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, uint format, uint type, scope ref ImageData source) {
1305     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, format, type, cast(Handle)source.handle));
1306   }
1307   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, int pboOffset) {
1308     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;int", tuple(target, level, internalformat, width, height, border, format, type, pboOffset));
1309   }
1310   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLCanvasElement source) {
1311     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
1312   }
1313   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLImageElement source) {
1314     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
1315   }
1316   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref HTMLVideoElement source) {
1317     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source._parent));
1318   }
1319   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ImageBitmap source) {
1320     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source.handle));
1321   }
1322   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ImageData source) {
1323     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)source.handle));
1324   }
1325   void texImage2D()(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
1326     Serialize_Object_VarArgCall!void(this.handle, "texImage2D", "uint;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, internalformat, width, height, border, format, type, cast(Handle)srcData.handle, srcOffset));
1327   }
1328   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, int pboOffset) {
1329     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;int", tuple(target, level, internalformat, width, height, depth, border, format, type, pboOffset));
1330   }
1331   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLCanvasElement source) {
1332     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
1333   }
1334   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLImageElement source) {
1335     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
1336   }
1337   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref HTMLVideoElement source) {
1338     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source._parent));
1339   }
1340   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ImageBitmap source) {
1341     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source.handle));
1342   }
1343   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ImageData source) {
1344     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)source.handle));
1345   }
1346   void texImage3D(T9)(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope auto ref Optional!(T9) srcData) if (isTOrPointer!(T9, ArrayBufferView)) {
1347     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, internalformat, width, height, depth, border, format, type, !srcData.empty, cast(Handle)srcData.front.handle));
1348   }
1349   void texImage3D()(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
1350     Serialize_Object_VarArgCall!void(this.handle, "texImage3D", "uint;int;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, internalformat, width, height, depth, border, format, type, cast(Handle)srcData.handle, srcOffset));
1351   }
1352   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, int pboOffset) {
1353     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;int", tuple(target, level, xoffset, yoffset, width, height, format, type, pboOffset));
1354   }
1355   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLCanvasElement source) {
1356     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
1357   }
1358   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLImageElement source) {
1359     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
1360   }
1361   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref HTMLVideoElement source) {
1362     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source._parent));
1363   }
1364   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ImageBitmap source) {
1365     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source.handle));
1366   }
1367   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ImageData source) {
1368     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)source.handle));
1369   }
1370   void texSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, scope ref ArrayBufferView srcData, uint srcOffset) {
1371     Serialize_Object_VarArgCall!void(this.handle, "texSubImage2D", "uint;int;int;int;int;int;uint;uint;Handle;uint", tuple(target, level, xoffset, yoffset, width, height, format, type, cast(Handle)srcData.handle, srcOffset));
1372   }
1373   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, int pboOffset) {
1374     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;int", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pboOffset));
1375   }
1376   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLCanvasElement source) {
1377     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
1378   }
1379   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLImageElement source) {
1380     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
1381   }
1382   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref HTMLVideoElement source) {
1383     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source._parent));
1384   }
1385   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref ImageBitmap source) {
1386     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source.handle));
1387   }
1388   void texSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope ref ImageData source) {
1389     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, cast(Handle)source.handle));
1390   }
1391   void texSubImage3D(T10)(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope auto ref Optional!(T10) srcData, uint srcOffset /* = 0 */) if (isTOrPointer!(T10, ArrayBufferView)) {
1392     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Optional!Handle;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, !srcData.empty, cast(Handle)srcData.front.handle, srcOffset));
1393   }
1394   void texSubImage3D(T10)(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, scope auto ref Optional!(T10) srcData) if (isTOrPointer!(T10, ArrayBufferView)) {
1395     Serialize_Object_VarArgCall!void(this.handle, "texSubImage3D", "uint;int;int;int;int;int;int;int;uint;uint;Optional!Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, !srcData.empty, cast(Handle)srcData.front.handle));
1396   }
1397   void copyTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) {
1398     Serialize_Object_VarArgCall!void(this.handle, "copyTexSubImage3D", "uint;int;int;int;int;int;int;int;int", tuple(target, level, xoffset, yoffset, zoffset, x, y, width, height));
1399   }
1400   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, int offset) {
1401     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;int;int", tuple(target, level, internalformat, width, height, border, imageSize, offset));
1402   }
1403   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
1404     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle;uint;uint", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
1405   }
1406   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
1407     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle;uint", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle, srcOffset));
1408   }
1409   void compressedTexImage2D()(uint target, int level, uint internalformat, int width, int height, int border, scope ref ArrayBufferView srcData) {
1410     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage2D", "uint;int;uint;int;int;int;Handle", tuple(target, level, internalformat, width, height, border, cast(Handle)srcData.handle));
1411   }
1412   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, int offset) {
1413     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;int;int", tuple(target, level, internalformat, width, height, depth, border, imageSize, offset));
1414   }
1415   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
1416     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle;uint;uint", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
1417   }
1418   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
1419     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle;uint", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle, srcOffset));
1420   }
1421   void compressedTexImage3D()(uint target, int level, uint internalformat, int width, int height, int depth, int border, scope ref ArrayBufferView srcData) {
1422     Serialize_Object_VarArgCall!void(this.handle, "compressedTexImage3D", "uint;int;uint;int;int;int;int;Handle", tuple(target, level, internalformat, width, height, depth, border, cast(Handle)srcData.handle));
1423   }
1424   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, int offset) {
1425     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;int;int", tuple(target, level, xoffset, yoffset, width, height, format, imageSize, offset));
1426   }
1427   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
1428     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle;uint;uint", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
1429   }
1430   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
1431     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle;uint", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle, srcOffset));
1432   }
1433   void compressedTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, scope ref ArrayBufferView srcData) {
1434     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage2D", "uint;int;int;int;int;int;uint;Handle", tuple(target, level, xoffset, yoffset, width, height, format, cast(Handle)srcData.handle));
1435   }
1436   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, int offset) {
1437     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;int;int", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset));
1438   }
1439   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */, uint srcLengthOverride /* = 0 */) {
1440     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle;uint;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle, srcOffset, srcLengthOverride));
1441   }
1442   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData, uint srcOffset /* = 0 */) {
1443     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle;uint", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle, srcOffset));
1444   }
1445   void compressedTexSubImage3D()(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, scope ref ArrayBufferView srcData) {
1446     Serialize_Object_VarArgCall!void(this.handle, "compressedTexSubImage3D", "uint;int;int;int;int;int;int;int;uint;Handle", tuple(target, level, xoffset, yoffset, zoffset, width, height, depth, format, cast(Handle)srcData.handle));
1447   }
1448   int getFragDataLocation()(scope ref WebGLProgram program, string name) {
1449     return Serialize_Object_VarArgCall!int(this.handle, "getFragDataLocation", "Handle;string", tuple(cast(Handle)program.handle, name));
1450   }
1451   void uniform1ui(T0)(scope auto ref Optional!(T0) location, uint v0) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1452     Serialize_Object_VarArgCall!void(this.handle, "uniform1ui", "Optional!Handle;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0));
1453   }
1454   void uniform2ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1455     Serialize_Object_VarArgCall!void(this.handle, "uniform2ui", "Optional!Handle;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1));
1456   }
1457   void uniform3ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1, uint v2) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1458     Serialize_Object_VarArgCall!void(this.handle, "uniform3ui", "Optional!Handle;uint;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1, v2));
1459   }
1460   void uniform4ui(T0)(scope auto ref Optional!(T0) location, uint v0, uint v1, uint v2, uint v3) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1461     Serialize_Object_VarArgCall!void(this.handle, "uniform4ui", "Optional!Handle;uint;uint;uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, v0, v1, v2, v3));
1462   }
1463   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1464     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1465   }
1466   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1467     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1468   }
1469   void uniform1fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1470     Serialize_Object_VarArgCall!void(this.handle, "uniform1fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1471   }
1472   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1473     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1474   }
1475   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1476     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1477   }
1478   void uniform2fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1479     Serialize_Object_VarArgCall!void(this.handle, "uniform2fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1480   }
1481   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1482     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1483   }
1484   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1485     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1486   }
1487   void uniform3fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1488     Serialize_Object_VarArgCall!void(this.handle, "uniform3fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1489   }
1490   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1491     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1492   }
1493   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1494     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1495   }
1496   void uniform4fv(T0)(scope auto ref Optional!(T0) location, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1497     Serialize_Object_VarArgCall!void(this.handle, "uniform4fv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1498   }
1499   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1500     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1501   }
1502   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1503     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1504   }
1505   void uniform1iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1506     Serialize_Object_VarArgCall!void(this.handle, "uniform1iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1507   }
1508   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1509     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1510   }
1511   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1512     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1513   }
1514   void uniform2iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1515     Serialize_Object_VarArgCall!void(this.handle, "uniform2iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1516   }
1517   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1518     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1519   }
1520   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1521     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1522   }
1523   void uniform3iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1524     Serialize_Object_VarArgCall!void(this.handle, "uniform3iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1525   }
1526   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1527     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1528   }
1529   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1530     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1531   }
1532   void uniform4iv(T0)(scope auto ref Optional!(T0) location, scope ref Int32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1533     Serialize_Object_VarArgCall!void(this.handle, "uniform4iv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1534   }
1535   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1536     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1537   }
1538   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1539     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1540   }
1541   void uniform1uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1542     Serialize_Object_VarArgCall!void(this.handle, "uniform1uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1543   }
1544   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1545     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1546   }
1547   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1548     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1549   }
1550   void uniform2uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1551     Serialize_Object_VarArgCall!void(this.handle, "uniform2uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1552   }
1553   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1554     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1555   }
1556   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1557     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1558   }
1559   void uniform3uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1560     Serialize_Object_VarArgCall!void(this.handle, "uniform3uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1561   }
1562   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1563     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1564   }
1565   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1566     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1567   }
1568   void uniform4uiv(T0)(scope auto ref Optional!(T0) location, scope ref Uint32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1569     Serialize_Object_VarArgCall!void(this.handle, "uniform4uiv", "Optional!Handle;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1570   }
1571   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1572     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1573   }
1574   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1575     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1576   }
1577   void uniformMatrix2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1578     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1579   }
1580   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1581     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1582   }
1583   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1584     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1585   }
1586   void uniformMatrix3x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1587     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1588   }
1589   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1590     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1591   }
1592   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1593     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1594   }
1595   void uniformMatrix4x2fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1596     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x2fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1597   }
1598   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1599     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1600   }
1601   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1602     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1603   }
1604   void uniformMatrix2x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1605     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1606   }
1607   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1608     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1609   }
1610   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1611     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1612   }
1613   void uniformMatrix3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1614     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1615   }
1616   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1617     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1618   }
1619   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1620     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1621   }
1622   void uniformMatrix4x3fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1623     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4x3fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1624   }
1625   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1626     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1627   }
1628   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1629     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1630   }
1631   void uniformMatrix2x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1632     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix2x4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1633   }
1634   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1635     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1636   }
1637   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1638     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1639   }
1640   void uniformMatrix3x4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1641     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix3x4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1642   }
1643   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */, uint srcLength /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1644     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint;uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset, srcLength));
1645   }
1646   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data, uint srcOffset /* = 0 */) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1647     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle);uint", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data)), srcOffset));
1648   }
1649   void uniformMatrix4fv(T0)(scope auto ref Optional!(T0) location, bool transpose, scope ref Float32List data) if (isTOrPointer!(T0, WebGLUniformLocation)) {
1650     Serialize_Object_VarArgCall!void(this.handle, "uniformMatrix4fv", "Optional!Handle;bool;SumType!(Handle,Handle)", tuple(!location.empty, cast(Handle)location.front.handle, transpose, libwasm.sumtype.match!(((ref data.Types[0] v) => 0),((ref data.Types[1] v) => 1))(data),tuple(libwasm.sumtype.match!(((ref data.Types[0] v) => cast(Handle)v.handle),((ref data.Types[1] v) => Handle.init))(data),libwasm.sumtype.match!(((ref data.Types[0] v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle))(data))));
1651   }
1652   void vertexAttribI4i()(uint index, int x, int y, int z, int w) {
1653     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4i", "uint;int;int;int;int", tuple(index, x, y, z, w));
1654   }
1655   void vertexAttribI4iv()(uint index, scope ref Int32List values) {
1656     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4iv", "uint;SumType!(Handle,Handle)", tuple(index, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
1657   }
1658   void vertexAttribI4ui()(uint index, uint x, uint y, uint z, uint w) {
1659     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4ui", "uint;uint;uint;uint;uint", tuple(index, x, y, z, w));
1660   }
1661   void vertexAttribI4uiv()(uint index, scope ref Uint32List values) {
1662     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribI4uiv", "uint;SumType!(Handle,Handle)", tuple(index, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
1663   }
1664   void vertexAttribIPointer()(uint index, int size, uint type, int stride, int offset) {
1665     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribIPointer", "uint;int;uint;int;int", tuple(index, size, type, stride, offset));
1666   }
1667   void vertexAttribDivisor()(uint index, uint divisor) {
1668     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribDivisor", "uint;uint", tuple(index, divisor));
1669   }
1670   void drawArraysInstanced()(uint mode, int first, int count, int instanceCount) {
1671     Serialize_Object_VarArgCall!void(this.handle, "drawArraysInstanced", "uint;int;int;int", tuple(mode, first, count, instanceCount));
1672   }
1673   void drawElementsInstanced()(uint mode, int count, uint type, int offset, int instanceCount) {
1674     Serialize_Object_VarArgCall!void(this.handle, "drawElementsInstanced", "uint;int;uint;int;int", tuple(mode, count, type, offset, instanceCount));
1675   }
1676   void drawRangeElements()(uint mode, uint start, uint end, int count, uint type, int offset) {
1677     Serialize_Object_VarArgCall!void(this.handle, "drawRangeElements", "uint;uint;uint;int;uint;int", tuple(mode, start, end, count, type, offset));
1678   }
1679   void readPixels(T6)(int x, int y, int width, int height, uint format, uint type, scope auto ref Optional!(T6) dstData) if (isTOrPointer!(T6, ArrayBufferView)) {
1680     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;Optional!Handle", tuple(x, y, width, height, format, type, !dstData.empty, cast(Handle)dstData.front.handle));
1681   }
1682   void readPixels()(int x, int y, int width, int height, uint format, uint type, int offset) {
1683     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;int", tuple(x, y, width, height, format, type, offset));
1684   }
1685   void readPixels()(int x, int y, int width, int height, uint format, uint type, scope ref ArrayBufferView dstData, uint dstOffset) {
1686     Serialize_Object_VarArgCall!void(this.handle, "readPixels", "int;int;int;int;uint;uint;Handle;uint", tuple(x, y, width, height, format, type, cast(Handle)dstData.handle, dstOffset));
1687   }
1688   void drawBuffers()(scope ref Sequence!(uint) buffers) {
1689     Object_Call_Handle__void(this.handle, "drawBuffers", buffers.handle);
1690   }
1691   void clearBufferfv()(uint buffer, int drawbuffer, scope ref Float32List values, uint srcOffset /* = 0 */) {
1692     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
1693   }
1694   void clearBufferfv()(uint buffer, int drawbuffer, scope ref Float32List values) {
1695     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
1696   }
1697   void clearBufferiv()(uint buffer, int drawbuffer, scope ref Int32List values, uint srcOffset /* = 0 */) {
1698     Serialize_Object_VarArgCall!void(this.handle, "clearBufferiv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
1699   }
1700   void clearBufferiv()(uint buffer, int drawbuffer, scope ref Int32List values) {
1701     Serialize_Object_VarArgCall!void(this.handle, "clearBufferiv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
1702   }
1703   void clearBufferuiv()(uint buffer, int drawbuffer, scope ref Uint32List values, uint srcOffset /* = 0 */) {
1704     Serialize_Object_VarArgCall!void(this.handle, "clearBufferuiv", "uint;int;SumType!(Handle,Handle);uint", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values)), srcOffset));
1705   }
1706   void clearBufferuiv()(uint buffer, int drawbuffer, scope ref Uint32List values) {
1707     Serialize_Object_VarArgCall!void(this.handle, "clearBufferuiv", "uint;int;SumType!(Handle,Handle)", tuple(buffer, drawbuffer, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
1708   }
1709   void clearBufferfi()(uint buffer, int drawbuffer, float depth, int stencil) {
1710     Serialize_Object_VarArgCall!void(this.handle, "clearBufferfi", "uint;int;float;int", tuple(buffer, drawbuffer, depth, stencil));
1711   }
1712   auto createQuery()() {
1713     return recastOpt!(WebGLQuery)(Object_Getter__OptionalHandle(this.handle, "createQuery"));
1714   }
1715   void deleteQuery(T0)(scope auto ref Optional!(T0) query) if (isTOrPointer!(T0, WebGLQuery)) {
1716     Serialize_Object_VarArgCall!void(this.handle, "deleteQuery", "Optional!Handle", tuple(!query.empty, cast(Handle)query.front.handle));
1717   }
1718   bool isQuery(T0)(scope auto ref Optional!(T0) query) if (isTOrPointer!(T0, WebGLQuery)) {
1719     return Serialize_Object_VarArgCall!bool(this.handle, "isQuery", "Optional!Handle", tuple(!query.empty, cast(Handle)query.front.handle));
1720   }
1721   void beginQuery()(uint target, scope ref WebGLQuery query) {
1722     Serialize_Object_VarArgCall!void(this.handle, "beginQuery", "uint;Handle", tuple(target, cast(Handle)query.handle));
1723   }
1724   void endQuery()(uint target) {
1725     Object_Call_uint__void(this.handle, "endQuery", target);
1726   }
1727   auto getQuery()(uint target, uint pname) {
1728     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getQuery", "uint;uint", tuple(target, pname)));
1729   }
1730   auto getQueryParameter()(scope ref WebGLQuery query, uint pname) {
1731     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getQueryParameter", "Handle;uint", tuple(cast(Handle)query.handle, pname)));
1732   }
1733   auto createSampler()() {
1734     return recastOpt!(WebGLSampler)(Object_Getter__OptionalHandle(this.handle, "createSampler"));
1735   }
1736   void deleteSampler(T0)(scope auto ref Optional!(T0) sampler) if (isTOrPointer!(T0, WebGLSampler)) {
1737     Serialize_Object_VarArgCall!void(this.handle, "deleteSampler", "Optional!Handle", tuple(!sampler.empty, cast(Handle)sampler.front.handle));
1738   }
1739   bool isSampler(T0)(scope auto ref Optional!(T0) sampler) if (isTOrPointer!(T0, WebGLSampler)) {
1740     return Serialize_Object_VarArgCall!bool(this.handle, "isSampler", "Optional!Handle", tuple(!sampler.empty, cast(Handle)sampler.front.handle));
1741   }
1742   void bindSampler(T1)(uint unit, scope auto ref Optional!(T1) sampler) if (isTOrPointer!(T1, WebGLSampler)) {
1743     Serialize_Object_VarArgCall!void(this.handle, "bindSampler", "uint;Optional!Handle", tuple(unit, !sampler.empty, cast(Handle)sampler.front.handle));
1744   }
1745   void samplerParameteri()(scope ref WebGLSampler sampler, uint pname, int param) {
1746     Serialize_Object_VarArgCall!void(this.handle, "samplerParameteri", "Handle;uint;int", tuple(cast(Handle)sampler.handle, pname, param));
1747   }
1748   void samplerParameterf()(scope ref WebGLSampler sampler, uint pname, float param) {
1749     Serialize_Object_VarArgCall!void(this.handle, "samplerParameterf", "Handle;uint;float", tuple(cast(Handle)sampler.handle, pname, param));
1750   }
1751   auto getSamplerParameter()(scope ref WebGLSampler sampler, uint pname) {
1752     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getSamplerParameter", "Handle;uint", tuple(cast(Handle)sampler.handle, pname)));
1753   }
1754   auto fenceSync()(uint condition, uint flags) {
1755     return recastOpt!(WebGLSync)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "fenceSync", "uint;uint", tuple(condition, flags)));
1756   }
1757   bool isSync(T0)(scope auto ref Optional!(T0) sync) if (isTOrPointer!(T0, WebGLSync)) {
1758     return Serialize_Object_VarArgCall!bool(this.handle, "isSync", "Optional!Handle", tuple(!sync.empty, cast(Handle)sync.front.handle));
1759   }
1760   void deleteSync(T0)(scope auto ref Optional!(T0) sync) if (isTOrPointer!(T0, WebGLSync)) {
1761     Serialize_Object_VarArgCall!void(this.handle, "deleteSync", "Optional!Handle", tuple(!sync.empty, cast(Handle)sync.front.handle));
1762   }
1763   uint clientWaitSync()(scope ref WebGLSync sync, uint flags, uint timeout) {
1764     return Serialize_Object_VarArgCall!uint(this.handle, "clientWaitSync", "Handle;uint;uint", tuple(cast(Handle)sync.handle, flags, timeout));
1765   }
1766   void waitSync()(scope ref WebGLSync sync, uint flags, int timeout) {
1767     Serialize_Object_VarArgCall!void(this.handle, "waitSync", "Handle;uint;int", tuple(cast(Handle)sync.handle, flags, timeout));
1768   }
1769   auto getSyncParameter()(scope ref WebGLSync sync, uint pname) {
1770     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getSyncParameter", "Handle;uint", tuple(cast(Handle)sync.handle, pname)));
1771   }
1772   auto createTransformFeedback()() {
1773     return recastOpt!(WebGLTransformFeedback)(Object_Getter__OptionalHandle(this.handle, "createTransformFeedback"));
1774   }
1775   void deleteTransformFeedback(T0)(scope auto ref Optional!(T0) tf) if (isTOrPointer!(T0, WebGLTransformFeedback)) {
1776     Serialize_Object_VarArgCall!void(this.handle, "deleteTransformFeedback", "Optional!Handle", tuple(!tf.empty, cast(Handle)tf.front.handle));
1777   }
1778   bool isTransformFeedback(T0)(scope auto ref Optional!(T0) tf) if (isTOrPointer!(T0, WebGLTransformFeedback)) {
1779     return Serialize_Object_VarArgCall!bool(this.handle, "isTransformFeedback", "Optional!Handle", tuple(!tf.empty, cast(Handle)tf.front.handle));
1780   }
1781   void bindTransformFeedback(T1)(uint target, scope auto ref Optional!(T1) tf) if (isTOrPointer!(T1, WebGLTransformFeedback)) {
1782     Serialize_Object_VarArgCall!void(this.handle, "bindTransformFeedback", "uint;Optional!Handle", tuple(target, !tf.empty, cast(Handle)tf.front.handle));
1783   }
1784   void beginTransformFeedback()(uint primitiveMode) {
1785     Object_Call_uint__void(this.handle, "beginTransformFeedback", primitiveMode);
1786   }
1787   void endTransformFeedback()() {
1788     Object_Call__void(this.handle, "endTransformFeedback");
1789   }
1790   void transformFeedbackVaryings()(scope ref WebGLProgram program, scope ref Sequence!(string) varyings, uint bufferMode) {
1791     Serialize_Object_VarArgCall!void(this.handle, "transformFeedbackVaryings", "Handle;Handle;uint", tuple(cast(Handle)program.handle, cast(Handle)varyings.handle, bufferMode));
1792   }
1793   auto getTransformFeedbackVarying()(scope ref WebGLProgram program, uint index) {
1794     return recastOpt!(WebGLActiveInfo)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getTransformFeedbackVarying", "Handle;uint", tuple(cast(Handle)program.handle, index)));
1795   }
1796   void pauseTransformFeedback()() {
1797     Object_Call__void(this.handle, "pauseTransformFeedback");
1798   }
1799   void resumeTransformFeedback()() {
1800     Object_Call__void(this.handle, "resumeTransformFeedback");
1801   }
1802   void bindBufferBase(T2)(uint target, uint index, scope auto ref Optional!(T2) buffer) if (isTOrPointer!(T2, WebGLBuffer)) {
1803     Serialize_Object_VarArgCall!void(this.handle, "bindBufferBase", "uint;uint;Optional!Handle", tuple(target, index, !buffer.empty, cast(Handle)buffer.front.handle));
1804   }
1805   void bindBufferRange(T2)(uint target, uint index, scope auto ref Optional!(T2) buffer, int offset, int size) if (isTOrPointer!(T2, WebGLBuffer)) {
1806     Serialize_Object_VarArgCall!void(this.handle, "bindBufferRange", "uint;uint;Optional!Handle;int;int", tuple(target, index, !buffer.empty, cast(Handle)buffer.front.handle, offset, size));
1807   }
1808   auto getIndexedParameter()(uint target, uint index) {
1809     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getIndexedParameter", "uint;uint", tuple(target, index)));
1810   }
1811   auto getUniformIndices()(scope ref WebGLProgram program, scope ref Sequence!(string) uniformNames) {
1812     return recastOpt!(Sequence!(uint))(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getUniformIndices", "Handle;Handle", tuple(cast(Handle)program.handle, cast(Handle)uniformNames.handle)));
1813   }
1814   auto getActiveUniforms()(scope ref WebGLProgram program, scope ref Sequence!(uint) uniformIndices, uint pname) {
1815     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getActiveUniforms", "Handle;Handle;uint", tuple(cast(Handle)program.handle, cast(Handle)uniformIndices.handle, pname)));
1816   }
1817   uint getUniformBlockIndex()(scope ref WebGLProgram program, string uniformBlockName) {
1818     return Serialize_Object_VarArgCall!uint(this.handle, "getUniformBlockIndex", "Handle;string", tuple(cast(Handle)program.handle, uniformBlockName));
1819   }
1820   auto getActiveUniformBlockParameter()(scope ref WebGLProgram program, uint uniformBlockIndex, uint pname) {
1821     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getActiveUniformBlockParameter", "Handle;uint;uint", tuple(cast(Handle)program.handle, uniformBlockIndex, pname)));
1822   }
1823   Optional!(string) getActiveUniformBlockName()(scope ref WebGLProgram program, uint uniformBlockIndex) {
1824     return Serialize_Object_VarArgCall!(Optional!string)(this.handle, "getActiveUniformBlockName", "Handle;uint", tuple(cast(Handle)program.handle, uniformBlockIndex));
1825   }
1826   void uniformBlockBinding()(scope ref WebGLProgram program, uint uniformBlockIndex, uint uniformBlockBinding) {
1827     Serialize_Object_VarArgCall!void(this.handle, "uniformBlockBinding", "Handle;uint;uint", tuple(cast(Handle)program.handle, uniformBlockIndex, uniformBlockBinding));
1828   }
1829   auto createVertexArray()() {
1830     return recastOpt!(WebGLVertexArrayObject)(Object_Getter__OptionalHandle(this.handle, "createVertexArray"));
1831   }
1832   void deleteVertexArray(T0)(scope auto ref Optional!(T0) vertexArray) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
1833     Serialize_Object_VarArgCall!void(this.handle, "deleteVertexArray", "Optional!Handle", tuple(!vertexArray.empty, cast(Handle)vertexArray.front.handle));
1834   }
1835   bool isVertexArray(T0)(scope auto ref Optional!(T0) vertexArray) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
1836     return Serialize_Object_VarArgCall!bool(this.handle, "isVertexArray", "Optional!Handle", tuple(!vertexArray.empty, cast(Handle)vertexArray.front.handle));
1837   }
1838   void bindVertexArray(T0)(scope auto ref Optional!(T0) array) if (isTOrPointer!(T0, WebGLVertexArrayObject)) {
1839     Serialize_Object_VarArgCall!void(this.handle, "bindVertexArray", "Optional!Handle", tuple(!array.empty, cast(Handle)array.front.handle));
1840   }
1841   enum uint DEPTH_BUFFER_BIT = 0x00000100;
1842   enum uint STENCIL_BUFFER_BIT = 0x00000400;
1843   enum uint COLOR_BUFFER_BIT = 0x00004000;
1844   enum uint POINTS = 0x0000;
1845   enum uint LINES = 0x0001;
1846   enum uint LINE_LOOP = 0x0002;
1847   enum uint LINE_STRIP = 0x0003;
1848   enum uint TRIANGLES = 0x0004;
1849   enum uint TRIANGLE_STRIP = 0x0005;
1850   enum uint TRIANGLE_FAN = 0x0006;
1851   enum uint ZERO = 0;
1852   enum uint ONE = 1;
1853   enum uint SRC_COLOR = 0x0300;
1854   enum uint ONE_MINUS_SRC_COLOR = 0x0301;
1855   enum uint SRC_ALPHA = 0x0302;
1856   enum uint ONE_MINUS_SRC_ALPHA = 0x0303;
1857   enum uint DST_ALPHA = 0x0304;
1858   enum uint ONE_MINUS_DST_ALPHA = 0x0305;
1859   enum uint DST_COLOR = 0x0306;
1860   enum uint ONE_MINUS_DST_COLOR = 0x0307;
1861   enum uint SRC_ALPHA_SATURATE = 0x0308;
1862   enum uint FUNC_ADD = 0x8006;
1863   enum uint BLEND_EQUATION = 0x8009;
1864   enum uint BLEND_EQUATION_RGB = 0x8009;
1865   enum uint BLEND_EQUATION_ALPHA = 0x883D;
1866   enum uint FUNC_SUBTRACT = 0x800A;
1867   enum uint FUNC_REVERSE_SUBTRACT = 0x800B;
1868   enum uint BLEND_DST_RGB = 0x80C8;
1869   enum uint BLEND_SRC_RGB = 0x80C9;
1870   enum uint BLEND_DST_ALPHA = 0x80CA;
1871   enum uint BLEND_SRC_ALPHA = 0x80CB;
1872   enum uint CONSTANT_COLOR = 0x8001;
1873   enum uint ONE_MINUS_CONSTANT_COLOR = 0x8002;
1874   enum uint CONSTANT_ALPHA = 0x8003;
1875   enum uint ONE_MINUS_CONSTANT_ALPHA = 0x8004;
1876   enum uint BLEND_COLOR = 0x8005;
1877   enum uint ARRAY_BUFFER = 0x8892;
1878   enum uint ELEMENT_ARRAY_BUFFER = 0x8893;
1879   enum uint ARRAY_BUFFER_BINDING = 0x8894;
1880   enum uint ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
1881   enum uint STREAM_DRAW = 0x88E0;
1882   enum uint STATIC_DRAW = 0x88E4;
1883   enum uint DYNAMIC_DRAW = 0x88E8;
1884   enum uint BUFFER_SIZE = 0x8764;
1885   enum uint BUFFER_USAGE = 0x8765;
1886   enum uint CURRENT_VERTEX_ATTRIB = 0x8626;
1887   enum uint FRONT = 0x0404;
1888   enum uint BACK = 0x0405;
1889   enum uint FRONT_AND_BACK = 0x0408;
1890   enum uint CULL_FACE = 0x0B44;
1891   enum uint BLEND = 0x0BE2;
1892   enum uint DITHER = 0x0BD0;
1893   enum uint STENCIL_TEST = 0x0B90;
1894   enum uint DEPTH_TEST = 0x0B71;
1895   enum uint SCISSOR_TEST = 0x0C11;
1896   enum uint POLYGON_OFFSET_FILL = 0x8037;
1897   enum uint SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
1898   enum uint SAMPLE_COVERAGE = 0x80A0;
1899   enum uint NO_ERROR = 0;
1900   enum uint INVALID_ENUM = 0x0500;
1901   enum uint INVALID_VALUE = 0x0501;
1902   enum uint INVALID_OPERATION = 0x0502;
1903   enum uint OUT_OF_MEMORY = 0x0505;
1904   enum uint CW = 0x0900;
1905   enum uint CCW = 0x0901;
1906   enum uint LINE_WIDTH = 0x0B21;
1907   enum uint ALIASED_POINT_SIZE_RANGE = 0x846D;
1908   enum uint ALIASED_LINE_WIDTH_RANGE = 0x846E;
1909   enum uint CULL_FACE_MODE = 0x0B45;
1910   enum uint FRONT_FACE = 0x0B46;
1911   enum uint DEPTH_RANGE = 0x0B70;
1912   enum uint DEPTH_WRITEMASK = 0x0B72;
1913   enum uint DEPTH_CLEAR_VALUE = 0x0B73;
1914   enum uint DEPTH_FUNC = 0x0B74;
1915   enum uint STENCIL_CLEAR_VALUE = 0x0B91;
1916   enum uint STENCIL_FUNC = 0x0B92;
1917   enum uint STENCIL_FAIL = 0x0B94;
1918   enum uint STENCIL_PASS_DEPTH_FAIL = 0x0B95;
1919   enum uint STENCIL_PASS_DEPTH_PASS = 0x0B96;
1920   enum uint STENCIL_REF = 0x0B97;
1921   enum uint STENCIL_VALUE_MASK = 0x0B93;
1922   enum uint STENCIL_WRITEMASK = 0x0B98;
1923   enum uint STENCIL_BACK_FUNC = 0x8800;
1924   enum uint STENCIL_BACK_FAIL = 0x8801;
1925   enum uint STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
1926   enum uint STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
1927   enum uint STENCIL_BACK_REF = 0x8CA3;
1928   enum uint STENCIL_BACK_VALUE_MASK = 0x8CA4;
1929   enum uint STENCIL_BACK_WRITEMASK = 0x8CA5;
1930   enum uint VIEWPORT = 0x0BA2;
1931   enum uint SCISSOR_BOX = 0x0C10;
1932   enum uint COLOR_CLEAR_VALUE = 0x0C22;
1933   enum uint COLOR_WRITEMASK = 0x0C23;
1934   enum uint UNPACK_ALIGNMENT = 0x0CF5;
1935   enum uint PACK_ALIGNMENT = 0x0D05;
1936   enum uint MAX_TEXTURE_SIZE = 0x0D33;
1937   enum uint MAX_VIEWPORT_DIMS = 0x0D3A;
1938   enum uint SUBPIXEL_BITS = 0x0D50;
1939   enum uint RED_BITS = 0x0D52;
1940   enum uint GREEN_BITS = 0x0D53;
1941   enum uint BLUE_BITS = 0x0D54;
1942   enum uint ALPHA_BITS = 0x0D55;
1943   enum uint DEPTH_BITS = 0x0D56;
1944   enum uint STENCIL_BITS = 0x0D57;
1945   enum uint POLYGON_OFFSET_UNITS = 0x2A00;
1946   enum uint POLYGON_OFFSET_FACTOR = 0x8038;
1947   enum uint TEXTURE_BINDING_2D = 0x8069;
1948   enum uint SAMPLE_BUFFERS = 0x80A8;
1949   enum uint SAMPLES = 0x80A9;
1950   enum uint SAMPLE_COVERAGE_VALUE = 0x80AA;
1951   enum uint SAMPLE_COVERAGE_INVERT = 0x80AB;
1952   enum uint COMPRESSED_TEXTURE_FORMATS = 0x86A3;
1953   enum uint DONT_CARE = 0x1100;
1954   enum uint FASTEST = 0x1101;
1955   enum uint NICEST = 0x1102;
1956   enum uint GENERATE_MIPMAP_HINT = 0x8192;
1957   enum uint BYTE = 0x1400;
1958   enum uint UNSIGNED_BYTE = 0x1401;
1959   enum uint SHORT = 0x1402;
1960   enum uint UNSIGNED_SHORT = 0x1403;
1961   enum uint INT = 0x1404;
1962   enum uint UNSIGNED_INT = 0x1405;
1963   enum uint FLOAT = 0x1406;
1964   enum uint DEPTH_COMPONENT = 0x1902;
1965   enum uint ALPHA = 0x1906;
1966   enum uint RGB = 0x1907;
1967   enum uint RGBA = 0x1908;
1968   enum uint LUMINANCE = 0x1909;
1969   enum uint LUMINANCE_ALPHA = 0x190A;
1970   enum uint UNSIGNED_SHORT_4_4_4_4 = 0x8033;
1971   enum uint UNSIGNED_SHORT_5_5_5_1 = 0x8034;
1972   enum uint UNSIGNED_SHORT_5_6_5 = 0x8363;
1973   enum uint FRAGMENT_SHADER = 0x8B30;
1974   enum uint VERTEX_SHADER = 0x8B31;
1975   enum uint MAX_VERTEX_ATTRIBS = 0x8869;
1976   enum uint MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
1977   enum uint MAX_VARYING_VECTORS = 0x8DFC;
1978   enum uint MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
1979   enum uint MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
1980   enum uint MAX_TEXTURE_IMAGE_UNITS = 0x8872;
1981   enum uint MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
1982   enum uint SHADER_TYPE = 0x8B4F;
1983   enum uint DELETE_STATUS = 0x8B80;
1984   enum uint LINK_STATUS = 0x8B82;
1985   enum uint VALIDATE_STATUS = 0x8B83;
1986   enum uint ATTACHED_SHADERS = 0x8B85;
1987   enum uint ACTIVE_UNIFORMS = 0x8B86;
1988   enum uint ACTIVE_ATTRIBUTES = 0x8B89;
1989   enum uint SHADING_LANGUAGE_VERSION = 0x8B8C;
1990   enum uint CURRENT_PROGRAM = 0x8B8D;
1991   enum uint NEVER = 0x0200;
1992   enum uint LESS = 0x0201;
1993   enum uint EQUAL = 0x0202;
1994   enum uint LEQUAL = 0x0203;
1995   enum uint GREATER = 0x0204;
1996   enum uint NOTEQUAL = 0x0205;
1997   enum uint GEQUAL = 0x0206;
1998   enum uint ALWAYS = 0x0207;
1999   enum uint KEEP = 0x1E00;
2000   enum uint REPLACE = 0x1E01;
2001   enum uint INCR = 0x1E02;
2002   enum uint DECR = 0x1E03;
2003   enum uint INVERT = 0x150A;
2004   enum uint INCR_WRAP = 0x8507;
2005   enum uint DECR_WRAP = 0x8508;
2006   enum uint VENDOR = 0x1F00;
2007   enum uint RENDERER = 0x1F01;
2008   enum uint VERSION = 0x1F02;
2009   enum uint NEAREST = 0x2600;
2010   enum uint LINEAR = 0x2601;
2011   enum uint NEAREST_MIPMAP_NEAREST = 0x2700;
2012   enum uint LINEAR_MIPMAP_NEAREST = 0x2701;
2013   enum uint NEAREST_MIPMAP_LINEAR = 0x2702;
2014   enum uint LINEAR_MIPMAP_LINEAR = 0x2703;
2015   enum uint TEXTURE_MAG_FILTER = 0x2800;
2016   enum uint TEXTURE_MIN_FILTER = 0x2801;
2017   enum uint TEXTURE_WRAP_S = 0x2802;
2018   enum uint TEXTURE_WRAP_T = 0x2803;
2019   enum uint TEXTURE_2D = 0x0DE1;
2020   enum uint TEXTURE = 0x1702;
2021   enum uint TEXTURE_CUBE_MAP = 0x8513;
2022   enum uint TEXTURE_BINDING_CUBE_MAP = 0x8514;
2023   enum uint TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
2024   enum uint TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
2025   enum uint TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
2026   enum uint TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
2027   enum uint TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
2028   enum uint TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
2029   enum uint MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
2030   enum uint TEXTURE0 = 0x84C0;
2031   enum uint TEXTURE1 = 0x84C1;
2032   enum uint TEXTURE2 = 0x84C2;
2033   enum uint TEXTURE3 = 0x84C3;
2034   enum uint TEXTURE4 = 0x84C4;
2035   enum uint TEXTURE5 = 0x84C5;
2036   enum uint TEXTURE6 = 0x84C6;
2037   enum uint TEXTURE7 = 0x84C7;
2038   enum uint TEXTURE8 = 0x84C8;
2039   enum uint TEXTURE9 = 0x84C9;
2040   enum uint TEXTURE10 = 0x84CA;
2041   enum uint TEXTURE11 = 0x84CB;
2042   enum uint TEXTURE12 = 0x84CC;
2043   enum uint TEXTURE13 = 0x84CD;
2044   enum uint TEXTURE14 = 0x84CE;
2045   enum uint TEXTURE15 = 0x84CF;
2046   enum uint TEXTURE16 = 0x84D0;
2047   enum uint TEXTURE17 = 0x84D1;
2048   enum uint TEXTURE18 = 0x84D2;
2049   enum uint TEXTURE19 = 0x84D3;
2050   enum uint TEXTURE20 = 0x84D4;
2051   enum uint TEXTURE21 = 0x84D5;
2052   enum uint TEXTURE22 = 0x84D6;
2053   enum uint TEXTURE23 = 0x84D7;
2054   enum uint TEXTURE24 = 0x84D8;
2055   enum uint TEXTURE25 = 0x84D9;
2056   enum uint TEXTURE26 = 0x84DA;
2057   enum uint TEXTURE27 = 0x84DB;
2058   enum uint TEXTURE28 = 0x84DC;
2059   enum uint TEXTURE29 = 0x84DD;
2060   enum uint TEXTURE30 = 0x84DE;
2061   enum uint TEXTURE31 = 0x84DF;
2062   enum uint ACTIVE_TEXTURE = 0x84E0;
2063   enum uint REPEAT = 0x2901;
2064   enum uint CLAMP_TO_EDGE = 0x812F;
2065   enum uint MIRRORED_REPEAT = 0x8370;
2066   enum uint FLOAT_VEC2 = 0x8B50;
2067   enum uint FLOAT_VEC3 = 0x8B51;
2068   enum uint FLOAT_VEC4 = 0x8B52;
2069   enum uint INT_VEC2 = 0x8B53;
2070   enum uint INT_VEC3 = 0x8B54;
2071   enum uint INT_VEC4 = 0x8B55;
2072   enum uint BOOL = 0x8B56;
2073   enum uint BOOL_VEC2 = 0x8B57;
2074   enum uint BOOL_VEC3 = 0x8B58;
2075   enum uint BOOL_VEC4 = 0x8B59;
2076   enum uint FLOAT_MAT2 = 0x8B5A;
2077   enum uint FLOAT_MAT3 = 0x8B5B;
2078   enum uint FLOAT_MAT4 = 0x8B5C;
2079   enum uint SAMPLER_2D = 0x8B5E;
2080   enum uint SAMPLER_CUBE = 0x8B60;
2081   enum uint VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
2082   enum uint VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
2083   enum uint VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
2084   enum uint VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
2085   enum uint VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
2086   enum uint VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
2087   enum uint VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
2088   enum uint IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A;
2089   enum uint IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
2090   enum uint COMPILE_STATUS = 0x8B81;
2091   enum uint LOW_FLOAT = 0x8DF0;
2092   enum uint MEDIUM_FLOAT = 0x8DF1;
2093   enum uint HIGH_FLOAT = 0x8DF2;
2094   enum uint LOW_INT = 0x8DF3;
2095   enum uint MEDIUM_INT = 0x8DF4;
2096   enum uint HIGH_INT = 0x8DF5;
2097   enum uint FRAMEBUFFER = 0x8D40;
2098   enum uint RENDERBUFFER = 0x8D41;
2099   enum uint RGBA4 = 0x8056;
2100   enum uint RGB5_A1 = 0x8057;
2101   enum uint RGB565 = 0x8D62;
2102   enum uint DEPTH_COMPONENT16 = 0x81A5;
2103   enum uint STENCIL_INDEX8 = 0x8D48;
2104   enum uint DEPTH_STENCIL = 0x84F9;
2105   enum uint RENDERBUFFER_WIDTH = 0x8D42;
2106   enum uint RENDERBUFFER_HEIGHT = 0x8D43;
2107   enum uint RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
2108   enum uint RENDERBUFFER_RED_SIZE = 0x8D50;
2109   enum uint RENDERBUFFER_GREEN_SIZE = 0x8D51;
2110   enum uint RENDERBUFFER_BLUE_SIZE = 0x8D52;
2111   enum uint RENDERBUFFER_ALPHA_SIZE = 0x8D53;
2112   enum uint RENDERBUFFER_DEPTH_SIZE = 0x8D54;
2113   enum uint RENDERBUFFER_STENCIL_SIZE = 0x8D55;
2114   enum uint FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
2115   enum uint FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
2116   enum uint FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
2117   enum uint FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
2118   enum uint COLOR_ATTACHMENT0 = 0x8CE0;
2119   enum uint DEPTH_ATTACHMENT = 0x8D00;
2120   enum uint STENCIL_ATTACHMENT = 0x8D20;
2121   enum uint DEPTH_STENCIL_ATTACHMENT = 0x821A;
2122   enum uint NONE = 0;
2123   enum uint FRAMEBUFFER_COMPLETE = 0x8CD5;
2124   enum uint FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
2125   enum uint FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
2126   enum uint FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
2127   enum uint FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
2128   enum uint FRAMEBUFFER_BINDING = 0x8CA6;
2129   enum uint RENDERBUFFER_BINDING = 0x8CA7;
2130   enum uint MAX_RENDERBUFFER_SIZE = 0x84E8;
2131   enum uint INVALID_FRAMEBUFFER_OPERATION = 0x0506;
2132   enum uint UNPACK_FLIP_Y_WEBGL = 0x9240;
2133   enum uint UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
2134   enum uint CONTEXT_LOST_WEBGL = 0x9242;
2135   enum uint UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
2136   enum uint BROWSER_DEFAULT_WEBGL = 0x9244;
2137   auto canvas()() {
2138     return WebGLRenderingContextBase_canvas_Get(this.handle);
2139   }
2140   int drawingBufferWidth()() {
2141     return Object_Getter__int(this.handle, "drawingBufferWidth");
2142   }
2143   int drawingBufferHeight()() {
2144     return Object_Getter__int(this.handle, "drawingBufferHeight");
2145   }
2146   auto getContextAttributes()() {
2147     return recastOpt!(WebGLContextAttributes)(Object_Getter__OptionalHandle(this.handle, "getContextAttributes"));
2148   }
2149   bool isContextLost()() {
2150     return Object_Getter__bool(this.handle, "isContextLost");
2151   }
2152   auto getSupportedExtensions()() {
2153     return recastOpt!(Sequence!(string))(Object_Getter__OptionalHandle(this.handle, "getSupportedExtensions"));
2154   }
2155   auto getExtension()(string name) {
2156     return recastOpt!(JsObject)(Object_Call_string__OptionalHandle(this.handle, "getExtension", name));
2157   }
2158   void activeTexture()(uint texture) {
2159     Object_Call_uint__void(this.handle, "activeTexture", texture);
2160   }
2161   void attachShader()(scope ref WebGLProgram program, scope ref WebGLShader shader) {
2162     Serialize_Object_VarArgCall!void(this.handle, "attachShader", "Handle;Handle", tuple(cast(Handle)program.handle, cast(Handle)shader.handle));
2163   }
2164   void bindAttribLocation()(scope ref WebGLProgram program, uint index, string name) {
2165     Serialize_Object_VarArgCall!void(this.handle, "bindAttribLocation", "Handle;uint;string", tuple(cast(Handle)program.handle, index, name));
2166   }
2167   void bindBuffer(T1)(uint target, scope auto ref Optional!(T1) buffer) if (isTOrPointer!(T1, WebGLBuffer)) {
2168     Serialize_Object_VarArgCall!void(this.handle, "bindBuffer", "uint;Optional!Handle", tuple(target, !buffer.empty, cast(Handle)buffer.front.handle));
2169   }
2170   void bindFramebuffer(T1)(uint target, scope auto ref Optional!(T1) framebuffer) if (isTOrPointer!(T1, WebGLFramebuffer)) {
2171     Serialize_Object_VarArgCall!void(this.handle, "bindFramebuffer", "uint;Optional!Handle", tuple(target, !framebuffer.empty, cast(Handle)framebuffer.front.handle));
2172   }
2173   void bindRenderbuffer(T1)(uint target, scope auto ref Optional!(T1) renderbuffer) if (isTOrPointer!(T1, WebGLRenderbuffer)) {
2174     Serialize_Object_VarArgCall!void(this.handle, "bindRenderbuffer", "uint;Optional!Handle", tuple(target, !renderbuffer.empty, cast(Handle)renderbuffer.front.handle));
2175   }
2176   void bindTexture(T1)(uint target, scope auto ref Optional!(T1) texture) if (isTOrPointer!(T1, WebGLTexture)) {
2177     Serialize_Object_VarArgCall!void(this.handle, "bindTexture", "uint;Optional!Handle", tuple(target, !texture.empty, cast(Handle)texture.front.handle));
2178   }
2179   void blendColor()(float red, float green, float blue, float alpha) {
2180     Serialize_Object_VarArgCall!void(this.handle, "blendColor", "float;float;float;float", tuple(red, green, blue, alpha));
2181   }
2182   void blendEquation()(uint mode) {
2183     Object_Call_uint__void(this.handle, "blendEquation", mode);
2184   }
2185   void blendEquationSeparate()(uint modeRGB, uint modeAlpha) {
2186     Serialize_Object_VarArgCall!void(this.handle, "blendEquationSeparate", "uint;uint", tuple(modeRGB, modeAlpha));
2187   }
2188   void blendFunc()(uint sfactor, uint dfactor) {
2189     Serialize_Object_VarArgCall!void(this.handle, "blendFunc", "uint;uint", tuple(sfactor, dfactor));
2190   }
2191   void blendFuncSeparate()(uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) {
2192     Serialize_Object_VarArgCall!void(this.handle, "blendFuncSeparate", "uint;uint;uint;uint", tuple(srcRGB, dstRGB, srcAlpha, dstAlpha));
2193   }
2194   uint checkFramebufferStatus()(uint target) {
2195     return Serialize_Object_VarArgCall!uint(this.handle, "checkFramebufferStatus", "uint", tuple(target));
2196   }
2197   void clear()(uint mask) {
2198     Object_Call_uint__void(this.handle, "clear", mask);
2199   }
2200   void clearColor()(float red, float green, float blue, float alpha) {
2201     Serialize_Object_VarArgCall!void(this.handle, "clearColor", "float;float;float;float", tuple(red, green, blue, alpha));
2202   }
2203   void clearDepth()(float depth) {
2204     Object_Call_float__void(this.handle, "clearDepth", depth);
2205   }
2206   void clearStencil()(int s) {
2207     Object_Call_int__void(this.handle, "clearStencil", s);
2208   }
2209   void colorMask()(bool red, bool green, bool blue, bool alpha) {
2210     Serialize_Object_VarArgCall!void(this.handle, "colorMask", "bool;bool;bool;bool", tuple(red, green, blue, alpha));
2211   }
2212   void compileShader()(scope ref WebGLShader shader) {
2213     Object_Call_Handle__void(this.handle, "compileShader", shader.handle);
2214   }
2215   void copyTexImage2D()(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) {
2216     Serialize_Object_VarArgCall!void(this.handle, "copyTexImage2D", "uint;int;uint;int;int;int;int;int", tuple(target, level, internalformat, x, y, width, height, border));
2217   }
2218   void copyTexSubImage2D()(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) {
2219     Serialize_Object_VarArgCall!void(this.handle, "copyTexSubImage2D", "uint;int;int;int;int;int;int;int", tuple(target, level, xoffset, yoffset, x, y, width, height));
2220   }
2221   auto createBuffer()() {
2222     return recastOpt!(WebGLBuffer)(Object_Getter__OptionalHandle(this.handle, "createBuffer"));
2223   }
2224   auto createFramebuffer()() {
2225     return recastOpt!(WebGLFramebuffer)(Object_Getter__OptionalHandle(this.handle, "createFramebuffer"));
2226   }
2227   auto createProgram()() {
2228     return recastOpt!(WebGLProgram)(Object_Getter__OptionalHandle(this.handle, "createProgram"));
2229   }
2230   auto createRenderbuffer()() {
2231     return recastOpt!(WebGLRenderbuffer)(Object_Getter__OptionalHandle(this.handle, "createRenderbuffer"));
2232   }
2233   auto createShader()(uint type) {
2234     return recastOpt!(WebGLShader)(Object_Call_uint__OptionalHandle(this.handle, "createShader", type));
2235   }
2236   auto createTexture()() {
2237     return recastOpt!(WebGLTexture)(Object_Getter__OptionalHandle(this.handle, "createTexture"));
2238   }
2239   void cullFace()(uint mode) {
2240     Object_Call_uint__void(this.handle, "cullFace", mode);
2241   }
2242   void deleteBuffer(T0)(scope auto ref Optional!(T0) buffer) if (isTOrPointer!(T0, WebGLBuffer)) {
2243     Serialize_Object_VarArgCall!void(this.handle, "deleteBuffer", "Optional!Handle", tuple(!buffer.empty, cast(Handle)buffer.front.handle));
2244   }
2245   void deleteFramebuffer(T0)(scope auto ref Optional!(T0) framebuffer) if (isTOrPointer!(T0, WebGLFramebuffer)) {
2246     Serialize_Object_VarArgCall!void(this.handle, "deleteFramebuffer", "Optional!Handle", tuple(!framebuffer.empty, cast(Handle)framebuffer.front.handle));
2247   }
2248   void deleteProgram(T0)(scope auto ref Optional!(T0) program) if (isTOrPointer!(T0, WebGLProgram)) {
2249     Serialize_Object_VarArgCall!void(this.handle, "deleteProgram", "Optional!Handle", tuple(!program.empty, cast(Handle)program.front.handle));
2250   }
2251   void deleteRenderbuffer(T0)(scope auto ref Optional!(T0) renderbuffer) if (isTOrPointer!(T0, WebGLRenderbuffer)) {
2252     Serialize_Object_VarArgCall!void(this.handle, "deleteRenderbuffer", "Optional!Handle", tuple(!renderbuffer.empty, cast(Handle)renderbuffer.front.handle));
2253   }
2254   void deleteShader(T0)(scope auto ref Optional!(T0) shader) if (isTOrPointer!(T0, WebGLShader)) {
2255     Serialize_Object_VarArgCall!void(this.handle, "deleteShader", "Optional!Handle", tuple(!shader.empty, cast(Handle)shader.front.handle));
2256   }
2257   void deleteTexture(T0)(scope auto ref Optional!(T0) texture) if (isTOrPointer!(T0, WebGLTexture)) {
2258     Serialize_Object_VarArgCall!void(this.handle, "deleteTexture", "Optional!Handle", tuple(!texture.empty, cast(Handle)texture.front.handle));
2259   }
2260   void depthFunc()(uint func) {
2261     Object_Call_uint__void(this.handle, "depthFunc", func);
2262   }
2263   void depthMask()(bool flag) {
2264     Object_Call_bool__void(this.handle, "depthMask", flag);
2265   }
2266   void depthRange()(float zNear, float zFar) {
2267     Serialize_Object_VarArgCall!void(this.handle, "depthRange", "float;float", tuple(zNear, zFar));
2268   }
2269   void detachShader()(scope ref WebGLProgram program, scope ref WebGLShader shader) {
2270     Serialize_Object_VarArgCall!void(this.handle, "detachShader", "Handle;Handle", tuple(cast(Handle)program.handle, cast(Handle)shader.handle));
2271   }
2272   void disable()(uint cap) {
2273     Object_Call_uint__void(this.handle, "disable", cap);
2274   }
2275   void disableVertexAttribArray()(uint index) {
2276     Object_Call_uint__void(this.handle, "disableVertexAttribArray", index);
2277   }
2278   void drawArrays()(uint mode, int first, int count) {
2279     Serialize_Object_VarArgCall!void(this.handle, "drawArrays", "uint;int;int", tuple(mode, first, count));
2280   }
2281   void drawElements()(uint mode, int count, uint type, int offset) {
2282     Serialize_Object_VarArgCall!void(this.handle, "drawElements", "uint;int;uint;int", tuple(mode, count, type, offset));
2283   }
2284   void enable()(uint cap) {
2285     Object_Call_uint__void(this.handle, "enable", cap);
2286   }
2287   void enableVertexAttribArray()(uint index) {
2288     Object_Call_uint__void(this.handle, "enableVertexAttribArray", index);
2289   }
2290   void finish()() {
2291     Object_Call__void(this.handle, "finish");
2292   }
2293   void flush()() {
2294     Object_Call__void(this.handle, "flush");
2295   }
2296   void framebufferRenderbuffer(T3)(uint target, uint attachment, uint renderbuffertarget, scope auto ref Optional!(T3) renderbuffer) if (isTOrPointer!(T3, WebGLRenderbuffer)) {
2297     Serialize_Object_VarArgCall!void(this.handle, "framebufferRenderbuffer", "uint;uint;uint;Optional!Handle", tuple(target, attachment, renderbuffertarget, !renderbuffer.empty, cast(Handle)renderbuffer.front.handle));
2298   }
2299   void framebufferTexture2D(T3)(uint target, uint attachment, uint textarget, scope auto ref Optional!(T3) texture, int level) if (isTOrPointer!(T3, WebGLTexture)) {
2300     Serialize_Object_VarArgCall!void(this.handle, "framebufferTexture2D", "uint;uint;uint;Optional!Handle;int", tuple(target, attachment, textarget, !texture.empty, cast(Handle)texture.front.handle, level));
2301   }
2302   void frontFace()(uint mode) {
2303     Object_Call_uint__void(this.handle, "frontFace", mode);
2304   }
2305   void generateMipmap()(uint target) {
2306     Object_Call_uint__void(this.handle, "generateMipmap", target);
2307   }
2308   auto getActiveAttrib()(scope ref WebGLProgram program, uint index) {
2309     return recastOpt!(WebGLActiveInfo)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getActiveAttrib", "Handle;uint", tuple(cast(Handle)program.handle, index)));
2310   }
2311   auto getActiveUniform()(scope ref WebGLProgram program, uint index) {
2312     return recastOpt!(WebGLActiveInfo)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getActiveUniform", "Handle;uint", tuple(cast(Handle)program.handle, index)));
2313   }
2314   auto getAttachedShaders()(scope ref WebGLProgram program) {
2315     return recastOpt!(Sequence!(WebGLShader))(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getAttachedShaders", "Handle", tuple(cast(Handle)program.handle)));
2316   }
2317   int getAttribLocation()(scope ref WebGLProgram program, string name) {
2318     return Serialize_Object_VarArgCall!int(this.handle, "getAttribLocation", "Handle;string", tuple(cast(Handle)program.handle, name));
2319   }
2320   auto getBufferParameter()(uint target, uint pname) {
2321     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getBufferParameter", "uint;uint", tuple(target, pname)));
2322   }
2323   auto getParameter()(uint pname) {
2324     return Any(Object_Call_uint__Handle(this.handle, "getParameter", pname));
2325   }
2326   uint getError()() {
2327     return Object_Getter__uint(this.handle, "getError");
2328   }
2329   auto getFramebufferAttachmentParameter()(uint target, uint attachment, uint pname) {
2330     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getFramebufferAttachmentParameter", "uint;uint;uint", tuple(target, attachment, pname)));
2331   }
2332   auto getProgramParameter()(scope ref WebGLProgram program, uint pname) {
2333     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getProgramParameter", "Handle;uint", tuple(cast(Handle)program.handle, pname)));
2334   }
2335   Optional!(string) getProgramInfoLog()(scope ref WebGLProgram program) {
2336     return Serialize_Object_VarArgCall!(Optional!string)(this.handle, "getProgramInfoLog", "Handle", tuple(cast(Handle)program.handle));
2337   }
2338   auto getRenderbufferParameter()(uint target, uint pname) {
2339     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getRenderbufferParameter", "uint;uint", tuple(target, pname)));
2340   }
2341   auto getShaderParameter()(scope ref WebGLShader shader, uint pname) {
2342     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getShaderParameter", "Handle;uint", tuple(cast(Handle)shader.handle, pname)));
2343   }
2344   auto getShaderPrecisionFormat()(uint shadertype, uint precisiontype) {
2345     return recastOpt!(WebGLShaderPrecisionFormat)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getShaderPrecisionFormat", "uint;uint", tuple(shadertype, precisiontype)));
2346   }
2347   Optional!(string) getShaderInfoLog()(scope ref WebGLShader shader) {
2348     return Serialize_Object_VarArgCall!(Optional!string)(this.handle, "getShaderInfoLog", "Handle", tuple(cast(Handle)shader.handle));
2349   }
2350   Optional!(string) getShaderSource()(scope ref WebGLShader shader) {
2351     return Serialize_Object_VarArgCall!(Optional!string)(this.handle, "getShaderSource", "Handle", tuple(cast(Handle)shader.handle));
2352   }
2353   auto getTexParameter()(uint target, uint pname) {
2354     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getTexParameter", "uint;uint", tuple(target, pname)));
2355   }
2356   auto getUniform()(scope ref WebGLProgram program, scope ref WebGLUniformLocation location) {
2357     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getUniform", "Handle;Handle", tuple(cast(Handle)program.handle, cast(Handle)location.handle)));
2358   }
2359   auto getUniformLocation()(scope ref WebGLProgram program, string name) {
2360     return recastOpt!(WebGLUniformLocation)(Serialize_Object_VarArgCall!(Optional!Handle)(this.handle, "getUniformLocation", "Handle;string", tuple(cast(Handle)program.handle, name)));
2361   }
2362   auto getVertexAttrib()(uint index, uint pname) {
2363     return Any(Serialize_Object_VarArgCall!Handle(this.handle, "getVertexAttrib", "uint;uint", tuple(index, pname)));
2364   }
2365   int getVertexAttribOffset()(uint index, uint pname) {
2366     return Serialize_Object_VarArgCall!int(this.handle, "getVertexAttribOffset", "uint;uint", tuple(index, pname));
2367   }
2368   void hint()(uint target, uint mode) {
2369     Serialize_Object_VarArgCall!void(this.handle, "hint", "uint;uint", tuple(target, mode));
2370   }
2371   bool isBuffer(T0)(scope auto ref Optional!(T0) buffer) if (isTOrPointer!(T0, WebGLBuffer)) {
2372     return Serialize_Object_VarArgCall!bool(this.handle, "isBuffer", "Optional!Handle", tuple(!buffer.empty, cast(Handle)buffer.front.handle));
2373   }
2374   bool isEnabled()(uint cap) {
2375     return Serialize_Object_VarArgCall!bool(this.handle, "isEnabled", "uint", tuple(cap));
2376   }
2377   bool isFramebuffer(T0)(scope auto ref Optional!(T0) framebuffer) if (isTOrPointer!(T0, WebGLFramebuffer)) {
2378     return Serialize_Object_VarArgCall!bool(this.handle, "isFramebuffer", "Optional!Handle", tuple(!framebuffer.empty, cast(Handle)framebuffer.front.handle));
2379   }
2380   bool isProgram(T0)(scope auto ref Optional!(T0) program) if (isTOrPointer!(T0, WebGLProgram)) {
2381     return Serialize_Object_VarArgCall!bool(this.handle, "isProgram", "Optional!Handle", tuple(!program.empty, cast(Handle)program.front.handle));
2382   }
2383   bool isRenderbuffer(T0)(scope auto ref Optional!(T0) renderbuffer) if (isTOrPointer!(T0, WebGLRenderbuffer)) {
2384     return Serialize_Object_VarArgCall!bool(this.handle, "isRenderbuffer", "Optional!Handle", tuple(!renderbuffer.empty, cast(Handle)renderbuffer.front.handle));
2385   }
2386   bool isShader(T0)(scope auto ref Optional!(T0) shader) if (isTOrPointer!(T0, WebGLShader)) {
2387     return Serialize_Object_VarArgCall!bool(this.handle, "isShader", "Optional!Handle", tuple(!shader.empty, cast(Handle)shader.front.handle));
2388   }
2389   bool isTexture(T0)(scope auto ref Optional!(T0) texture) if (isTOrPointer!(T0, WebGLTexture)) {
2390     return Serialize_Object_VarArgCall!bool(this.handle, "isTexture", "Optional!Handle", tuple(!texture.empty, cast(Handle)texture.front.handle));
2391   }
2392   void lineWidth()(float width) {
2393     Object_Call_float__void(this.handle, "lineWidth", width);
2394   }
2395   void linkProgram()(scope ref WebGLProgram program) {
2396     Object_Call_Handle__void(this.handle, "linkProgram", program.handle);
2397   }
2398   void pixelStorei()(uint pname, int param) {
2399     Serialize_Object_VarArgCall!void(this.handle, "pixelStorei", "uint;int", tuple(pname, param));
2400   }
2401   void polygonOffset()(float factor, float units) {
2402     Serialize_Object_VarArgCall!void(this.handle, "polygonOffset", "float;float", tuple(factor, units));
2403   }
2404   void renderbufferStorage()(uint target, uint internalformat, int width, int height) {
2405     Serialize_Object_VarArgCall!void(this.handle, "renderbufferStorage", "uint;uint;int;int", tuple(target, internalformat, width, height));
2406   }
2407   void sampleCoverage()(float value, bool invert) {
2408     Serialize_Object_VarArgCall!void(this.handle, "sampleCoverage", "float;bool", tuple(value, invert));
2409   }
2410   void scissor()(int x, int y, int width, int height) {
2411     Serialize_Object_VarArgCall!void(this.handle, "scissor", "int;int;int;int", tuple(x, y, width, height));
2412   }
2413   void shaderSource()(scope ref WebGLShader shader, string source) {
2414     Serialize_Object_VarArgCall!void(this.handle, "shaderSource", "Handle;string", tuple(cast(Handle)shader.handle, source));
2415   }
2416   void stencilFunc()(uint func, int ref_, uint mask) {
2417     Serialize_Object_VarArgCall!void(this.handle, "stencilFunc", "uint;int;uint", tuple(func, ref_, mask));
2418   }
2419   void stencilFuncSeparate()(uint face, uint func, int ref_, uint mask) {
2420     Serialize_Object_VarArgCall!void(this.handle, "stencilFuncSeparate", "uint;uint;int;uint", tuple(face, func, ref_, mask));
2421   }
2422   void stencilMask()(uint mask) {
2423     Object_Call_uint__void(this.handle, "stencilMask", mask);
2424   }
2425   void stencilMaskSeparate()(uint face, uint mask) {
2426     Serialize_Object_VarArgCall!void(this.handle, "stencilMaskSeparate", "uint;uint", tuple(face, mask));
2427   }
2428   void stencilOp()(uint fail, uint zfail, uint zpass) {
2429     Serialize_Object_VarArgCall!void(this.handle, "stencilOp", "uint;uint;uint", tuple(fail, zfail, zpass));
2430   }
2431   void stencilOpSeparate()(uint face, uint fail, uint zfail, uint zpass) {
2432     Serialize_Object_VarArgCall!void(this.handle, "stencilOpSeparate", "uint;uint;uint;uint", tuple(face, fail, zfail, zpass));
2433   }
2434   void texParameterf()(uint target, uint pname, float param) {
2435     Serialize_Object_VarArgCall!void(this.handle, "texParameterf", "uint;uint;float", tuple(target, pname, param));
2436   }
2437   void texParameteri()(uint target, uint pname, int param) {
2438     Serialize_Object_VarArgCall!void(this.handle, "texParameteri", "uint;uint;int", tuple(target, pname, param));
2439   }
2440   void uniform1f(T0)(scope auto ref Optional!(T0) location, float x) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2441     Serialize_Object_VarArgCall!void(this.handle, "uniform1f", "Optional!Handle;float", tuple(!location.empty, cast(Handle)location.front.handle, x));
2442   }
2443   void uniform2f(T0)(scope auto ref Optional!(T0) location, float x, float y) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2444     Serialize_Object_VarArgCall!void(this.handle, "uniform2f", "Optional!Handle;float;float", tuple(!location.empty, cast(Handle)location.front.handle, x, y));
2445   }
2446   void uniform3f(T0)(scope auto ref Optional!(T0) location, float x, float y, float z) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2447     Serialize_Object_VarArgCall!void(this.handle, "uniform3f", "Optional!Handle;float;float;float", tuple(!location.empty, cast(Handle)location.front.handle, x, y, z));
2448   }
2449   void uniform4f(T0)(scope auto ref Optional!(T0) location, float x, float y, float z, float w) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2450     Serialize_Object_VarArgCall!void(this.handle, "uniform4f", "Optional!Handle;float;float;float;float", tuple(!location.empty, cast(Handle)location.front.handle, x, y, z, w));
2451   }
2452   void uniform1i(T0)(scope auto ref Optional!(T0) location, int x) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2453     Serialize_Object_VarArgCall!void(this.handle, "uniform1i", "Optional!Handle;int", tuple(!location.empty, cast(Handle)location.front.handle, x));
2454   }
2455   void uniform2i(T0)(scope auto ref Optional!(T0) location, int x, int y) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2456     Serialize_Object_VarArgCall!void(this.handle, "uniform2i", "Optional!Handle;int;int", tuple(!location.empty, cast(Handle)location.front.handle, x, y));
2457   }
2458   void uniform3i(T0)(scope auto ref Optional!(T0) location, int x, int y, int z) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2459     Serialize_Object_VarArgCall!void(this.handle, "uniform3i", "Optional!Handle;int;int;int", tuple(!location.empty, cast(Handle)location.front.handle, x, y, z));
2460   }
2461   void uniform4i(T0)(scope auto ref Optional!(T0) location, int x, int y, int z, int w) if (isTOrPointer!(T0, WebGLUniformLocation)) {
2462     Serialize_Object_VarArgCall!void(this.handle, "uniform4i", "Optional!Handle;int;int;int;int", tuple(!location.empty, cast(Handle)location.front.handle, x, y, z, w));
2463   }
2464   void useProgram(T0)(scope auto ref Optional!(T0) program) if (isTOrPointer!(T0, WebGLProgram)) {
2465     Serialize_Object_VarArgCall!void(this.handle, "useProgram", "Optional!Handle", tuple(!program.empty, cast(Handle)program.front.handle));
2466   }
2467   void validateProgram()(scope ref WebGLProgram program) {
2468     Object_Call_Handle__void(this.handle, "validateProgram", program.handle);
2469   }
2470   void vertexAttrib1f()(uint indx, float x) {
2471     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib1f", "uint;float", tuple(indx, x));
2472   }
2473   void vertexAttrib1fv()(uint indx, scope ref Float32List values) {
2474     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib1fv", "uint;SumType!(Handle,Handle)", tuple(indx, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
2475   }
2476   void vertexAttrib2f()(uint indx, float x, float y) {
2477     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib2f", "uint;float;float", tuple(indx, x, y));
2478   }
2479   void vertexAttrib2fv()(uint indx, scope ref Float32List values) {
2480     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib2fv", "uint;SumType!(Handle,Handle)", tuple(indx, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
2481   }
2482   void vertexAttrib3f()(uint indx, float x, float y, float z) {
2483     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib3f", "uint;float;float;float", tuple(indx, x, y, z));
2484   }
2485   void vertexAttrib3fv()(uint indx, scope ref Float32List values) {
2486     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib3fv", "uint;SumType!(Handle,Handle)", tuple(indx, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
2487   }
2488   void vertexAttrib4f()(uint indx, float x, float y, float z, float w) {
2489     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib4f", "uint;float;float;float;float", tuple(indx, x, y, z, w));
2490   }
2491   void vertexAttrib4fv()(uint indx, scope ref Float32List values) {
2492     Serialize_Object_VarArgCall!void(this.handle, "vertexAttrib4fv", "uint;SumType!(Handle,Handle)", tuple(indx, libwasm.sumtype.match!(((ref values.Types[0] v) => 0),((ref values.Types[1] v) => 1))(values),tuple(libwasm.sumtype.match!(((ref values.Types[0] v) => cast(Handle)v.handle),((ref values.Types[1] v) => Handle.init))(values),libwasm.sumtype.match!(((ref values.Types[0] v) => Handle.init),((ref values.Types[1] v) => cast(Handle)v.handle))(values))));
2493   }
2494   void vertexAttribPointer()(uint indx, int size, uint type, bool normalized, int stride, int offset) {
2495     Serialize_Object_VarArgCall!void(this.handle, "vertexAttribPointer", "uint;int;uint;bool;int;int", tuple(indx, size, type, normalized, stride, offset));
2496   }
2497   void viewport()(int x, int y, int width, int height) {
2498     Serialize_Object_VarArgCall!void(this.handle, "viewport", "int;int;int;int", tuple(x, y, width, height));
2499   }
2500 }
2501 struct WebGLSampler {
2502   nothrow:
2503   JsHandle handle;
2504   alias handle this;
2505   this(Handle h) {
2506     this.handle = JsHandle(h);
2507   }
2508 }
2509 struct WebGLSync {
2510   nothrow:
2511   JsHandle handle;
2512   alias handle this;
2513   this(Handle h) {
2514     this.handle = JsHandle(h);
2515   }
2516 }
2517 struct WebGLTransformFeedback {
2518   nothrow:
2519   JsHandle handle;
2520   alias handle this;
2521   this(Handle h) {
2522     this.handle = JsHandle(h);
2523   }
2524 }
2525 
2526