Question: Please help, I am not able to get my expected output! . js file: use strict; var canvas; var gl; var numPositions = 1 2

Please help, I am not able to get my expected output!
.js file:
"use strict";
var canvas;
var gl;
var numPositions =12;
var positions =[];
var colors =[];
var xAxis =0;
var yAxis =1;
var zAxis =2;
var axis =0;
var theta =[0,0,0];
var thetaLoc;
window.onload = function init()
{
canvas = document.getElementById("gl-canvas");
gl = canvas.getContext('webgl2');
if (!gl) alert("WebGL 2.0 isn't available");
colorPyramid();
gl.viewport(0,0, canvas.width, canvas.height);
gl.clearColor(1.0,1.0,1.0,1.0);
gl.enable(gl.DEPTH_TEST);
//
// Load shaders and initialize attribute buffers
//
var program = initShaders(gl, "vertex-shader", "fragment-shader");
gl.useProgram(program);
var cBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, cBuffer);
gl.bufferData(gl.ARRAY_BUFFER, flatten(colors), gl.STATIC_DRAW);
var colorLoc = gl.getAttribLocation( program, "aColor" );
gl.vertexAttribPointer( colorLoc, 4, gl.FLOAT, false, 0,0);
gl.enableVertexAttribArray( colorLoc );
var vBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vBuffer);
gl.bufferData(gl.ARRAY_BUFFER, flatten(positions), gl.STATIC_DRAW);
var positionLoc = gl.getAttribLocation(program, "aPosition");
gl.vertexAttribPointer(positionLoc,4, gl.FLOAT, false, 0,0);
gl.enableVertexAttribArray(positionLoc);
thetaLoc = gl.getUniformLocation(program, "uTheta");
//event listeners for buttons
document.getElementById( "xButton" ).onclick = function (){
axis = xAxis;
};
document.getElementById( "yButton" ).onclick = function (){
axis = yAxis;
};
document.getElementById( "zButton" ).onclick = function (){
axis = zAxis;
};
render();
}
function colorPyramid()
{
triple(1,2,3); //i think the issue is here
triple(2,3,0);
triple(3,1,2);
triple(0,2,1);
}
function triple(a, b, c)
{
var vertices =[
vec3(-0.5,-0.2722,0.2886),
vec3(0.0,-0.2772,-0.5773),
vec3(-0.5,-0.2722,0.2886),
vec3(0.0,0.5443,0.0)
];
var vertexColors =[
vec4(0.0,0.0,0.0,1.0),// black
vec4(1.0,0.0,0.0,1.0),// red
vec4(1.0,0.0,1.0,1.0),// magenta
vec4(0.0,1.0,1.0,1.0)// cyan
];
// We need to parition the quad into two triangles in order for
// WebGL to be able to render it. In this case, we create two
// triangles from the quad indices
//vertex color assigned by the index of the vertex
var indices =[a, b, c];
for ( var i =0; i indices.length; ++i ){
positions.push( vertices[indices[i]]);
//colors.push( vertexColors[indices[i]]);
// for solid colored faces use
colors.push(vertexColors[a]);
}
}
function render()
{
gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
theta[axis]+=2.0;
gl.uniform3fv(thetaLoc, theta);
gl.drawArrays(gl.TRIANGLES, 0, numPositions);
requestAnimationFrame(render);
}How it should rotate:
Please help, I am not able to get my expected

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!