type glT;type programT;type shaderT;type bufferT;
let _DEPTH_BUFFER_BIT: int;let _STENCIL_BUFFER_BIT: int;let _COLOR_BUFFER_BIT: int;let _POINTS: int;let _LINES: int;let _LINE_LOOP: int;let _LINE_STRIP: int;let _TRIANGLES: int;let _TRIANGLE_STRIP: int;let _TRIANGLE_FAN: int;let _CULL_FACE: int;let _BLEND: int;let _DITHER: int;let _STENCIL_TEST: int;let _DEPTH_TEST: int;let _SCISSOR_TEST: int;let _POLYGON_OFFSET_FILL: int;let _SAMPLE_ALPHA_TO_COVERAGE: int;let _SAMPLE_COVERAGE: int;let _ZERO: int;let _ONE: int;let _SRC_COLOR: int;let _ONE_MINUS_SRC_COLOR: int;let _SRC_ALPHA: int;let _ONE_MINUS_SRC_ALPHA: int;let _DST_ALPHA: int;let _ONE_MINUS_DST_ALPHA: int;let _BYTE: int;let _UNSIGNED_BYTE: int;let _SHORT: int;let _UNSIGNED_SHORT: int;let _INT: int;let _UNSIGNED_INT: int;let _FLOAT: int;let _FRONT: int;let _BACK: int;let _FRONT_AND_BACK: int;let _FRAGMENT_SHADER: int;let _VERTEX_SHADER: int;let _ARRAY_BUFFER: int;let _ELEMENT_ARRAY_BUFFER: int;let _ARRAY_BUFFER_BINDING: int;let _ELEMENT_ARRAY_BUFFER_BINDING: int;let _STREAM_DRAW: int;let _STATIC_DRAW: int;let _DYNAMIC_DRAW: int;
let clear: glT => int => unit;let clearColor: glT => float => float => float => float => unit;let enable: glT => int => unit;let disable: glT => int => unit;let blendFunc: glT => int => int => unit;let cullFace: glT => int => unit;let createBuffer: glT => bufferT;let deleteBuffer: glT => bufferT => unit;let bindBuffer: glT => int => bufferT => unit;let bufferData: glT => int => Js.Typed_array.Uint16Array.t => int => unit;let bufferFloatData: glT => int => Js.Typed_array.Float32Array.t => int => unit;let createProgram: glT => programT;let linkProgram: glT => programT => unit;let useProgram: glT => programT => unit;let getProgramInfoLog: glT => programT => string;let bindAttribLocation: glT => programT => int => string => unit;let createShader: glT => int => shaderT;let shaderSource: glT => shaderT => string => unit;let compileShader: glT => shaderT => unit;let attachShader: glT => programT => shaderT => unit;let getShaderInfoLog: glT => shaderT => string;let drawElements: glT => int => int => int => int => unit;let enableVertexAttribArray: glT => int => unit;let vertexAttribPointer: glT => int => int => int => bool => int => int => unit;let getAttribLocation: glT => programT => string => int;let drawArrays: glT => int => int => int => unit;