modelToCameraStack.push();
modelToCameraStack.translate( posLeftFinger );
modelToCameraStack.rotateY( angFingerOpen );
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger / 2.0f ) );
modelToCameraStack.scale( new Vec3( widthFinger / 2.0f, widthFinger / 2.0f, lenFinger / 2.0f ) );
glUniformMatrix4( modelToCameraMatrixUnif, false,
modelToCameraStack.top().fillAndFlipBuffer( mat4Buffer ) );
glDrawElements( GL_TRIANGLES, indexData.length, GL_UNSIGNED_SHORT, 0 );
modelToCameraStack.pop();
{
// Draw left lower finger
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger ) );
modelToCameraStack.rotateY( -angLowerFinger );
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger / 2.0f ) );
modelToCameraStack.scale( new Vec3( widthFinger / 2.0f, widthFinger / 2.0f, lenFinger / 2.0f ) );
glUniformMatrix4( modelToCameraMatrixUnif, false,
modelToCameraStack.top().fillAndFlipBuffer( mat4Buffer ) );
glDrawElements( GL_TRIANGLES, indexData.length, GL_UNSIGNED_SHORT, 0 );
modelToCameraStack.pop();
modelToCameraStack.pop();
}
modelToCameraStack.pop();
// Draw right finger
modelToCameraStack.push();
modelToCameraStack.translate( posRightFinger );
modelToCameraStack.rotateY( -angFingerOpen );
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger / 2.0f ) );
modelToCameraStack.scale( new Vec3( widthFinger / 2.0f, widthFinger / 2.0f, lenFinger / 2.0f ) );
glUniformMatrix4( modelToCameraMatrixUnif, false,
modelToCameraStack.top().fillAndFlipBuffer( mat4Buffer ) );
glDrawElements( GL_TRIANGLES, indexData.length, GL_UNSIGNED_SHORT, 0 );
modelToCameraStack.pop();
{
// Draw right lower finger
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger ) );
modelToCameraStack.rotateY( angLowerFinger );
modelToCameraStack.push();
modelToCameraStack.translate( new Vec3( 0.0f, 0.0f, lenFinger / 2.0f ) );
modelToCameraStack.scale( new Vec3( widthFinger / 2.0f, widthFinger / 2.0f, lenFinger / 2.0f ) );
glUniformMatrix4( modelToCameraMatrixUnif, false,
modelToCameraStack.top().fillAndFlipBuffer( mat4Buffer ) );
glDrawElements( GL_TRIANGLES, indexData.length, GL_UNSIGNED_SHORT, 0 );
modelToCameraStack.pop();