UNPKG

molstar

Version:

A comprehensive macromolecular library.

62 lines 2.2 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.createVertexArray = void 0; var id_factory_1 = require("../../mol-util/id-factory"); var getNextVertexArrayId = (0, id_factory_1.idFactory)(); function getVertexArray(extensions) { var vertexArrayObject = extensions.vertexArrayObject; if (!vertexArrayObject) { throw new Error('VertexArrayObject not supported'); } var vertexArray = vertexArrayObject.createVertexArray(); if (!vertexArray) { throw new Error('Could not create WebGL vertex array'); } return vertexArray; } function getVertexArrayObject(extensions) { var vertexArrayObject = extensions.vertexArrayObject; if (vertexArrayObject === null) { throw new Error('VertexArrayObject not supported'); } return vertexArrayObject; } function createVertexArray(extensions, program, attributeBuffers, elementsBuffer) { var id = getNextVertexArrayId(); var vertexArray = getVertexArray(extensions); var vertexArrayObject = getVertexArrayObject(extensions); function update() { vertexArrayObject.bindVertexArray(vertexArray); if (elementsBuffer) elementsBuffer.bind(); program.bindAttributes(attributeBuffers); vertexArrayObject.bindVertexArray(null); } update(); var destroyed = false; return { id: id, bind: function () { vertexArrayObject.bindVertexArray(vertexArray); }, update: update, reset: function () { vertexArray = getVertexArray(extensions); vertexArrayObject = getVertexArrayObject(extensions); update(); }, destroy: function () { if (destroyed) return; vertexArrayObject.deleteVertexArray(vertexArray); destroyed = true; } }; } exports.createVertexArray = createVertexArray; //# sourceMappingURL=vertex-array.js.map