UNPKG

vislite

Version:

灵活、快速、简单的数据可视化交互式跨端前端库

56 lines (54 loc) 2.44 kB
var initTexture = function (painter, type, unit) { var texture = painter.createTexture(); painter.activeTexture(painter['TEXTURE' + unit]); painter.bindTexture(type, texture); return texture; }; var linkImage = function (painter, type, level, format, textureType, image) { painter.texImage2D(type, level, format, format, textureType, image); }; var linkCube = function (painter, type, level, format, textureType, images, width, height, texture) { var types = [ painter.TEXTURE_CUBE_MAP_POSITIVE_X, painter.TEXTURE_CUBE_MAP_NEGATIVE_X, painter.TEXTURE_CUBE_MAP_POSITIVE_Y, painter.TEXTURE_CUBE_MAP_NEGATIVE_Y, painter.TEXTURE_CUBE_MAP_POSITIVE_Z, painter.TEXTURE_CUBE_MAP_NEGATIVE_Z ]; var target; for (var i = 0; i < types.length; i++) { if (images[i]) { target = types[i]; painter.texImage2D(target, level, format, width, height, 0, format, textureType, null); painter.bindTexture(type, texture); painter.texImage2D(target, level, format, format, textureType, images[i]); } } painter.generateMipmap(type); }; var TextureObject = (function () { function TextureObject(painter, type, unit) { if (unit === void 0) { unit = 0; } this.__painter = painter; this.__type = { "2d": painter.TEXTURE_2D, "cube": painter.TEXTURE_CUBE_MAP }[type]; this.__texture = initTexture(painter, this.__type, unit); painter.texParameteri(this.__type, painter.TEXTURE_MIN_FILTER, painter.NEAREST); painter.texParameteri(this.__type, painter.TEXTURE_MAG_FILTER, painter.NEAREST); painter.texParameteri(this.__type, painter.TEXTURE_WRAP_S, painter.CLAMP_TO_EDGE); painter.texParameteri(this.__type, painter.TEXTURE_WRAP_T, painter.CLAMP_TO_EDGE); } TextureObject.prototype.useImage = function (image) { linkImage(this.__painter, this.__type, 0, this.__painter.RGBA, this.__painter.UNSIGNED_BYTE, image); return this; }; TextureObject.prototype.useCube = function (images, width, height) { linkCube(this.__painter, this.__type, 0, this.__painter.RGBA, this.__painter.UNSIGNED_BYTE, images, width, height, this.__texture); return this; }; return TextureObject; }()); export { TextureObject as default };