UNPKG

glam

Version:

Experimental WebGL Engine

89 lines (64 loc) 2.46 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createForwardRenderer; var _render = require('./render'); var _render2 = _interopRequireDefault(_render); var _webglContext = require('webgl-context'); var _webglContext2 = _interopRequireDefault(_webglContext); var _autoAddCanvas = require('./auto-add-canvas'); var _autoAddCanvas2 = _interopRequireDefault(_autoAddCanvas); var _autoResizeCanvas = require('./auto-resize-canvas'); var _autoResizeCanvas2 = _interopRequireDefault(_autoResizeCanvas); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); var _eventemitter = require('eventemitter3'); var _eventemitter2 = _interopRequireDefault(_eventemitter); var _shaderCache = require('../shader-cache'); var _shaderCache2 = _interopRequireDefault(_shaderCache); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ForwardRenderer(gl, config, clear) { var removeCanvas = (0, _autoAddCanvas2.default)(gl.canvas, config.parentEl, config.autoAddCanvas); var removeResize = (0, _autoResizeCanvas2.default)(gl.canvas, config.parentEl, config.autoResizeCanvas); this.gl = gl; this.canvas = gl.canvas; this.render = _render2.default.bind(null, this, (0, _shaderCache2.default)()); this.clear = clear; this.emitter = config.emitter; this.on = config.emitter.on.bind(config.emitter); this.off = config.emitter.off.bind(config.emitter); this.emitter = config.emitter; this.destroy = function destroy() { removeCanvas(); removeResize(); }; } function createForwardRenderer(properties) { var config = (0, _objectAssign2.default)({ autoAddCanvas: true, autoResizeCanvas: true, canvas: null, width: null, height: null, parentEl: document.body, emitter: null // Plus WebGLContextAttributes: https://www.khronos.org/registry/webgl/specs/1.0/#5.2 // alpha, depth, stencil, antialias, premultipliedAlpha, preserveDrawingBuffer, // preferLowPowerToHighPerformance, failIfMajorPerformanceCaveat }, properties); if (!config.emitter) { config.emitter = new _eventemitter2.default(); } var clear = (0, _objectAssign2.default)({ color: [1, 1, 1, 1], colorBuffer: true, depthBuffer: true, stencilBuffer: true }, config.clear); var gl = (0, _webglContext2.default)(config); if (!gl) { return null; } return new ForwardRenderer(gl, config, clear); }