openfl
Version:
A fast, productive library for 2D cross-platform development.
119 lines (102 loc) • 4.28 kB
JavaScript
// Class: openfl.display._internal.Context3DVideo
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;
function openfl_display__$internal_Context3DMaskShader() {return require("./../../../openfl/display/_internal/Context3DMaskShader");}
// Constructor
var Context3DVideo = function(){}
// Meta
Context3DVideo.__name__ = "openfl.display._internal.Context3DVideo";
Context3DVideo.__isInterface__ = false;
Context3DVideo.prototype = {
};
Context3DVideo.prototype.__class__ = Context3DVideo.prototype.constructor = $hxClasses["openfl.display._internal.Context3DVideo"] = Context3DVideo;
// Init
// Statics
Context3DVideo.render = function(video,renderer) {
if(!video.__renderable || video.__worldAlpha <= 0 || video.__stream == null) {
return;
}
if(video.__stream.__video != null) {
var context = renderer.__context3D;
var gl = context.gl;
var texture = video.__getTexture(context);
if(texture == null) {
return;
}
renderer.__setBlendMode(video.__worldBlendMode);
renderer.__pushMaskObject(video);
var shader = renderer.__initDisplayShader(video.__worldShader);
renderer.setShader(shader);
renderer.applyBitmapData(null,true,false);
renderer.applyMatrix(renderer.__getMatrix(video.__renderTransform,"auto"));
renderer.applyAlpha(video.__worldAlpha);
renderer.applyColorTransform(video.__worldColorTransform);
if(shader.__textureSize != null) {
Context3DVideo.__textureSizeValue[0] = video.__stream != null ? video.__stream.__video.videoWidth : 0;
Context3DVideo.__textureSizeValue[1] = video.__stream != null ? video.__stream.__video.videoHeight : 0;
shader.__textureSize.value = Context3DVideo.__textureSizeValue;
}
renderer.updateShader();
context.setTextureAt(0,video.__getTexture(context));
context.__flushGLTextures();
gl.uniform1i(shader.__texture.index,0);
if(video.smoothing) {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);
} else {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);
}
var vertexBuffer = video.__getVertexBuffer(context);
if(shader.__position != null) {
context.setVertexBufferAt(shader.__position.index,vertexBuffer,0,"float3");
}
if(shader.__textureCoord != null) {
context.setVertexBufferAt(shader.__textureCoord.index,vertexBuffer,3,"float2");
}
var indexBuffer = video.__getIndexBuffer(context);
context.drawTriangles(indexBuffer);
renderer.__clearShader();
renderer.__popMaskObject(video);
}
}
Context3DVideo.renderDrawable = function(video,renderer) {
Context3DVideo.render(video,renderer);
renderer.__renderEvent(video);
}
Context3DVideo.renderDrawableMask = function(video,renderer) {
Context3DVideo.renderMask(video,renderer);
}
Context3DVideo.renderMask = function(video,renderer) {
if(video.__stream == null) {
return;
}
if(video.__stream.__video != null) {
var context = renderer.__context3D;
var gl = context.gl;
var shader = renderer.__maskShader;
renderer.setShader(shader);
renderer.applyBitmapData((openfl_display__$internal_Context3DMaskShader().default).opaqueBitmapData,true);
renderer.applyMatrix(renderer.__getMatrix(video.__renderTransform,"auto"));
renderer.updateShader();
var vertexBuffer = video.__getVertexBuffer(context);
if(shader.__position != null) {
context.setVertexBufferAt(shader.__position.index,vertexBuffer,0,"float3");
}
if(shader.__textureCoord != null) {
context.setVertexBufferAt(shader.__textureCoord.index,vertexBuffer,3,"float2");
}
var indexBuffer = video.__getIndexBuffer(context);
context.drawTriangles(indexBuffer);
renderer.__clearShader();
}
}
Context3DVideo.__meta__ = { obj : { SuppressWarnings : ["checkstyle:FieldDocComment"]}}
Context3DVideo.__textureSizeValue = [0,0.]
// Export
exports.default = Context3DVideo;