UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

78 lines (62 loc) 2.66 kB
// Class: starling.rendering.Program var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; var $bind = require("./../../bind_stub").default; function starling_core_Starling() {return require("./../../starling/core/Starling");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function starling_errors_MissingContextError() {return require("./../../starling/errors/MissingContextError");} function openfl_utils_AGALMiniAssembler() {return $import(require("openfl/utils/AGALMiniAssembler"));} // Constructor var Program = function(vertexShader,fragmentShader) { this._vertexShader = vertexShader; this._fragmentShader = fragmentShader; (starling_core_Starling().default).get_current().get_stage3D().addEventListener("context3DCreate",$bind(this,this.onContextCreated),false,30,true); } // Meta Program.__name__ = "starling.rendering.Program"; Program.__isInterface__ = false; Program.prototype = { dispose: function() { (starling_core_Starling().default).get_current().get_stage3D().removeEventListener("context3DCreate",$bind(this,this.onContextCreated)); this.disposeProgram(); }, activate: function(context) { if(context == null) { context = (starling_core_Starling().default).get_current().get_context(); if(context == null) { throw new (js__$Boot_HaxeError().default)(new (starling_errors_MissingContextError().default)()); } } if(this._program3D == null) { this._program3D = context.createProgram(); this._program3D.upload(this._vertexShader,this._fragmentShader); } context.setProgram(this._program3D); }, onContextCreated: function(event) { this.disposeProgram(); }, disposeProgram: function() { if(this._program3D != null) { this._program3D.dispose(); this._program3D = null; } } }; Program.prototype.__class__ = Program.prototype.constructor = $hxClasses["starling.rendering.Program"] = Program; // Init // Statics Program.fromSource = function(vertexShader,fragmentShader,agalVersion) { if(agalVersion == null) { agalVersion = 1; } return new Program(Program.sAssembler.assemble("vertex",vertexShader,agalVersion),Program.sAssembler.assemble("fragment",fragmentShader,agalVersion)); } Program.sAssembler = new (openfl_utils_AGALMiniAssembler().default)() // Export exports.default = Program;