UNPKG

molstar

Version:

A comprehensive macromolecular library.

71 lines 2.69 kB
"use strict"; /** * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createNullFramebuffer = exports.createFramebuffer = exports.checkFramebufferStatus = void 0; var id_factory_1 = require("../../mol-util/id-factory"); var compat_1 = require("./compat"); var getNextFramebufferId = (0, id_factory_1.idFactory)(); function getFramebufferStatusDescription(gl, status) { switch (status) { case gl.FRAMEBUFFER_COMPLETE: return 'complete'; case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: return 'incomplete attachment'; case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: return 'incomplete missing attachment'; case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: return 'incomplete dimensions'; case gl.FRAMEBUFFER_UNSUPPORTED: return 'unsupported'; } if ((0, compat_1.isWebGL2)(gl)) { switch (status) { case gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: return 'incomplete multisample'; case gl.RENDERBUFFER_SAMPLES: return 'renderbuffer samples'; } } return 'unknown error'; } function checkFramebufferStatus(gl) { var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); if (status !== gl.FRAMEBUFFER_COMPLETE) { var description = getFramebufferStatusDescription(gl, status); throw new Error("Framebuffer status: " + description); } } exports.checkFramebufferStatus = checkFramebufferStatus; function getFramebuffer(gl) { var framebuffer = gl.createFramebuffer(); if (framebuffer === null) { throw new Error('Could not create WebGL framebuffer'); } return framebuffer; } function createFramebuffer(gl) { var _framebuffer = getFramebuffer(gl); var destroyed = false; return { id: getNextFramebufferId(), bind: function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, _framebuffer); }, reset: function () { _framebuffer = getFramebuffer(gl); }, destroy: function () { if (destroyed) return; gl.deleteFramebuffer(_framebuffer); destroyed = true; } }; } exports.createFramebuffer = createFramebuffer; // function createNullFramebuffer() { return { id: getNextFramebufferId(), bind: function () { }, reset: function () { }, destroy: function () { } }; } exports.createNullFramebuffer = createNullFramebuffer; //# sourceMappingURL=framebuffer.js.map