// Class: openfl._internal.renderer.opengl.GLBitmap

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 $import = require("./../../../../import_stub").default;
function openfl__$internal_renderer_opengl_GLMaskShader() {return require("./../../../../openfl/_internal/renderer/opengl/GLMaskShader");}

// Constructor

var GLBitmap = function(){}

// Meta

GLBitmap.__name__ = ["openfl","_internal","renderer","opengl","GLBitmap"];
GLBitmap.prototype = {
	
};
GLBitmap.prototype.__class__ = GLBitmap.prototype.constructor = $hxClasses["openfl._internal.renderer.opengl.GLBitmap"] = GLBitmap;

// Init



// Statics

GLBitmap.render = function(bitmap,renderer) {
	if(!bitmap.__renderable || bitmap.__worldAlpha <= 0) {
		return;
	}
	if(bitmap.__bitmapData != null && bitmap.__bitmapData.__isValid) {
		var gl = renderer.__context.webgl;
		renderer.__setBlendMode(bitmap.__worldBlendMode);
		renderer.__pushMaskObject(bitmap);
		var shader = renderer.__initDisplayShader(bitmap.__worldShader);
		renderer.setShader(shader);
		renderer.applyBitmapData(bitmap.__bitmapData,renderer.__allowSmoothing && (bitmap.smoothing || renderer.__upscaled));
		renderer.applyMatrix(renderer.__getMatrix(bitmap.__renderTransform));
		renderer.applyAlpha(bitmap.__worldAlpha);
		renderer.applyColorTransform(bitmap.__worldColorTransform);
		renderer.updateShader();
		gl.bindBuffer(gl.ARRAY_BUFFER,bitmap.__bitmapData.getBuffer(renderer.__context));
		if(shader.__position != null) {
			gl.vertexAttribPointer(shader.__position.index,3,gl.FLOAT,false,56,0);
		}
		if(shader.__textureCoord != null) {
			gl.vertexAttribPointer(shader.__textureCoord.index,2,gl.FLOAT,false,56,12);
		}
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
		renderer.__clearShader();
		renderer.__popMaskObject(bitmap);
	}
}
GLBitmap.renderMask = function(bitmap,renderer) {
	if(bitmap.__bitmapData != null && bitmap.__bitmapData.__isValid) {
		var gl = renderer.__context.webgl;
		var shader = renderer.__maskShader;
		renderer.setShader(shader);
		renderer.applyBitmapData((openfl__$internal_renderer_opengl_GLMaskShader().default).opaqueBitmapData,true);
		renderer.applyMatrix(renderer.__getMatrix(bitmap.__renderTransform));
		renderer.updateShader();
		gl.bindBuffer(gl.ARRAY_BUFFER,bitmap.__bitmapData.getBuffer(renderer.__context));
		gl.vertexAttribPointer(shader.__position.index,3,gl.FLOAT,false,56,0);
		gl.vertexAttribPointer(shader.__textureCoord.index,2,gl.FLOAT,false,56,12);
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
		renderer.__clearShader();
	}
}


// Export

exports.default = GLBitmap;