mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2024-12-26 11:48:29 +00:00
1699 lines
51 KiB
JavaScript
1699 lines
51 KiB
JavaScript
var GL_COMMAND_ACTIVE_TEXTURE = 0;
|
||
var GL_COMMAND_ATTACH_SHADER = 1;
|
||
var GL_COMMAND_BIND_ATTRIB_LOCATION = 2;
|
||
var GL_COMMAND_BIND_BUFFER = 3;
|
||
var GL_COMMAND_BIND_FRAME_BUFFER = 4;
|
||
var GL_COMMAND_BIND_RENDER_BUFFER = 5;
|
||
var GL_COMMAND_BIND_TEXTURE = 6;
|
||
var GL_COMMAND_BLEND_COLOR = 7;
|
||
var GL_COMMAND_BLEND_EQUATION = 8;
|
||
var GL_COMMAND_BLEND_EQUATION_SEPARATE = 9;
|
||
var GL_COMMAND_BLEND_FUNC = 10;
|
||
var GL_COMMAND_BLEND_FUNC_SEPARATE = 11;
|
||
var GL_COMMAND_BUFFER_DATA = 12;
|
||
var GL_COMMAND_BUFFER_SUB_DATA = 13;
|
||
var GL_COMMAND_CLEAR = 14;
|
||
var GL_COMMAND_CLEAR_COLOR = 15;
|
||
var GL_COMMAND_CLEAR_DEPTH = 16;
|
||
var GL_COMMAND_CLEAR_STENCIL = 17;
|
||
var GL_COMMAND_COLOR_MASK = 18;
|
||
var GL_COMMAND_COMMIT = 19;
|
||
var GL_COMMAND_COMPILE_SHADER = 20;
|
||
var GL_COMMAND_COMPRESSED_TEX_IMAGE_2D = 21;
|
||
var GL_COMMAND_COMPRESSED_TEX_SUB_IMAGE_2D = 22;
|
||
var GL_COMMAND_COPY_TEX_IMAGE_2D = 23;
|
||
var GL_COMMAND_COPY_TEX_SUB_IMAGE_2D = 24;
|
||
var GL_COMMAND_CULL_FACE = 25;
|
||
var GL_COMMAND_DELETE_BUFFER = 26;
|
||
var GL_COMMAND_DELETE_FRAME_BUFFER = 27;
|
||
var GL_COMMAND_DELETE_PROGRAM = 28;
|
||
var GL_COMMAND_DELETE_RENDER_BUFFER = 29;
|
||
var GL_COMMAND_DELETE_SHADER = 30;
|
||
var GL_COMMAND_DELETE_TEXTURE = 31;
|
||
var GL_COMMAND_DEPTH_FUNC = 32;
|
||
var GL_COMMAND_DEPTH_MASK = 33;
|
||
var GL_COMMAND_DEPTH_RANGE = 34;
|
||
var GL_COMMAND_DETACH_SHADER = 35;
|
||
var GL_COMMAND_DISABLE = 36;
|
||
var GL_COMMAND_DISABLE_VERTEX_ATTRIB_ARRAY = 37;
|
||
var GL_COMMAND_DRAW_ARRAYS = 38;
|
||
var GL_COMMAND_DRAW_ELEMENTS = 39;
|
||
var GL_COMMAND_ENABLE = 40;
|
||
var GL_COMMAND_ENABLE_VERTEX_ATTRIB_ARRAY = 41;
|
||
var GL_COMMAND_FINISH = 42;
|
||
var GL_COMMAND_FLUSH = 43;
|
||
var GL_COMMAND_FRAME_BUFFER_RENDER_BUFFER = 44;
|
||
var GL_COMMAND_FRAME_BUFFER_TEXTURE_2D = 45;
|
||
var GL_COMMAND_FRONT_FACE = 46;
|
||
var GL_COMMAND_GENERATE_MIPMAP = 47;
|
||
var GL_COMMAND_HINT = 48;
|
||
var GL_COMMAND_LINE_WIDTH = 49;
|
||
var GL_COMMAND_LINK_PROGRAM = 50;
|
||
var GL_COMMAND_PIXEL_STOREI = 51;
|
||
var GL_COMMAND_POLYGON_OFFSET = 52;
|
||
var GL_COMMAND_RENDER_BUFFER_STORAGE = 53;
|
||
var GL_COMMAND_SAMPLE_COVERAGE = 54;
|
||
var GL_COMMAND_SCISSOR = 55;
|
||
var GL_COMMAND_SHADER_SOURCE = 56;
|
||
var GL_COMMAND_STENCIL_FUNC = 57;
|
||
var GL_COMMAND_STENCIL_FUNC_SEPARATE = 58;
|
||
var GL_COMMAND_STENCIL_MASK = 59;
|
||
var GL_COMMAND_STENCIL_MASK_SEPARATE = 60;
|
||
var GL_COMMAND_STENCIL_OP = 61;
|
||
var GL_COMMAND_STENCIL_OP_SEPARATE = 62;
|
||
var GL_COMMAND_TEX_IMAGE_2D = 63;
|
||
var GL_COMMAND_TEX_PARAMETER_F = 64;
|
||
var GL_COMMAND_TEX_PARAMETER_I = 65;
|
||
var GL_COMMAND_TEX_SUB_IMAGE_2D = 66;
|
||
var GL_COMMAND_UNIFORM_1F = 67;
|
||
var GL_COMMAND_UNIFORM_1FV = 68;
|
||
var GL_COMMAND_UNIFORM_1I = 69;
|
||
var GL_COMMAND_UNIFORM_1IV = 70;
|
||
var GL_COMMAND_UNIFORM_2F = 71;
|
||
var GL_COMMAND_UNIFORM_2FV = 72;
|
||
var GL_COMMAND_UNIFORM_2I = 73;
|
||
var GL_COMMAND_UNIFORM_2IV = 74;
|
||
var GL_COMMAND_UNIFORM_3F = 75;
|
||
var GL_COMMAND_UNIFORM_3FV = 76;
|
||
var GL_COMMAND_UNIFORM_3I = 77;
|
||
var GL_COMMAND_UNIFORM_3IV = 78;
|
||
var GL_COMMAND_UNIFORM_4F = 79;
|
||
var GL_COMMAND_UNIFORM_4FV = 80;
|
||
var GL_COMMAND_UNIFORM_4I = 81;
|
||
var GL_COMMAND_UNIFORM_4IV = 82;
|
||
var GL_COMMAND_UNIFORM_MATRIX_2FV = 83;
|
||
var GL_COMMAND_UNIFORM_MATRIX_3FV = 84;
|
||
var GL_COMMAND_UNIFORM_MATRIX_4FV = 85;
|
||
var GL_COMMAND_USE_PROGRAM = 86;
|
||
var GL_COMMAND_VALIDATE_PROGRAM = 87;
|
||
var GL_COMMAND_VERTEX_ATTRIB_1F = 88;
|
||
var GL_COMMAND_VERTEX_ATTRIB_2F = 89;
|
||
var GL_COMMAND_VERTEX_ATTRIB_3F = 90;
|
||
var GL_COMMAND_VERTEX_ATTRIB_4F = 91;
|
||
var GL_COMMAND_VERTEX_ATTRIB_1FV = 92;
|
||
var GL_COMMAND_VERTEX_ATTRIB_2FV = 93;
|
||
var GL_COMMAND_VERTEX_ATTRIB_3FV = 94;
|
||
var GL_COMMAND_VERTEX_ATTRIB_4FV = 95;
|
||
var GL_COMMAND_VERTEX_ATTRIB_POINTER = 96;
|
||
var GL_COMMAND_VIEW_PORT = 97;
|
||
|
||
const gl = __gl;
|
||
|
||
// _gl save the orignal gl functions.
|
||
var _gl = {};
|
||
for (var k in gl) {
|
||
_gl[k] = gl[k];
|
||
}
|
||
|
||
var total_size = 100000;
|
||
var next_index = 0;
|
||
var buffer_data;
|
||
var commandCount = 0;
|
||
|
||
// Batch GL commands is enabled by default.
|
||
function batchGLCommandsToNative() {
|
||
if (gl._flushCommands) {
|
||
if (isSupportTypeArray()) {
|
||
console.log('Enable batch GL commands optimization!');
|
||
attachMethodOpt();
|
||
buffer_data = new Float32Array(total_size);
|
||
}
|
||
else {
|
||
console.log(`Disable batch GL commands, TypedArray Native API isn't supported!`);
|
||
}
|
||
}
|
||
else {
|
||
console.log(`Disable batch GL commands, _flushCommands isn't binded!`);
|
||
}
|
||
}
|
||
|
||
function disableBatchGLCommandsToNative() {
|
||
// Reset __gl variable to the default one.
|
||
flushCommands();
|
||
for (var k in _gl) {
|
||
__gl[k] = _gl[k];
|
||
}
|
||
console.log('Disable batch GL commands optimization!');
|
||
jsb.disableBatchGLCommandsToNative();
|
||
}
|
||
|
||
function flushCommands() {
|
||
if (next_index > 0) {
|
||
gl._flushCommands(next_index, buffer_data, commandCount);
|
||
next_index = 0;
|
||
commandCount = 0;
|
||
}
|
||
}
|
||
|
||
function activeTextureOpt(texture) {
|
||
// console.log('GLOpt: activeTexture');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_ACTIVE_TEXTURE;
|
||
buffer_data[next_index + 1] = texture;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function attachShaderOpt(program, shader) {
|
||
// console.log('GLOpt: attachShader');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_ATTACH_SHADER;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
buffer_data[next_index + 2] = shader ? shader._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function bindAttribLocationOpt(program, index, name) {
|
||
// console.log('GLOpt: bindAttribLocation');
|
||
flushCommands();
|
||
_gl.bindAttribLocation(program, index, name);
|
||
}
|
||
|
||
function bindBufferOpt(target, buffer) {
|
||
// console.log('GLOpt: bindBuffer: ' + (buffer? buffer._id : null));
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BIND_BUFFER;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = buffer ? buffer._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function bindFramebufferOpt(target, framebuffer) {
|
||
// console.log('GLOpt: bindFramebuffer');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BIND_FRAME_BUFFER;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = framebuffer ? framebuffer._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function bindRenderbufferOpt(target, renderbuffer) {
|
||
// console.log('GLOpt: bindRenderbuffer');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BIND_RENDER_BUFFER;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = renderbuffer ? renderbuffer._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function bindTextureOpt(target, texture) {
|
||
// console.log('GLOpt: bindTexture');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BIND_TEXTURE;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = texture ? texture._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function blendColorOpt(red, green, blue, alpha) {
|
||
// console.log('GLOpt: blendColor');
|
||
if (next_index + 5 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BLEND_COLOR;
|
||
buffer_data[next_index + 1] = red;
|
||
buffer_data[next_index + 2] = green;
|
||
buffer_data[next_index + 3] = blue;
|
||
buffer_data[next_index + 4] = alpha;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function blendEquationOpt(mode) {
|
||
// console.log('GLOpt: blendEquation');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BLEND_EQUATION;
|
||
buffer_data[next_index + 1] = mode;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function blendEquationSeparateOpt(modeRGB, modeAlpha) {
|
||
// console.log('GLOpt: blendEquationSeparate');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BLEND_EQUATION_SEPARATE;
|
||
buffer_data[next_index + 1] = modeRGB;
|
||
buffer_data[next_index + 2] = modeAlpha;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function blendFuncOpt(sfactor, dfactor) {
|
||
// console.log('GLOpt: blendFunc');
|
||
if (next_index + 3 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BLEND_FUNC;
|
||
buffer_data[next_index + 1] = sfactor;
|
||
buffer_data[next_index + 2] = dfactor;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function blendFuncSeparateOpt(srcRGB, dstRGB, srcAlpha, dstAlpha) {
|
||
// console.log('GLOpt: blendFuncSeparate');
|
||
if (next_index + 5 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_BLEND_FUNC_SEPARATE;
|
||
buffer_data[next_index + 1] = srcRGB;
|
||
buffer_data[next_index + 2] = dstRGB;
|
||
buffer_data[next_index + 3] = srcAlpha;
|
||
buffer_data[next_index + 4] = dstAlpha;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function bufferDataOpt(target, data, usage) {
|
||
flushCommands();
|
||
// console.log('GLOpt: bufferData');
|
||
_gl.bufferData(target, data, usage);
|
||
}
|
||
|
||
function bufferSubDataOpt(target, offset, data) {
|
||
flushCommands();
|
||
// console.log('GLOpt: bufferSubData');
|
||
_gl.bufferSubData(target, offset, data);
|
||
}
|
||
|
||
function checkFramebufferStatusOpt(target) {
|
||
flushCommands();
|
||
// console.log('GLOpt: checkFramebufferStatus');
|
||
return _gl.checkFramebufferStatus(target);
|
||
}
|
||
|
||
function clearOpt(mask) {
|
||
// console.log('GLOpt: clear');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_CLEAR;
|
||
buffer_data[next_index + 1] = mask;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function clearColorOpt(red, green, blue, alpha) {
|
||
// console.log('GLOpt: clearColor');
|
||
if (next_index + 5 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_CLEAR_COLOR;
|
||
buffer_data[next_index + 1] = red;
|
||
buffer_data[next_index + 2] = green;
|
||
buffer_data[next_index + 3] = blue;
|
||
buffer_data[next_index + 4] = alpha;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function clearDepthOpt(depth) {
|
||
// console.log('GLOpt: clearDepth');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_CLEAR_DEPTH;
|
||
buffer_data[next_index + 1] = depth;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function clearStencilOpt(s) {
|
||
// console.log('GLOpt: clearStencil');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_CLEAR_STENCIL;
|
||
buffer_data[next_index + 1] = s;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function colorMaskOpt(red, green, blue, alpha) {
|
||
// console.log('GLOpt: colorMask');
|
||
if (next_index + 5 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_COLOR_MASK;
|
||
buffer_data[next_index + 1] = red ? 1 : 0;
|
||
buffer_data[next_index + 2] = green ? 1 : 0;
|
||
buffer_data[next_index + 3] = blue ? 1 : 0;
|
||
buffer_data[next_index + 4] = alpha ? 1 : 0;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function compileShaderOpt(shader) {
|
||
// console.log('GLOpt: compileShader');
|
||
if (next_index + 2 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_COMPILE_SHADER;
|
||
buffer_data[next_index + 1] = shader ? shader._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function compressedTexImage2DOpt(target, level, internalformat, width, height, border, data) {
|
||
// console.log('GLOpt: compressedTexImage2D');
|
||
flushCommands();
|
||
_gl.compressedTexImage2D(target, level, internalformat, width, height, border, data);
|
||
}
|
||
|
||
function compressedTexSubImage2DOpt(target, level, xoffset, yoffset, width, height, format, data) {
|
||
// console.log('GLOpt: compressedTexSubImage2D');
|
||
flushCommands();
|
||
_gl.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data);
|
||
}
|
||
|
||
function copyTexImage2DOpt(target, level, internalformat, x, y, width, height, border) {
|
||
// console.log('GLOpt: copyTexImage2D');
|
||
if (next_index + 9 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_COPY_TEX_IMAGE_2D;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = level;
|
||
buffer_data[next_index + 3] = internalformat;
|
||
buffer_data[next_index + 4] = x;
|
||
buffer_data[next_index + 5] = y;
|
||
buffer_data[next_index + 6] = width;
|
||
buffer_data[next_index + 7] = height;
|
||
buffer_data[next_index + 8] = border;
|
||
next_index += 9;
|
||
++commandCount;
|
||
}
|
||
|
||
function copyTexSubImage2DOpt(target, level, xoffset, yoffset, x, y, width, height) {
|
||
// console.log('GLOpt: copyTexSubImage2D');
|
||
if (next_index + 9 > total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_COPY_TEX_SUB_IMAGE_2D;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = level;
|
||
buffer_data[next_index + 3] = xoffset;
|
||
buffer_data[next_index + 4] = yoffset;
|
||
buffer_data[next_index + 5] = x;
|
||
buffer_data[next_index + 6] = y;
|
||
buffer_data[next_index + 7] = width;
|
||
buffer_data[next_index + 8] = height;
|
||
next_index += 9;
|
||
++commandCount;
|
||
}
|
||
|
||
function createBufferOpt() {
|
||
flushCommands();
|
||
|
||
var ret = _gl.createBuffer();
|
||
// console.log('GLOpt: createBuffer: ' + ret._id);
|
||
return ret;
|
||
}
|
||
|
||
function createFramebufferOpt() {
|
||
flushCommands();
|
||
// console.log('GLOpt: createFramebuffer');
|
||
return _gl.createFramebuffer();
|
||
}
|
||
|
||
function createProgramOpt() {
|
||
flushCommands();
|
||
// console.log('GLOpt: createProgram');
|
||
return _gl.createProgram();
|
||
}
|
||
|
||
function createRenderbufferOpt() {
|
||
flushCommands();
|
||
// console.log('GLOpt: createRenderbuffer');
|
||
return _gl.createRenderbuffer();
|
||
}
|
||
|
||
function createShaderOpt(type) {
|
||
// console.log('GLOpt: createShader');
|
||
flushCommands();
|
||
return _gl.createShader(type);
|
||
}
|
||
|
||
function createTextureOpt() {
|
||
flushCommands();
|
||
// console.log('GLOpt: createTexture');
|
||
return _gl.createTexture();
|
||
}
|
||
|
||
function cullFaceOpt(mode) {
|
||
// console.log('GLOpt: cullFace');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_CULL_FACE;
|
||
buffer_data[next_index + 1] = mode;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteBufferOpt(buffer) {
|
||
// console.log('GLOpt: deleteBuffer');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_BUFFER;
|
||
buffer_data[next_index + 1] = buffer ? buffer._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteFramebufferOpt(framebuffer) {
|
||
// console.log('GLOpt: deleteFramebuffer');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_FRAME_BUFFER;
|
||
buffer_data[next_index + 1] = framebuffer ? framebuffer._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteProgramOpt(program) {
|
||
// console.log('GLOpt: deleteProgram');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_PROGRAM;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteRenderbufferOpt(renderbuffer) {
|
||
// console.log('GLOpt: deleteRenderbuffer');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_RENDER_BUFFER;
|
||
buffer_data[next_index + 1] = renderbuffer ? renderbuffer._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteShaderOpt(shader) {
|
||
// console.log('GLOpt: deleteShader');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_SHADER;
|
||
buffer_data[next_index + 1] = shader ? shader._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function deleteTextureOpt(texture) {
|
||
// console.log('GLOpt: deleteTexture');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DELETE_TEXTURE;
|
||
buffer_data[next_index + 1] = texture ? texture._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function depthFuncOpt(func) {
|
||
// console.log('GLOpt: depthFunc');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DEPTH_FUNC;
|
||
buffer_data[next_index + 1] = func;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function depthMaskOpt(flag) {
|
||
// console.log('GLOpt: depthMask');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DEPTH_MASK;
|
||
buffer_data[next_index + 1] = flag ? 1 : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function depthRangeOpt(zNear, zFar) {
|
||
// console.log('GLOpt: depthRange');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DEPTH_RANGE;
|
||
buffer_data[next_index + 1] = zNear;
|
||
buffer_data[next_index + 2] = zFar;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function detachShaderOpt(program, shader) {
|
||
// console.log('GLOpt: detachShader');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DETACH_SHADER;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
buffer_data[next_index + 2] = shader ? shader._id : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function disableOpt(cap) {
|
||
// console.log('GLOpt: disable');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DISABLE;
|
||
buffer_data[next_index + 1] = cap;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function disableVertexAttribArrayOpt(index) {
|
||
// console.log('GLOpt: disableVertexAttribArray');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DISABLE_VERTEX_ATTRIB_ARRAY;
|
||
buffer_data[next_index + 1] = index;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function drawArraysOpt(mode, first, count) {
|
||
// console.log('GLOpt: drawArrays');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DRAW_ARRAYS;
|
||
buffer_data[next_index + 1] = mode;
|
||
buffer_data[next_index + 2] = first;
|
||
buffer_data[next_index + 3] = count;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function drawElementsOpt(mode, count, type, offset) {
|
||
// console.log('GLOpt: drawElements');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_DRAW_ELEMENTS;
|
||
buffer_data[next_index + 1] = mode;
|
||
buffer_data[next_index + 2] = count;
|
||
buffer_data[next_index + 3] = type;
|
||
buffer_data[next_index + 4] = offset ? offset : 0;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function enableOpt(cap) {
|
||
// console.log('GLOpt: enable');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_ENABLE;
|
||
buffer_data[next_index + 1] = cap;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function enableVertexAttribArrayOpt(index) {
|
||
// console.log('GLOpt: enableVertexAttribArray');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_ENABLE_VERTEX_ATTRIB_ARRAY;
|
||
buffer_data[next_index + 1] = index;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function finishOpt() {
|
||
// console.log('GLOpt: finish');
|
||
if (next_index + 1 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_FINISH;
|
||
next_index += 1;
|
||
++commandCount;
|
||
}
|
||
|
||
function flushOpt() {
|
||
// console.log('GLOpt: flush');
|
||
if (next_index + 1 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_FLUSH;
|
||
next_index += 1;
|
||
++commandCount;
|
||
}
|
||
|
||
function framebufferRenderbufferOpt(target, attachment, renderbuffertarget, renderbuffer) {
|
||
// console.log('GLOpt: framebufferRenderbuffer');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_FRAME_BUFFER_RENDER_BUFFER;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = attachment;
|
||
buffer_data[next_index + 3] = renderbuffertarget;
|
||
buffer_data[next_index + 4] = renderbuffer ? renderbuffer._id : 0;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function framebufferTexture2DOpt(target, attachment, textarget, texture, level) {
|
||
// console.log('GLOpt: framebufferTexture2D');
|
||
if (next_index + 6 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_FRAME_BUFFER_TEXTURE_2D;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = attachment;
|
||
buffer_data[next_index + 3] = textarget;
|
||
buffer_data[next_index + 4] = texture ? texture._id : 0;
|
||
buffer_data[next_index + 5] = level;
|
||
next_index += 6;
|
||
++commandCount;
|
||
}
|
||
|
||
function frontFaceOpt(mode) {
|
||
// console.log('GLOpt: frontFace');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_FRONT_FACE;
|
||
buffer_data[next_index + 1] = mode;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function generateMipmapOpt(target) {
|
||
// console.log('GLOpt: generateMipmap');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_GENERATE_MIPMAP;
|
||
buffer_data[next_index + 1] = target;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function getActiveAttribOpt(program, index) {
|
||
// console.log('GLOpt: getActiveAttrib');
|
||
flushCommands();
|
||
return _gl.getActiveAttrib(program, index);
|
||
}
|
||
|
||
function getActiveUniformOpt(program, index) {
|
||
// console.log('GLOpt: getActiveUniform');
|
||
flushCommands();
|
||
return _gl.getActiveUniform(program, index);
|
||
}
|
||
|
||
function getAttachedShadersOpt(program) {
|
||
// console.log('GLOpt: getAttachedShaders');
|
||
flushCommands();
|
||
return _gl.getAttachedShaders(program);
|
||
}
|
||
|
||
function getAttribLocationOpt(program, name) {
|
||
// console.log('GLOpt: getAttribLocation');
|
||
flushCommands();
|
||
return _gl.getAttribLocation(program, name);
|
||
}
|
||
|
||
function getBufferParameterOpt(target, pname) {
|
||
// console.log('GLOpt: getBufferParameter');
|
||
flushCommands();
|
||
return _gl.getBufferParameter(target, pname);
|
||
}
|
||
|
||
function getParameterOpt(pname) {
|
||
// console.log('GLOpt: getParameter');
|
||
flushCommands();
|
||
return _gl.getParameter(pname);
|
||
}
|
||
|
||
function getErrorOpt() {
|
||
// console.log('GLOpt: getError');
|
||
flushCommands();
|
||
return _gl.getError();
|
||
}
|
||
|
||
function getFramebufferAttachmentParameterOpt(target, attachment, pname) {
|
||
// console.log('GLOpt: getFramebufferAttachmentParameter');
|
||
flushCommands();
|
||
return _gl.getFramebufferAttachmentParameter(target, attachment, pname);
|
||
}
|
||
|
||
function getProgramParameterOpt(program, pname) {
|
||
// console.log('GLOpt: getProgramParameter');
|
||
flushCommands();
|
||
return _gl.getProgramParameter(program, pname);
|
||
}
|
||
|
||
function getProgramInfoLogOpt(program) {
|
||
// console.log('GLOpt: getProgramInfoLog');
|
||
flushCommands();
|
||
return _gl.getProgramInfoLog(program);
|
||
}
|
||
|
||
function getRenderbufferParameterOpt(target, pname) {
|
||
// console.log('GLOpt: getRenderbufferParameter');
|
||
flushCommands();
|
||
return _gl.getRenderbufferParameter(target, pname);
|
||
}
|
||
|
||
function getShaderParameterOpt(shader, pname) {
|
||
// console.log('GLOpt: getShaderParameter');
|
||
flushCommands();
|
||
return _gl.getShaderParameter(shader, pname);
|
||
}
|
||
|
||
function getShaderPrecisionFormatOpt(shadertype, precisiontype) {
|
||
// console.log('GLOpt: getShaderPrecisionFormat');
|
||
flushCommands();
|
||
return _gl.getShaderPrecisionFormat(shadertype, precisiontype);
|
||
}
|
||
|
||
function getShaderInfoLogOpt(shader) {
|
||
// console.log('GLOpt: getShaderInfoLog');
|
||
flushCommands();
|
||
return _gl.getShaderInfoLog(shader);
|
||
}
|
||
|
||
function getShaderSourceOpt(shader) {
|
||
// console.log('GLOpt: getShaderSource');
|
||
flushCommands();
|
||
return _gl.getShaderSource(shader);
|
||
}
|
||
|
||
function getTexParameterOpt(target, pname) {
|
||
// console.log('GLOpt: getTexParameter');
|
||
flushCommands();
|
||
return _gl.getTexParameter(target, pname);
|
||
}
|
||
|
||
function getUniformOpt(program, location) {
|
||
// console.log('GLOpt: getUniform');
|
||
flushCommands();
|
||
return _gl.getUniform(program, location);
|
||
}
|
||
|
||
function getUniformLocationOpt(program, name) {
|
||
// console.log('GLOpt: getUniformLocation');
|
||
flushCommands();
|
||
return _gl.getUniformLocation(program, name);
|
||
}
|
||
|
||
function getVertexAttribOpt(index, pname) {
|
||
// console.log('GLOpt: getVertexAttrib');
|
||
flushCommands();
|
||
return _gl.getVertexAttrib(index, pname);
|
||
}
|
||
|
||
function getVertexAttribOffsetOpt(index, pname) {
|
||
// console.log('GLOpt: getVertexAttribOffset');
|
||
flushCommands();
|
||
return _gl.getVertexAttribOffset(index, pname);
|
||
}
|
||
|
||
function hintOpt(target, mode) {
|
||
// console.log('GLOpt: hint');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_HINT;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = mode;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function isBufferOpt(buffer) {
|
||
// console.log('GLOpt: isBuffer');
|
||
flushCommands();
|
||
return _gl.isBuffer(buffer);
|
||
}
|
||
|
||
function isEnabledOpt(cap) {
|
||
// console.log('GLOpt: isEnabled');
|
||
flushCommands();
|
||
return _gl.isEnabled(cap);
|
||
}
|
||
|
||
function isFramebufferOpt(framebuffer) {
|
||
// console.log('GLOpt: isFramebuffer');
|
||
flushCommands();
|
||
return _gl.isFramebuffer(framebuffer);
|
||
}
|
||
|
||
function isProgramOpt(program) {
|
||
// console.log('GLOpt: isProgram');
|
||
flushCommands();
|
||
return _gl.isProgram(program);
|
||
}
|
||
|
||
function isRenderbufferOpt(renderbuffer) {
|
||
// console.log('GLOpt: isRenderbuffer');
|
||
flushCommands();
|
||
return _gl.isRenderbuffer(renderbuffer);
|
||
}
|
||
|
||
function isShaderOpt(shader) {
|
||
// console.log('GLOpt: isShader');
|
||
flushCommands();
|
||
return _gl.isShader(shader);
|
||
}
|
||
|
||
function isTextureOpt(texture) {
|
||
// console.log('GLOpt: isTexture');
|
||
flushCommands();
|
||
return _gl.isTexture(texture);
|
||
}
|
||
|
||
function lineWidthOpt(width) {
|
||
// console.log('GLOpt: lineWidth');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_LINE_WIDTH;
|
||
buffer_data[next_index + 1] = width;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function linkProgramOpt(program) {
|
||
// console.log('GLOpt: linkProgram');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_LINK_PROGRAM;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function pixelStoreiOpt(pname, param) {
|
||
// console.log('GLOpt: pixelStorei');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_PIXEL_STOREI;
|
||
buffer_data[next_index + 1] = pname;
|
||
buffer_data[next_index + 2] = param;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function polygonOffsetOpt(factor, units) {
|
||
// console.log('GLOpt: polygonOffset');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_POLYGON_OFFSET;
|
||
buffer_data[next_index + 1] = factor;
|
||
buffer_data[next_index + 2] = units;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function readPixelsOpt(x, y, width, height, format, type, pixels) {
|
||
// console.log('GLOpt: readPixels');
|
||
flushCommands();
|
||
_gl.readPixels(x, y, width, height, format, type, pixels);
|
||
}
|
||
|
||
function renderbufferStorageOpt(target, internalFormat, width, height) {
|
||
// console.log('GLOpt: renderbufferStorage');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_RENDER_BUFFER_STORAGE;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = internalFormat;
|
||
buffer_data[next_index + 3] = width;
|
||
buffer_data[next_index + 4] = height;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function sampleCoverageOpt(value, invert) {
|
||
// console.log('GLOpt: sampleCoverage');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_SAMPLE_COVERAGE;
|
||
buffer_data[next_index + 1] = value;
|
||
buffer_data[next_index + 2] = invert ? 1 : 0;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function scissorOpt(x, y, width, height) {
|
||
// console.log('GLOpt: scissor');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_SCISSOR;
|
||
buffer_data[next_index + 1] = x;
|
||
buffer_data[next_index + 2] = y;
|
||
buffer_data[next_index + 3] = width;
|
||
buffer_data[next_index + 4] = height;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function shaderSourceOpt(shader, source) {
|
||
// console.log('GLOpt: shaderSource');
|
||
flushCommands();
|
||
_gl.shaderSource(shader, source);
|
||
}
|
||
|
||
function stencilFuncOpt(func, ref, mask) {
|
||
// console.log('GLOpt: stencilFunc');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_FUNC;
|
||
buffer_data[next_index + 1] = func;
|
||
buffer_data[next_index + 2] = ref;
|
||
buffer_data[next_index + 3] = mask;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function stencilFuncSeparateOpt(face, func, ref, mask) {
|
||
// console.log('GLOpt: stencilFuncSeparate');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_FUNC_SEPARATE;
|
||
buffer_data[next_index + 1] = face;
|
||
buffer_data[next_index + 2] = func;
|
||
buffer_data[next_index + 3] = ref;
|
||
buffer_data[next_index + 4] = mask;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function stencilMaskOpt(mask) {
|
||
// console.log('GLOpt: stencilMask');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_MASK;
|
||
buffer_data[next_index + 1] = mask;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function stencilMaskSeparateOpt(face, mask) {
|
||
// console.log('GLOpt: stencilMaskSeparate');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_MASK_SEPARATE;
|
||
buffer_data[next_index + 1] = face;
|
||
buffer_data[next_index + 2] = mask;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function stencilOpOpt(fail, zfail, zpass) {
|
||
// console.log('GLOpt: stencilOp');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_OP;
|
||
buffer_data[next_index + 1] = fail;
|
||
buffer_data[next_index + 2] = zfail;
|
||
buffer_data[next_index + 3] = zpass;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function stencilOpSeparateOpt(face, fail, zfail, zpass) {
|
||
// console.log('GLOpt: stencilOpSeparate');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_STENCIL_OP_SEPARATE;
|
||
buffer_data[next_index + 1] = face;
|
||
buffer_data[next_index + 2] = fail;
|
||
buffer_data[next_index + 3] = zfail;
|
||
buffer_data[next_index + 4] = zpass;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function texImage2DOpt() {
|
||
flushCommands();
|
||
// console.log('GLOpt: texImage2D');
|
||
var argCount = arguments.length;
|
||
if (argCount === 6) {
|
||
_gl.texImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
|
||
}
|
||
else if (argCount === 9) {
|
||
_gl.texImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]);
|
||
}
|
||
else {
|
||
console.log(`texImage2DOpt: Wrong number of arguments, expected 6 or 9 but got ${argCount}`);
|
||
}
|
||
}
|
||
|
||
function texParameterfOpt(target, pname, param) {
|
||
// console.log('GLOpt: texParameterf');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_TEX_PARAMETER_F;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = pname;
|
||
buffer_data[next_index + 3] = param;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function texParameteriOpt(target, pname, param) {
|
||
// console.log('GLOpt: texParameteri');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_TEX_PARAMETER_I;
|
||
buffer_data[next_index + 1] = target;
|
||
buffer_data[next_index + 2] = pname;
|
||
buffer_data[next_index + 3] = param;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function texSubImage2DOpt(target, level, xoffset, yoffset, width, height, format, type, pixels) {
|
||
flushCommands();
|
||
// console.log('GLOpt: texSubImage2D');
|
||
var argCount = arguments.length;
|
||
if (argCount === 7) {
|
||
_gl.texSubImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
|
||
}
|
||
else if (argCount === 9) {
|
||
_gl.texSubImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]);
|
||
}
|
||
else {
|
||
console.log(`texSubImage2DOpt: Wrong number of arguments, expected 7 or 9 but got ${argCount}`);
|
||
}
|
||
}
|
||
|
||
function uniform1fOpt(location, x) {
|
||
// console.log('GLOpt: uniform1f');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_1F;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform2fOpt(location, x, y) {
|
||
// console.log('GLOpt: uniform2f');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_2F;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform3fOpt(location, x, y, z) {
|
||
// console.log('GLOpt: uniform3f');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_3F;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform4fOpt(location, x, y, z, w) {
|
||
// console.log('GLOpt: uniform4f');
|
||
if (next_index + 6 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_4F;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
buffer_data[next_index + 5] = w;
|
||
next_index += 6;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform1iOpt(location, x) {
|
||
// console.log('GLOpt: uniform1i');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_1I;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform2iOpt(location, x, y) {
|
||
// console.log('GLOpt: uniform2i');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_2I;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform3iOpt(location, x, y, z) {
|
||
// console.log('GLOpt: uniform3i');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_3I;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform4iOpt(location, x, y, z, w) {
|
||
// console.log('GLOpt: uniform4i');
|
||
if (next_index + 6 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_4I;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
buffer_data[next_index + 5] = w;
|
||
next_index += 6;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform1fvOpt(location, value) {
|
||
// console.log('GLOpt: uniform1fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_1FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform2fvOpt(location, value) {
|
||
// console.log('GLOpt: uniform2fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_2FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform3fvOpt(location, value) {
|
||
// console.log('GLOpt: uniform3fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_3FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform4fvOpt(location, value) {
|
||
// console.log('GLOpt: uniform4fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_4FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform1ivOpt(location, value) {
|
||
// console.log('GLOpt: uniform1iv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_1IV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform2ivOpt(location, value) {
|
||
// console.log('GLOpt: uniform2iv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_2IV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform3ivOpt(location, value) {
|
||
// console.log('GLOpt: uniform3iv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_3IV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniform4ivOpt(location, value) {
|
||
// console.log('GLOpt: uniform4iv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_4IV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniformMatrix2fvOpt(location, transpose, value) {
|
||
// console.log('GLOpt: uniformMatrix2fv');
|
||
if (next_index + 4 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_2FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = transpose;
|
||
buffer_data[next_index + 3] = value.length;
|
||
buffer_data.set(value, next_index + 4);
|
||
next_index += 4 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniformMatrix3fvOpt(location, transpose, value) {
|
||
// console.log('GLOpt: uniformMatrix3fv');
|
||
if (next_index + 4 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_3FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = transpose;
|
||
buffer_data[next_index + 3] = value.length;
|
||
buffer_data.set(value, next_index + 4);
|
||
next_index += 4 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function uniformMatrix4fvOpt(location, transpose, value) {
|
||
// console.log('GLOpt: uniformMatrix4fv');
|
||
if (next_index + 4 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_4FV;
|
||
buffer_data[next_index + 1] = location;
|
||
buffer_data[next_index + 2] = transpose;
|
||
buffer_data[next_index + 3] = value.length;
|
||
buffer_data.set(value, next_index + 4);
|
||
next_index += 4 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function useProgramOpt(program) {
|
||
// console.log('GLOpt: useProgram');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_USE_PROGRAM;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function validateProgramOpt(program) {
|
||
// console.log('GLOpt: validateProgram');
|
||
if (next_index + 2 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VALIDATE_PROGRAM;
|
||
buffer_data[next_index + 1] = program ? program._id : 0;
|
||
next_index += 2;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib1fOpt(index, x) {
|
||
// console.log('GLOpt: vertexAttrib1f');
|
||
if (next_index + 3 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_1F;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = x;
|
||
next_index += 3;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib2fOpt(index, x, y) {
|
||
// console.log('GLOpt: vertexAttrib2f');
|
||
if (next_index + 4 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_2F;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
next_index += 4;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib3fOpt(index, x, y, z) {
|
||
// console.log('GLOpt: vertexAttrib3f');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_3F;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib4fOpt(index, x, y, z, w) {
|
||
// console.log('GLOpt: vertexAttrib4f');
|
||
if (next_index + 6 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_4F;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = x;
|
||
buffer_data[next_index + 3] = y;
|
||
buffer_data[next_index + 4] = z;
|
||
buffer_data[next_index + 5] = w;
|
||
next_index += 6;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib1fvOpt(index, value) {
|
||
// console.log('GLOpt: vertexAttrib1fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_1FV;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib2fvOpt(index, value) {
|
||
// console.log('GLOpt: vertexAttrib2fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_2FV;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib3fvOpt(index, value) {
|
||
// console.log('GLOpt: vertexAttrib3fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_3FV;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttrib4fvOpt(index, value) {
|
||
// console.log('GLOpt: vertexAttrib4fv');
|
||
if (next_index + 3 + value.length >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_4FV;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = value.length;
|
||
buffer_data.set(value, next_index + 3);
|
||
next_index += 3 + value.length;
|
||
++commandCount;
|
||
}
|
||
|
||
function vertexAttribPointerOpt(index, size, type, normalized, stride, offset) {
|
||
// console.log('GLOpt: vertexAttribPointer');
|
||
if (next_index + 7 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_POINTER;
|
||
buffer_data[next_index + 1] = index;
|
||
buffer_data[next_index + 2] = size;
|
||
buffer_data[next_index + 3] = type;
|
||
buffer_data[next_index + 4] = normalized ? 1 : 0;
|
||
buffer_data[next_index + 5] = stride;
|
||
buffer_data[next_index + 6] = offset;
|
||
next_index += 7;
|
||
++commandCount;
|
||
}
|
||
|
||
function viewportOpt(x, y, width, height) {
|
||
// console.log('GLOpt: viewport');
|
||
if (next_index + 5 >= total_size) {
|
||
flushCommands();
|
||
}
|
||
buffer_data[next_index] = GL_COMMAND_VIEW_PORT;
|
||
buffer_data[next_index + 1] = x;
|
||
buffer_data[next_index + 2] = y;
|
||
buffer_data[next_index + 3] = width;
|
||
buffer_data[next_index + 4] = height;
|
||
next_index += 5;
|
||
++commandCount;
|
||
}
|
||
|
||
function isSupportTypeArray() {
|
||
//FIXME:
|
||
// if (GameStatusInfo.platform == 'android') {
|
||
return true;
|
||
// }
|
||
// var info = BK.Director.queryDeviceInfo();
|
||
// var vers = info.version.split('.');
|
||
// if (info.platform == 'ios' && Number(vers[0]) >= 10) {
|
||
// return true;
|
||
// }
|
||
// return false;
|
||
}
|
||
|
||
function attachMethodOpt() {
|
||
gl.activeTexture = activeTextureOpt;
|
||
gl.attachShader = attachShaderOpt;
|
||
gl.bindAttribLocation = bindAttribLocationOpt;
|
||
gl.bindBuffer = bindBufferOpt;
|
||
gl.bindFramebuffer = bindFramebufferOpt;
|
||
gl.bindRenderbuffer = bindRenderbufferOpt;
|
||
gl.bindTexture = bindTextureOpt;
|
||
gl.blendColor = blendColorOpt;
|
||
gl.blendEquation = blendEquationOpt;
|
||
gl.blendEquationSeparate = blendEquationSeparateOpt;
|
||
gl.blendFunc = blendFuncOpt;
|
||
gl.blendFuncSeparate = blendFuncSeparateOpt;
|
||
gl.bufferData = bufferDataOpt;
|
||
gl.bufferSubData = bufferSubDataOpt;
|
||
gl.checkFramebufferStatus = checkFramebufferStatusOpt;
|
||
gl.clear = clearOpt;
|
||
gl.clearColor = clearColorOpt;
|
||
gl.clearDepth = clearDepthOpt;
|
||
gl.clearStencil = clearStencilOpt;
|
||
gl.colorMask = colorMaskOpt;
|
||
gl.compileShader = compileShaderOpt;
|
||
gl.compressedTexImage2D = compressedTexImage2DOpt;
|
||
gl.compressedTexSubImage2D = compressedTexSubImage2DOpt;
|
||
gl.copyTexImage2D = copyTexImage2DOpt;
|
||
gl.copyTexSubImage2D = copyTexSubImage2DOpt;
|
||
gl.createBuffer = createBufferOpt;
|
||
gl.createFramebuffer = createFramebufferOpt;
|
||
gl.createProgram = createProgramOpt;
|
||
gl.createRenderbuffer = createRenderbufferOpt;
|
||
gl.createShader = createShaderOpt;
|
||
gl.createTexture = createTextureOpt;
|
||
gl.cullFace = cullFaceOpt;
|
||
gl.deleteBuffer = deleteBufferOpt;
|
||
gl.deleteFramebuffer = deleteFramebufferOpt;
|
||
gl.deleteProgram = deleteProgramOpt;
|
||
gl.deleteRenderbuffer = deleteRenderbufferOpt;
|
||
gl.deleteShader = deleteShaderOpt;
|
||
gl.deleteTexture = deleteTextureOpt;
|
||
gl.depthFunc = depthFuncOpt;
|
||
gl.depthMask = depthMaskOpt;
|
||
gl.depthRange = depthRangeOpt;
|
||
gl.detachShader = detachShaderOpt;
|
||
gl.disable = disableOpt;
|
||
gl.disableVertexAttribArray = disableVertexAttribArrayOpt;
|
||
gl.drawArrays = drawArraysOpt;
|
||
gl.drawElements = drawElementsOpt;
|
||
gl.enable = enableOpt;
|
||
gl.enableVertexAttribArray = enableVertexAttribArrayOpt;
|
||
gl.finish = finishOpt;
|
||
gl.flush = flushOpt;
|
||
gl.framebufferRenderbuffer = framebufferRenderbufferOpt;
|
||
gl.framebufferTexture2D = framebufferTexture2DOpt;
|
||
gl.frontFace = frontFaceOpt;
|
||
gl.generateMipmap = generateMipmapOpt;
|
||
gl.getActiveAttrib = getActiveAttribOpt;
|
||
gl.getActiveUniform = getActiveUniformOpt;
|
||
gl.getAttachedShaders = getAttachedShadersOpt;
|
||
gl.getAttribLocation = getAttribLocationOpt;
|
||
gl.getBufferParameter = getBufferParameterOpt;
|
||
gl.getParameter = getParameterOpt;
|
||
gl.getError = getErrorOpt;
|
||
gl.getFramebufferAttachmentParameter = getFramebufferAttachmentParameterOpt;
|
||
gl.getProgramParameter = getProgramParameterOpt;
|
||
gl.getProgramInfoLog = getProgramInfoLogOpt;
|
||
gl.getRenderbufferParameter = getRenderbufferParameterOpt;
|
||
gl.getShaderParameter = getShaderParameterOpt;
|
||
gl.getShaderPrecisionFormat = getShaderPrecisionFormatOpt;
|
||
gl.getShaderInfoLog = getShaderInfoLogOpt;
|
||
gl.getShaderSource = getShaderSourceOpt;
|
||
gl.getTexParameter = getTexParameterOpt;
|
||
gl.getUniform = getUniformOpt;
|
||
gl.getUniformLocation = getUniformLocationOpt;
|
||
gl.getVertexAttrib = getVertexAttribOpt;
|
||
gl.getVertexAttribOffset = getVertexAttribOffsetOpt;
|
||
gl.hint = hintOpt;
|
||
gl.isBuffer = isBufferOpt;
|
||
gl.isEnabled = isEnabledOpt;
|
||
gl.isFramebuffer = isFramebufferOpt;
|
||
gl.isProgram = isProgramOpt;
|
||
gl.isRenderbuffer = isRenderbufferOpt;
|
||
gl.isShader = isShaderOpt;
|
||
gl.isTexture = isTextureOpt;
|
||
gl.lineWidth = lineWidthOpt;
|
||
gl.linkProgram = linkProgramOpt;
|
||
gl.pixelStorei = pixelStoreiOpt;
|
||
gl.polygonOffset = polygonOffsetOpt;
|
||
gl.readPixels = readPixelsOpt;
|
||
gl.renderbufferStorage = renderbufferStorageOpt;
|
||
gl.sampleCoverage = sampleCoverageOpt;
|
||
gl.scissor = scissorOpt;
|
||
gl.shaderSource = shaderSourceOpt;
|
||
gl.stencilFunc = stencilFuncOpt;
|
||
gl.stencilFuncSeparate = stencilFuncSeparateOpt;
|
||
gl.stencilMask = stencilMaskOpt;
|
||
gl.stencilMaskSeparate = stencilMaskSeparateOpt;
|
||
gl.stencilOp = stencilOpOpt;
|
||
gl.stencilOpSeparate = stencilOpSeparateOpt;
|
||
gl.texImage2D = texImage2DOpt;
|
||
gl.texParameterf = texParameterfOpt;
|
||
gl.texParameteri = texParameteriOpt;
|
||
gl.texSubImage2D = texSubImage2DOpt;
|
||
gl.uniform1f = uniform1fOpt;
|
||
gl.uniform2f = uniform2fOpt;
|
||
gl.uniform3f = uniform3fOpt;
|
||
gl.uniform4f = uniform4fOpt;
|
||
gl.uniform1i = uniform1iOpt;
|
||
gl.uniform2i = uniform2iOpt;
|
||
gl.uniform3i = uniform3iOpt;
|
||
gl.uniform4i = uniform4iOpt;
|
||
gl.uniform1fv = uniform1fvOpt;
|
||
gl.uniform2fv = uniform2fvOpt;
|
||
gl.uniform3fv = uniform3fvOpt;
|
||
gl.uniform4fv = uniform4fvOpt;
|
||
gl.uniform1iv = uniform1ivOpt;
|
||
gl.uniform2iv = uniform2ivOpt;
|
||
gl.uniform3iv = uniform3ivOpt;
|
||
gl.uniform4iv = uniform4ivOpt;
|
||
gl.uniformMatrix2fv = uniformMatrix2fvOpt;
|
||
gl.uniformMatrix3fv = uniformMatrix3fvOpt;
|
||
gl.uniformMatrix4fv = uniformMatrix4fvOpt;
|
||
gl.useProgram = useProgramOpt;
|
||
gl.validateProgram = validateProgramOpt;
|
||
gl.vertexAttrib1f = vertexAttrib1fOpt;
|
||
gl.vertexAttrib2f = vertexAttrib2fOpt;
|
||
gl.vertexAttrib3f = vertexAttrib3fOpt;
|
||
gl.vertexAttrib4f = vertexAttrib4fOpt;
|
||
gl.vertexAttrib1fv = vertexAttrib1fvOpt;
|
||
gl.vertexAttrib2fv = vertexAttrib2fvOpt;
|
||
gl.vertexAttrib3fv = vertexAttrib3fvOpt;
|
||
gl.vertexAttrib4fv = vertexAttrib4fvOpt;
|
||
gl.vertexAttribPointer = vertexAttribPointerOpt;
|
||
gl.viewport = viewportOpt;
|
||
}
|
||
|
||
batchGLCommandsToNative();
|
||
|
||
module.exports = {
|
||
disableBatchGLCommandsToNative: disableBatchGLCommandsToNative,
|
||
flushCommands: flushCommands
|
||
} |