void changePlaybackSpeed(int ratioDiff) { float ratio = (float)pow(2.0, ratioDiff); float speed = getPlaybackSpeed() * ratio; if (speed < 0) { speed = 0; } openni::Status rc = setPlaybackSpeed(speed); if (rc == openni::STATUS_OK) { if (speed == 0) { displayMessage("Playback speed set to fastest"); } else { displayMessage("Playback speed set to x%.2f", speed); } } else if ((rc == openni::STATUS_NOT_IMPLEMENTED) || (rc == openni::STATUS_NOT_SUPPORTED) || (rc == openni::STATUS_BAD_PARAMETER)) { displayError("Playback speed is not supported"); } else { displayError("Error setting playback speed:\n%s", openni::OpenNI::getExtendedError()); } }
void drawPlaybackSpeed() { XnDouble dSpeed = getPlaybackSpeed(); if (dSpeed != 1.0) { XnChar strSpeed[30]; int len = sprintf(strSpeed, "x%g", dSpeed); int width = 0; for (int i = 0; i < len; ++i) width += glutBitmapWidth(GLUT_BITMAP_TIMES_ROMAN_24, strSpeed[i]); glColor3f(0, 1, 0); glRasterPos2i(WIN_SIZE_X - width - 3, 30); glPrintString(GLUT_BITMAP_TIMES_ROMAN_24, strSpeed); } }