1191 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			1191 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								import GLenum from './GLenum';
							 | 
						||
| 
								 | 
							
								import ActiveInfo from './ActiveInfo';
							 | 
						||
| 
								 | 
							
								import Buffer from './Buffer';
							 | 
						||
| 
								 | 
							
								import Framebuffer from './Framebuffer';
							 | 
						||
| 
								 | 
							
								import Renderbuffer from './Renderbuffer';
							 | 
						||
| 
								 | 
							
								import Texture from './Texture';
							 | 
						||
| 
								 | 
							
								import Program from './Program';
							 | 
						||
| 
								 | 
							
								import Shader from './Shader';
							 | 
						||
| 
								 | 
							
								import ShaderPrecisionFormat from './ShaderPrecisionFormat';
							 | 
						||
| 
								 | 
							
								import UniformLocation from './UniformLocation';
							 | 
						||
| 
								 | 
							
								import GLmethod from './GLmethod';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const processArray = (array, checkArrayType = false) => {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function joinArray(arr, sep) {
							 | 
						||
| 
								 | 
							
								        let res = '';
							 | 
						||
| 
								 | 
							
								        for (let i = 0; i < arr.length; i++) {
							 | 
						||
| 
								 | 
							
								            if (i !== 0) {
							 | 
						||
| 
								 | 
							
								                res += sep;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            res += arr[i];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return res;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    let type = 'Float32Array';
							 | 
						||
| 
								 | 
							
								    if (checkArrayType) {
							 | 
						||
| 
								 | 
							
								        if (array instanceof Uint8Array) {
							 | 
						||
| 
								 | 
							
								            type = 'Uint8Array'
							 | 
						||
| 
								 | 
							
								        } else if (array instanceof Uint16Array) {
							 | 
						||
| 
								 | 
							
								            type = 'Uint16Array';
							 | 
						||
| 
								 | 
							
								        } else if (array instanceof Uint32Array) {
							 | 
						||
| 
								 | 
							
								            type = 'Uint32Array';
							 | 
						||
| 
								 | 
							
								        } else if (array instanceof Float32Array) {
							 | 
						||
| 
								 | 
							
								            type = 'Float32Array';
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            throw new Error('Check array type failed. Array type is ' + typeof array);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const ArrayTypes = {
							 | 
						||
| 
								 | 
							
								        Uint8Array: 1,
							 | 
						||
| 
								 | 
							
								        Uint16Array: 2,
							 | 
						||
| 
								 | 
							
								        Uint32Array: 4,
							 | 
						||
| 
								 | 
							
								        Float32Array: 14
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    return ArrayTypes[type] + ',' + btoa(joinArray(array, ','))
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default class WebGLRenderingContext {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // static GBridge = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    className = 'WebGLRenderingContext';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    constructor(canvas, type, attrs) {
							 | 
						||
| 
								 | 
							
								        this._canvas = canvas;
							 | 
						||
| 
								 | 
							
								        this._type = type;
							 | 
						||
| 
								 | 
							
								        this._version = 'WebGL 1.0';
							 | 
						||
| 
								 | 
							
								        this._attrs = attrs;
							 | 
						||
| 
								 | 
							
								        this._map = new Map();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Object.keys(GLenum)
							 | 
						||
| 
								 | 
							
								            .forEach(name => Object.defineProperty(this, name, {
							 | 
						||
| 
								 | 
							
								                value: GLenum[name]
							 | 
						||
| 
								 | 
							
								            }));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get canvas() {
							 | 
						||
| 
								 | 
							
								        return this._canvas;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    activeTexture = function (textureUnit) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.activeTexture + ',' + textureUnit,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    attachShader = function (progarm, shader) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.attachShader + ',' + progarm.id + ',' + shader.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bindAttribLocation = function (program, index, name) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bindAttribLocation + ',' + program.id + ',' + index + ',' + name,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bindBuffer = function (target, buffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bindBuffer + ',' + target + ',' + (buffer ? buffer.id : 0),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bindFramebuffer = function (target, framebuffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bindFramebuffer + ',' + target + ',' + (framebuffer ? framebuffer.id : 0),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bindRenderbuffer = function (target, renderBuffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bindRenderbuffer + ',' + target + ',' + (renderBuffer ? renderBuffer.id : 0),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bindTexture = function (target, texture) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bindTexture + ',' + target + ',' + (texture ? texture.id : 0),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    blendColor = function (r, g, b, a) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.blendColor + ',' + target + ',' + r + ',' + g + ',' + b + ',' + a,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    blendEquation = function (mode) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.blendEquation + ',' + mode,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    blendEquationSeparate = function (modeRGB, modeAlpha) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.blendEquationSeparate + ',' + modeRGB + ',' + modeAlpha,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    blendFunc = function (sfactor, dfactor) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.blendFunc + ',' + sfactor + ',' + dfactor,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    blendFuncSeparate = function (srcRGB, dstRGB, srcAlpha, dstAlpha) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.blendFuncSeparate + ',' + srcRGB + ',' + dstRGB + ',' + srcAlpha + ',' + dstAlpha,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bufferData = function (target, data, usage) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bufferData + ',' + target + ',' + processArray(data, true) + ',' + usage,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bufferSubData = function (target, offset, data) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.bufferSubData + ',' + target + ',' + offset + ',' + processArray(data, true),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    checkFramebufferStatus = function (target) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.checkFramebufferStatus + ',' + target
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        return Number(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    clear = function (mask) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.clear + ',' + mask
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        this._canvas._needRender = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    clearColor = function (r, g, b, a) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.clearColor + ',' + r + ',' + g + ',' + b,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    clearDepth = function (depth) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.clearDepth + ',' + depth,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    clearStencil = function (s) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.clearStencil + ',' + s
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    colorMask = function (r, g, b, a) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.colorMask + ',' + r + ',' + g + ',' + b + ',' + a
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    compileShader = function (shader) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.compileShader + ',' + shader.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    compressedTexImage2D = function (target, level, internalformat, width, height, border, pixels) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.compressedTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' +
							 | 
						||
| 
								 | 
							
								            width + ',' + height + ',' + border + ',' + processArray(pixels),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    compressedTexSubImage2D = function (target, level, xoffset, yoffset, width, height, format, pixels) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.compressedTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' +
							 | 
						||
| 
								 | 
							
								            width + ',' + height + ',' + format + ',' + processArray(pixels),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    copyTexImage2D = function (target, level, internalformat, x, y, width, height, border) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.copyTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' + x + ',' + y + ',' +
							 | 
						||
| 
								 | 
							
								            width + ',' + height + ',' + border,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    copyTexSubImage2D = function (target, level, xoffset, yoffset, x, y, width, height) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.copyTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' + x + ',' + y + ',' +
							 | 
						||
| 
								 | 
							
								            width + ',' + height
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createBuffer = function () {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createBuffer + ''
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const buffer = new Buffer(result);
							 | 
						||
| 
								 | 
							
								        this._map.set(buffer.uuid(), buffer);
							 | 
						||
| 
								 | 
							
								        return buffer;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createFramebuffer = function () {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createFramebuffer + ''
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const framebuffer = new Framebuffer(result);
							 | 
						||
| 
								 | 
							
								        this._map.set(framebuffer.uuid(), framebuffer);
							 | 
						||
| 
								 | 
							
								        return framebuffer;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createProgram = function () {
							 | 
						||
| 
								 | 
							
								        const id = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createProgram + ''
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const program = new Program(id);
							 | 
						||
| 
								 | 
							
								        this._map.set(program.uuid(), program);
							 | 
						||
| 
								 | 
							
								        return program;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createRenderbuffer = function () {
							 | 
						||
| 
								 | 
							
								        const id = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createRenderbuffer + ''
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        const renderBuffer = new Renderbuffer(id);
							 | 
						||
| 
								 | 
							
								        this._map.set(renderBuffer.uuid(), renderBuffer);
							 | 
						||
| 
								 | 
							
								        return renderBuffer;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createShader = function (type) {
							 | 
						||
| 
								 | 
							
								        const id = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createShader + ',' + type
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        const shader = new Shader(id, type);
							 | 
						||
| 
								 | 
							
								        this._map.set(shader.uuid(), shader);
							 | 
						||
| 
								 | 
							
								        return shader;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    createTexture = function () {
							 | 
						||
| 
								 | 
							
								        const id = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.createTexture + ''
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const texture = new Texture(id);
							 | 
						||
| 
								 | 
							
								        this._map.set(texture.uuid(), texture);
							 | 
						||
| 
								 | 
							
								        return texture;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    cullFace = function (mode) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.cullFace + ',' + mode,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteBuffer = function (buffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteBuffer + ',' + buffer.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteFramebuffer = function (framebuffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteFramebuffer + ',' + framebuffer.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteProgram = function (program) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteProgram + ',' + program.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteRenderbuffer = function (renderbuffer) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteRenderbuffer + ',' + renderbuffer.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteShader = function (shader) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteShader + ',' + shader.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    deleteTexture = function (texture) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.deleteTexture + ',' + texture.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    depthFunc = function (func) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.depthFunc + ',' + func
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    depthMask = function (flag) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.depthMask + ',' + Number(flag),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    depthRange = function (zNear, zFar) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.depthRange + ',' + zNear + ',' + zFar,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    detachShader = function (program, shader) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.detachShader + ',' + program.id + ',' + shader.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    disable = function (cap) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.disable + ',' + cap,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    disableVertexAttribArray = function (index) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.disableVertexAttribArray + ',' + index,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    drawArrays = function (mode, first, count) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.drawArrays + ',' + mode + ',' + first + ',' + count
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        this._canvas._needRender = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    drawElements = function (mode, count, type, offset) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.drawElements + ',' + mode + ',' + count + ',' + type + ',' + offset + ';'
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        this._canvas._needRender = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enable = function (cap) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.enable + ',' + cap,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enableVertexAttribArray = function (index) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.enableVertexAttribArray + ',' + index,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    flush = function () {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.flush + ''
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    framebufferRenderbuffer = function (target, attachment, textarget, texture, level) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.framebufferRenderbuffer + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    framebufferTexture2D = function (target, attachment, textarget, texture, level) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.framebufferTexture2D + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    frontFace = function (mode) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.frontFace + ',' + mode,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    generateMipmap = function (target) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.generateMipmap + ',' + target,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getActiveAttrib = function (progarm, index) {
							 | 
						||
| 
								 | 
							
								        const resultString = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getActiveAttrib + ',' + progarm.id + ',' + index
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        const [type, size, name] = resultString.split(',');
							 | 
						||
| 
								 | 
							
								        return new ActiveInfo({
							 | 
						||
| 
								 | 
							
								            type: Number(type),
							 | 
						||
| 
								 | 
							
								            size: Number(size),
							 | 
						||
| 
								 | 
							
								            name
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getActiveUniform = function (progarm, index) {
							 | 
						||
| 
								 | 
							
								        const resultString = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getActiveUniform + ',' + progarm.id + ',' + index
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const [type, size, name] = resultString.split(',');
							 | 
						||
| 
								 | 
							
								        return new ActiveInfo({
							 | 
						||
| 
								 | 
							
								            type: Number(type),
							 | 
						||
| 
								 | 
							
								            size: Number(size),
							 | 
						||
| 
								 | 
							
								            name
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getAttachedShaders = function (progarm) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getAttachedShaders + ',' + progarm.id
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const [type, ...ids] = result;
							 | 
						||
| 
								 | 
							
								        return ids.map(id => this._map.get(Shader.uuid(id)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getAttribLocation = function (progarm, name) {
							 | 
						||
| 
								 | 
							
								        return WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getAttribLocation + ',' + progarm.id + ',' + name
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getBufferParameter = function (target, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getBufferParameter + ',' + target + ',' + pname
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const [type, res] = getBufferParameter;
							 | 
						||
| 
								 | 
							
								        return res;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getError = function () {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getError + ''
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getExtension = function (name) {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getFramebufferAttachmentParameter = function (target, attachment, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getFramebufferAttachmentParameter + ',' + target + ',' + attachment + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        switch (pname) {
							 | 
						||
| 
								 | 
							
								            case GLenum.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
							 | 
						||
| 
								 | 
							
								                return this._map.get(Renderbuffer.uuid(result)) || this._map.get(Texture.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            default:
							 | 
						||
| 
								 | 
							
								                return result;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getParameter = function (pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getParameter + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        switch (pname) {
							 | 
						||
| 
								 | 
							
								            case GLenum.VERSION:
							 | 
						||
| 
								 | 
							
								                return this._version;
							 | 
						||
| 
								 | 
							
								            case GLenum.ARRAY_BUFFER_BINDING: // buffer
							 | 
						||
| 
								 | 
							
								            case GLenum.ELEMENT_ARRAY_BUFFER_BINDING: // buffer
							 | 
						||
| 
								 | 
							
								                return this._map.get(Buffer.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.CURRENT_PROGRAM: // program
							 | 
						||
| 
								 | 
							
								                return this._map.get(Program.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.FRAMEBUFFER_BINDING: // framebuffer
							 | 
						||
| 
								 | 
							
								                return this._map.get(Framebuffer.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.RENDERBUFFER_BINDING: // renderbuffer
							 | 
						||
| 
								 | 
							
								                return this._map.get(Renderbuffer.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.TEXTURE_BINDING_2D: // texture
							 | 
						||
| 
								 | 
							
								            case GLenum.TEXTURE_BINDING_CUBE_MAP: // texture
							 | 
						||
| 
								 | 
							
								                return this._map.get(Texture.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.ALIASED_LINE_WIDTH_RANGE: // Float32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.ALIASED_POINT_SIZE_RANGE: // Float32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.BLEND_COLOR: // Float32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.COLOR_CLEAR_VALUE: // Float32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.DEPTH_RANGE: // Float32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.MAX_VIEWPORT_DIMS: // Int32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.SCISSOR_BOX: // Int32Array
							 | 
						||
| 
								 | 
							
								            case GLenum.VIEWPORT: // Int32Array            
							 | 
						||
| 
								 | 
							
								            case GLenum.COMPRESSED_TEXTURE_FORMATS: // Uint32Array
							 | 
						||
| 
								 | 
							
								            default:
							 | 
						||
| 
								 | 
							
								                const [type, ...res] = result.split(',');
							 | 
						||
| 
								 | 
							
								                if (res.length === 1) {
							 | 
						||
| 
								 | 
							
								                    return Number(res[0]);
							 | 
						||
| 
								 | 
							
								                } else {
							 | 
						||
| 
								 | 
							
								                    return res.map(Number);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getProgramInfoLog = function (progarm) {
							 | 
						||
| 
								 | 
							
								        return WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getProgramInfoLog + ',' + progarm.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getProgramParameter = function (program, pname) {
							 | 
						||
| 
								 | 
							
								        const res = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getProgramParameter + ',' + program.id + ',' + pname
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const [type, result] = res.split(',').map(i => parseInt(i));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (type === 1) {
							 | 
						||
| 
								 | 
							
								            return Boolean(result);
							 | 
						||
| 
								 | 
							
								        } else if (type === 2) {
							 | 
						||
| 
								 | 
							
								            return result;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            throw new Error('Unrecongized program paramater ' + res + ', type: ' + typeof res);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getRenderbufferParameter = function (target, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getRenderbufferParameter + ',' + target + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getShaderInfoLog = function (shader) {
							 | 
						||
| 
								 | 
							
								        return WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getShaderInfoLog + ',' + shader.id
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getShaderParameter = function (shader, pname) {
							 | 
						||
| 
								 | 
							
								        return WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getShaderParameter + ',' + shader.id + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getShaderPrecisionFormat = function (shaderType, precisionType) {
							 | 
						||
| 
								 | 
							
								        const [rangeMin, rangeMax, precision] = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getShaderPrecisionFormat + ',' + shaderType + ',' + precisionType
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        const shaderPrecisionFormat = new ShaderPrecisionFormat({
							 | 
						||
| 
								 | 
							
								            rangeMin: Number(rangeMin),
							 | 
						||
| 
								 | 
							
								            rangeMax: Number(rangeMax),
							 | 
						||
| 
								 | 
							
								            precision: Number(precision)
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        return shaderPrecisionFormat;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getShaderSource = function (shader) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getShaderSource + ',' + shader.id
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getSupportedExtensions = function () {
							 | 
						||
| 
								 | 
							
								        return Object.keys({});
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getTexParameter = function (target, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getTexParameter + ',' + target + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getUniformLocation = function (program, name) {
							 | 
						||
| 
								 | 
							
								        const id = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getUniformLocation + ',' + program.id + ',' + name
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        if (id === -1) {
							 | 
						||
| 
								 | 
							
								            return null;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            return new UniformLocation(Number(id));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getVertexAttrib = function (index, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getVertexAttrib + ',' + index + ',' + pname
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        switch (pname) {
							 | 
						||
| 
								 | 
							
								            case GLenum.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
							 | 
						||
| 
								 | 
							
								                return this._map.get(Buffer.uuid(result)) || null;
							 | 
						||
| 
								 | 
							
								            case GLenum.CURRENT_VERTEX_ATTRIB: // Float32Array
							 | 
						||
| 
								 | 
							
								            default:
							 | 
						||
| 
								 | 
							
								                return result;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getVertexAttribOffset = function (index, pname) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.getVertexAttribOffset + ',' + index + ',' + pname
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Number(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isBuffer = function (buffer) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isBuffer + ',' + buffer.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isContextLost = function () {
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isEnabled = function (cap) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isEnabled + ',' + cap
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isFramebuffer = function (framebuffer) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isFramebuffer + ',' + framebuffer.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isProgram = function (program) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isProgram + ',' + program.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isRenderbuffer = function (renderBuffer) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isRenderbuffer + ',' + renderbuffer.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isShader = function (shader) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isShader + ',' + shader.id
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    isTexture = function (texture) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.isTexture + ',' + texture.id
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        return Boolean(result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    lineWidth = function (width) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.lineWidth + ',' + width,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    linkProgram = function (program) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.linkProgram + ',' + program.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    pixelStorei = function (pname, param) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.pixelStorei + ',' + pname + ',' + Number(param)
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    polygonOffset = function (factor, units) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.polygonOffset + ',' + factor + ',' + units
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    readPixels = function (x, y, width, height, format, type, pixels) {
							 | 
						||
| 
								 | 
							
								        const result = WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.readPixels + ',' + x + ',' + y + ',' + width + ',' + height + ',' + format + ',' + type
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    renderbufferStorage = function (target, internalFormat, width, height) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.renderbufferStorage + ',' + target + ',' + internalFormat + ',' + width + ',' + height,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sampleCoverage = function (value, invert) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.sampleCoverage + ',' + value + ',' + Number(invert),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    scissor = function (x, y, width, height) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.scissor + ',' + x + ',' + y + ',' + width + ',' + height,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    shaderSource = function (shader, source) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.shaderSource + ',' + shader.id + ',' + source
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilFunc = function (func, ref, mask) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilFunc + ',' + func + ',' + ref + ',' + mask,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilFuncSeparate = function (face, func, ref, mask) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilFuncSeparate + ',' + face + ',' + func + ',' + ref + ',' + mask,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilMask = function (mask) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilMask + ',' + mask,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilMaskSeparate = function (face, mask) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilMaskSeparate + ',' + face + ',' + mask,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilOp = function (fail, zfail, zpass) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilOp + ',' + fail + ',' + zfail + ',' + zpass
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stencilOpSeparate = function (face, fail, zfail, zpass) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.stencilOp + ',' + face + ',' + fail + ',' + zfail + ',' + zpass,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    texImage2D = function (...args) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.texImage2D(this._canvas.id, ...args);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    texParameterf = function (target, pname, param) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.texParameterf + ',' + target + ',' + pname + ',' + param,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    texParameteri = function (target, pname, param) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.texParameteri + ',' + target + ',' + pname + ',' + param
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    texSubImage2D = function (...args) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.texSubImage2D(this._canvas.id, ...args);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform1f = function (location, v0) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform1f + ',' + location.id + ',' + v0
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform1fv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform1fv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform1i = function (location, v0) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform1i + ',' + location.id + ',' + v0,
							 | 
						||
| 
								 | 
							
								            // true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform1iv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform1iv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform2f = function (location, v0, v1) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform2f + ',' + location.id + ',' + v0 + ',' + v1,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform2fv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform2fv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform2i = function (location, v0, v1) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform2i + ',' + location.id + ',' + v0 + ',' + v1,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform2iv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform2iv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform3f = function (location, v0, v1, v2) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform3f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform3fv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform3fv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform3i = function (location, v0, v1, v2) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform3i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform3iv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform3iv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform4f = function (location, v0, v1, v2, v3) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform4f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform4fv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform4fv + ',' + location.id + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform4i = function (location, v0, v1, v2, v3) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform4i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniform4iv = function (location, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniform4iv + ',' + location.id + ',' + processArray(value, true),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniformMatrix2fv = function (location, transpose, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniformMatrix2fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniformMatrix3fv = function (location, transpose, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniformMatrix3fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    uniformMatrix4fv = function (location, transpose, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.uniformMatrix4fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    useProgram = function (progarm) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.useProgram + ',' + progarm.id + '',
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    validateProgram = function (program) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.validateProgram + ',' + program.id,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib1f = function (index, v0) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib1f + ',' + index + ',' + v0,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib2f = function (index, v0, v1) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib2f + ',' + index + ',' + v0 + ',' + v1,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib3f = function (index, v0, v1, v2) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib3f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib4f = function (index, v0, v1, v2, v3) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib4f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib1fv = function (index, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib1fv + ',' + index + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib2fv = function (index, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib2fv + ',' + index + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib3fv = function (index, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib3fv + ',' + index + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttrib4fv = function (index, value) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttrib4fv + ',' + index + ',' + processArray(value),
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    vertexAttribPointer = function (index, size, type, normalized, stride, offset) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.vertexAttribPointer + ',' + index + ',' + size + ',' + type + ',' + Number(normalized) + ',' + stride + ',' + offset,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    viewport = function (x, y, width, height) {
							 | 
						||
| 
								 | 
							
								        WebGLRenderingContext.GBridge.callNative(
							 | 
						||
| 
								 | 
							
								            this._canvas.id,
							 | 
						||
| 
								 | 
							
								            GLmethod.viewport + ',' + x + ',' + y + ',' + width + ',' + height,
							 | 
						||
| 
								 | 
							
								            true
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |