/*
* File: LineShader.js
* for debugging physics engine
*/
/*jslint node: true, vars: true */
/*global gEngine, SimpleShader */
/* find out more about jslint: http://www.jslint.com/help.html */
"use strict"; // Operate in Strict mode such that variables must be declared before used!
//
// constructor of LineShader object
function LineShader(vertexShaderPath, fragmentShaderPath) {
// Call super class constructor
SimpleShader.call(this, vertexShaderPath, fragmentShaderPath); // call SimpleShader constructor
this.mPointSizeRef = null; // reference to the PointSize uniform
var gl = gEngine.Core.getGL();
// point size uniform
this.mPointSizeRef = gl.getUniformLocation(this.mCompiledShader, "uPointSize");
this.mPointSize = 1;
}
gEngine.Core.inheritPrototype(LineShader, SimpleShader);
//
//
// Activate the shader for rendering
LineShader.prototype.activateShader = function (pixelColor, aCamera) {
// first call the super class's activate
SimpleShader.prototype.activateShader.call(this, pixelColor, aCamera);
// now our own functionality: enable texture coordinate array
var gl = gEngine.Core.getGL();
gl.uniform1f(this.mPointSizeRef, this.mPointSize);
gl.bindBuffer(gl.ARRAY_BUFFER, gEngine.VertexBuffer.getGLLineVertexRef());
gl.vertexAttribPointer(this.mShaderVertexPositionAttribute,
3, // each element is a 3-float (x,y.z)
gl.FLOAT, // data type is FLOAT
false, // if the content is normalized vectors
0, // number of bytes to skip in between elements
0);
gl.enableVertexAttribArray(this.mShaderVertexPositionAttribute);
};
LineShader.prototype.setPointSize = function (w) { this.mPointSize = w; };
//-- end of public methods
//