PDA

View Full Version : OpenGL ES 2.0: how to rotate “around the table”



LisaAnne
07-28-2013, 08:01 AM
Please I have the following code:



public void onDrawFrame(GL10 gl) {
// Clear the rendering surface.
glClear(GL_COLOR_BUFFER_BIT);
multiplyMM(viewProjectionMatrix, 0, projectionMatrix, 0, viewMatrix, 0);
positionTableInScene();
textureProgram.useProgram();
textureProgram.setUniforms(modelViewProjectionMatr ix, texture);
table.bindData(textureProgram);
table.draw();
// Draw the mallets.
positionObjectInScene(0f, mallet.height / 2f, -0.4f);
colorProgram.useProgram();
colorProgram.setUniforms(modelViewProjectionMatrix , 1f, 0f, 0f);
mallet.bindData(colorProgram);
mallet.draw();
positionObjectInScene(0f, mallet.height / 2f, 0.4f);
colorProgram.setUniforms(modelViewProjectionMatrix , 0f, 0f, 1f);
// Note that we don't have to define the object data twice -- we just
// draw the same mallet again but in a different position and with a
// different color.
mallet.draw();
// Draw the puck.
positionObjectInScene(0f, puck.height / 2f, 0f);
colorProgram.setUniforms(modelViewProjectionMatrix , 0.8f, 0.8f, 1f);
puck.bindData(colorProgram);
puck.draw();
}

That shows an image of a air hokey table.

What I want to do is to "move the camera" in a circle around the table.

Therefore I do like this:


public void onDrawFrame(GL10 gl) {
// Clear the rendering surface.
glClear(GL_COLOR_BUFFER_BIT);
//
float angle=(float) (2*Math.PI);
time=(float) (time+0.001);
Log.e("",Float.toString(time));
//TO ROTATE AROUND THE TABLE
setLookAtM(viewMatrix, 0, (float)Math.sin(angle*time), (float)Math.cos(angle*time), 2.2f, 0f, 0f, 0f, 0f, 1f, 0f);
//
multiplyMM(viewProjectionMatrix, 0, projectionMatrix, 0, viewMatrix, 0);
positionTableInScene();
textureProgram.useProgram();
textureProgram.setUniforms(modelViewProjectionMatr ix, texture);
table.bindData(textureProgram);
table.draw();
// Draw the mallets.
positionObjectInScene(0f, mallet.height / 2f, -0.4f);
colorProgram.useProgram();
colorProgram.setUniforms(modelViewProjectionMatrix , 1f, 0f, 0f);
mallet.bindData(colorProgram);
mallet.draw();
positionObjectInScene(0f, mallet.height / 2f, 0.4f);
colorProgram.setUniforms(modelViewProjectionMatrix , 0f, 0f, 1f);
// Note that we don't have to define the object data twice -- we just
// draw the same mallet again but in a different position and with a
// different color.
mallet.draw();
// Draw the puck.
positionObjectInScene(0f, puck.height / 2f, 0f);
colorProgram.setUniforms(modelViewProjectionMatrix , 0.8f, 0.8f, 1f);
puck.bindData(colorProgram);
puck.draw();
}

But It is not working the way I expected.
Please can somebody point me in the right direction?
Thanks
LISA