@luma.gl/gltools
Version:
WebGL2 API Polyfills for WebGL1 WebGLRenderingContext
161 lines (138 loc) • 4.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WEBGL2_CONTEXT_POLYFILLS = exports.WEBGL2_CONTEXT_OVERRIDES = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _assert = require("../utils/assert");
var _webglChecks = require("../utils/webgl-checks");
var _getParameterPolyfill = require("./get-parameter-polyfill");
var _WEBGL2_CONTEXT_POLYF;
var OES_vertex_array_object = 'OES_vertex_array_object';
var ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';
var WEBGL_draw_buffers = 'WEBGL_draw_buffers';
var EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';
var EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';
var ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';
function getExtensionData(gl, extension) {
return {
webgl2: (0, _webglChecks.isWebGL2)(gl),
ext: gl.getExtension(extension)
};
}
var WEBGL2_CONTEXT_POLYFILLS = (_WEBGL2_CONTEXT_POLYF = {}, (0, _defineProperty2.default)(_WEBGL2_CONTEXT_POLYF, OES_vertex_array_object, {
meta: {
suffix: 'OES'
},
createVertexArray: function createVertexArray() {
(0, _assert.assert)(false, ERR_VAO_NOT_SUPPORTED);
},
deleteVertexArray: function deleteVertexArray() {},
bindVertexArray: function bindVertexArray() {},
isVertexArray: function isVertexArray() {
return false;
}
}), (0, _defineProperty2.default)(_WEBGL2_CONTEXT_POLYF, ANGLE_instanced_arrays, {
meta: {
suffix: 'ANGLE'
},
vertexAttribDivisor: function vertexAttribDivisor(location, divisor) {
(0, _assert.assert)(divisor === 0, 'WebGL instanced rendering not supported');
},
drawElementsInstanced: function drawElementsInstanced() {},
drawArraysInstanced: function drawArraysInstanced() {}
}), (0, _defineProperty2.default)(_WEBGL2_CONTEXT_POLYF, WEBGL_draw_buffers, {
meta: {
suffix: 'WEBGL'
},
drawBuffers: function drawBuffers() {
(0, _assert.assert)(false);
}
}), (0, _defineProperty2.default)(_WEBGL2_CONTEXT_POLYF, EXT_disjoint_timer_query, {
meta: {
suffix: 'EXT'
},
createQuery: function createQuery() {
(0, _assert.assert)(false);
},
deleteQuery: function deleteQuery() {
(0, _assert.assert)(false);
},
beginQuery: function beginQuery() {
(0, _assert.assert)(false);
},
endQuery: function endQuery() {},
getQuery: function getQuery(handle, pname) {
return this.getQueryObject(handle, pname);
},
getQueryParameter: function getQueryParameter(handle, pname) {
return this.getQueryObject(handle, pname);
},
getQueryObject: function getQueryObject() {}
}), _WEBGL2_CONTEXT_POLYF);
exports.WEBGL2_CONTEXT_POLYFILLS = WEBGL2_CONTEXT_POLYFILLS;
var WEBGL2_CONTEXT_OVERRIDES = {
readBuffer: function readBuffer(gl, originalFunc, attachment) {
if ((0, _webglChecks.isWebGL2)(gl)) {
originalFunc(attachment);
} else {}
},
getVertexAttrib: function getVertexAttrib(gl, originalFunc, location, pname) {
var _getExtensionData = getExtensionData(gl, ANGLE_instanced_arrays),
webgl2 = _getExtensionData.webgl2,
ext = _getExtensionData.ext;
var result;
switch (pname) {
case 35069:
result = !webgl2 ? false : undefined;
break;
case 35070:
result = !webgl2 && !ext ? 0 : undefined;
break;
default:
}
return result !== undefined ? result : originalFunc(location, pname);
},
getProgramParameter: function getProgramParameter(gl, originalFunc, program, pname) {
if (!(0, _webglChecks.isWebGL2)(gl)) {
switch (pname) {
case 35967:
return 35981;
case 35971:
return 0;
case 35382:
return 0;
default:
}
}
return originalFunc(program, pname);
},
getInternalformatParameter: function getInternalformatParameter(gl, originalFunc, target, format, pname) {
if (!(0, _webglChecks.isWebGL2)(gl)) {
switch (pname) {
case 32937:
return new Int32Array([0]);
default:
}
}
return gl.getInternalformatParameter(target, format, pname);
},
getTexParameter: function getTexParameter(gl, originalFunc, target, pname) {
switch (pname) {
case 34046:
var extensions = gl.luma.extensions;
var ext = extensions[EXT_texture_filter_anisotropic];
pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;
break;
default:
}
return originalFunc(target, pname);
},
getParameter: _getParameterPolyfill.getParameterPolyfill,
hint: function hint(gl, originalFunc, pname, value) {
return originalFunc(pname, value);
}
};
exports.WEBGL2_CONTEXT_OVERRIDES = WEBGL2_CONTEXT_OVERRIDES;
//# sourceMappingURL=polyfill-table.js.map