Newer
Older
pixi.js / src / core / graphics / webgl / WebGLGraphicsData.js
/**
 * An object containing WebGL specific properties to be used by the WebGL renderer
 * 
 * @class 
 * @param gl {WebGLRenderingContext} the current WebGL drawing context
 * @private
 */
function WebGLGraphicsData(gl) {

    /* 
     * @member {WebGLRenderingContext} the current WebGL drawing context
     */
    this.gl = gl;

    //TODO does this need to be split before uploding??
    /* 
     * @member {Array} an array of color components (r,g,b)
     */
    this.color = [0,0,0]; // color split!

    /* 
     * @member {Array} an array of points to draw 
     */
    this.points = [];

    /* 
     * @member {Array} the indices of the vertices
     */
    this.indices = [];
    /* 
     * @member {WebGLBuffer} the main buffer
     */
    this.buffer = gl.createBuffer();

    /* 
     * @member {WebGLBuffer} the index buffer
     */
    this.indexBuffer = gl.createBuffer();

    /* 
     * @member {number} todo @alvin
     */
    this.mode = 1;

    /* 
     * @member {number} The alpha of the graphics
     */
    this.alpha = 1;

    /* 
     * @member {boolean} Whether this graphics is dirty or not
     */
    this.dirty = true;
}

WebGLGraphicsData.prototype.constructor = WebGLGraphicsData;
module.exports = WebGLGraphicsData;

/**
 * Resets the vertices and the indices
 */
WebGLGraphicsData.prototype.reset = function () {
    this.points = [];
    this.indices = [];
};

/**
 * Binds the buffers and uploads the data
 */
WebGLGraphicsData.prototype.upload = function () {
    var gl = this.gl;

//    this.lastIndex = graphics.graphicsData.length;
    this.glPoints = new Float32Array(this.points);

    gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
    gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW);

    this.glIndicies = new Uint16Array(this.indices);

    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
    gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW);

    this.dirty = false;
};