///////////////////////////////////////////////////////// // Rotate a frame around it's local Y axis void gltRotateFrameLocalY(GLTFrame *pFrame, GLfloat fAngle) { GLTMatrix mRotation; GLTVector3 vNewForward; gltRotationMatrix((float)gltDegToRad(fAngle), 0.0f, 1.0f, 0.0f, mRotation); gltRotationMatrix(fAngle, pFrame->vUp[0], pFrame->vUp[1], pFrame->vUp[2], mRotation); gltRotateVector(pFrame->vForward, mRotation, vNewForward); memcpy(pFrame->vForward, vNewForward, sizeof(GLTVector3)); }
// Called to draw scene void RenderScene(void) { // GLTMatrix transformationMatrix; // Storeage for rotation matrix GLTMatrix rotationMatrix, translationMatrix, transformationMatrix; static GLfloat yRot = 0.0f; // Rotation angle for animation yRot += 0.5f; // Clear the window with current clearing color glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Build a rotation matrix gltRotationMatrix(gltDegToRad(yRot), 0.0f, 1.0f, 0.0f, transformationMatrix); transformationMatrix[12] = 0.0f; transformationMatrix[13] = 0.0f; transformationMatrix[14] = -2.5f; glLoadMatrixf(transformationMatrix); gltDrawTorus(0.35f, 0.15f, 40, 20); // Do the buffer Swap glutSwapBuffers(); }