starling-framework
Version:
A fast, productive library for 2D cross-platform development.
78 lines (62 loc) • 2.66 kB
JavaScript
// 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;