void DrawLowerArm(MatrixStack &modelToCameraStack) { modelToCameraStack.Push(); modelToCameraStack.Translate(posLowerArm); modelToCameraStack.RotateX(angLowerArm); modelToCameraStack.Push(); modelToCameraStack.Translate(glm::vec3(0.0f, 0.0f, lenLowerArm / 2.0f)); modelToCameraStack.Scale(glm::vec3(widthLowerArm / 2.0f, widthLowerArm / 2.0f, lenLowerArm / 2.0f)); glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(modelToCameraStack.Top())); glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0); modelToCameraStack.Pop(); DrawWrist(modelToCameraStack); modelToCameraStack.Pop(); }
void DrawRobotArm(int NumSegs) { glMatrixMode(GL_MODELVIEW); glPushMatrix(); /** Base of Arm **/ glTranslatef(0,0,0); glRotatef(BaseSpin,0.0,1.0,0.0); DrawBase(NumSegs); /** Arm Segment #1 **/ glTranslatef(0,0.4f,0); glRotatef(ShoulderAng,0.0,0.0,1.0); DrawArmSegment(NumSegs); /** Arm Segment #2 **/ glTranslatef(0,0.5f,0); glRotatef(ElbowAng,0.0,0.0,1.0); DrawArmSegment(NumSegs); /** Wrist **/ glTranslatef(0,0.5f,0); glRotatef(WristAng,0.0,0.0,1.0); DrawWrist(NumSegs); glTranslatef(0,0.2f,0); glRotatef(FingerAng1,0.0,0.0,1.0); DrawFingerBase(NumSegs); glTranslatef(0, 0.3f, 0); glRotatef(-90, 0, 0, 1); DrawFingerTip(NumSegs); glRotatef(90, 0, 0, 1); glTranslatef(0, -0.3f, 0); glRotatef(FingerAng2*2,0.0,0.0,1.0); DrawFingerBase(NumSegs); glTranslatef(0, 0.3f, 0); glRotatef(90, 0, 0, 1); DrawFingerTip(NumSegs); glPopMatrix(); // Pop Base of Arm }