molstar
Version:
A comprehensive macromolecular library.
71 lines • 2.69 kB
JavaScript
/**
* 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
;