UNPKG

molstar

Version:

A comprehensive macromolecular library.

89 lines 3.41 kB
"use strict"; /** * Copyright (c) 2018-2021 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.createNullRenderTarget = exports.createRenderTarget = void 0; var id_factory_1 = require("../../mol-util/id-factory"); var texture_1 = require("./texture"); var framebuffer_1 = require("./framebuffer"); var compat_1 = require("./compat"); var getNextRenderTargetId = (0, id_factory_1.idFactory)(); function createRenderTarget(gl, resources, _width, _height, depth, type, filter) { if (depth === void 0) { depth = true; } if (type === void 0) { type = 'uint8'; } if (filter === void 0) { filter = 'nearest'; } var framebuffer = resources.framebuffer(); var targetTexture = type === 'fp16' ? resources.texture('image-float16', 'rgba', 'fp16', filter) : type === 'float32' ? resources.texture('image-float32', 'rgba', 'float', filter) : resources.texture('image-uint8', 'rgba', 'ubyte', filter); // make a depth renderbuffer of the same size as the targetTexture var depthRenderbuffer = !depth ? null : (0, compat_1.isWebGL2)(gl) ? resources.renderbuffer('depth32f', 'depth', _width, _height) : resources.renderbuffer('depth16', 'depth', _width, _height); function init() { targetTexture.define(_width, _height); targetTexture.attachFramebuffer(framebuffer, 'color0'); if (depthRenderbuffer) depthRenderbuffer.attachFramebuffer(framebuffer); } init(); var destroyed = false; return { id: getNextRenderTargetId(), texture: targetTexture, framebuffer: framebuffer, getWidth: function () { return _width; }, getHeight: function () { return _height; }, bind: function () { framebuffer.bind(); }, setSize: function (width, height) { if (_width === width && _height === height) { return; } _width = width; _height = height; targetTexture.define(_width, _height); if (depthRenderbuffer) depthRenderbuffer.setSize(_width, _height); }, reset: function () { init(); }, destroy: function () { if (destroyed) return; targetTexture.destroy(); framebuffer.destroy(); if (depthRenderbuffer) depthRenderbuffer.destroy(); destroyed = true; } }; } exports.createRenderTarget = createRenderTarget; // function createNullRenderTarget(gl) { return { id: getNextRenderTargetId(), texture: (0, texture_1.createNullTexture)(gl), framebuffer: (0, framebuffer_1.createNullFramebuffer)(), getWidth: function () { return 0; }, getHeight: function () { return 0; }, bind: function () { gl.bindFramebuffer(gl.FRAMEBUFFER, null); }, setSize: function () { }, reset: function () { }, destroy: function () { } }; } exports.createNullRenderTarget = createNullRenderTarget; //# sourceMappingURL=render-target.js.map