void Game::run() { while (window.isOpen()) { showFps(); process(); render(); } }
void updateFrame() { // フレームを取得する pxcStatus sts = senseManager->AcquireFrame( false ); if ( sts < PXC_STATUS_NO_ERROR ) { return; } updateFaceFrame(); // フレームを解放する senseManager->ReleaseFrame(); // フレームレートを表示する showFps(); }
void StateManager::run() { bool tick; bool render; while (_running) { tick = (SDL_GetTicks() - _lastTick >= _frameTime); render = (SDL_GetTicks() - _lastFrame >= 5); //200 fps cap if (tick) { input.poll(); if (input._quit) { //TODO: State transitions? _running = false; break; } if (input.keyPressed(SDL_SCANCODE_LALT) && input.keyDown(SDL_SCANCODE_RETURN)) { SDL.toggleFullscreen(); } if (input.keyPressed(SDL_SCANCODE_LCTRL) && input.keyDown(SDL_SCANCODE_F)) { _showFps = !_showFps; } _currentState->tick(); } if (render) { SDL_Texture* t = _currentState->render(); if (_showFps) { SDL_SetRenderTarget(SDL.getRenderer(), t); showFps(); } SDL.renderTextureToWindow(t); _lastFrame = SDL_GetTicks(); ++_framesRun; } if (tick) { _lastTick = SDL_GetTicks(); } if (_switchState) { delete _currentState; _currentState = _newState; _switchState = false; } } }
void Engine::ProcessInput() { sf::Event event; while (window->pollEvent(event)) { if (event.type == sf::Event::Closed) window->close(); if (event.type == sf::Event::KeyPressed) { if (event.key.code == sf::Keyboard::Escape) { window->close(); } } } entities.playerExecute(); entities.npcMovement(); showFps(); }
int PreviewStream::processFrame(CameraFrame *frame) { status_t ret = NO_ERROR; if (mShowFps) { showFps(); } ret = renderBuffer(frame); if (ret != NO_ERROR) { FLOGE("%s renderBuffer failed, state %d", __FUNCTION__, frame->getState()); goto err_exit; } //the frame held in service. frame->addReference(); StreamBuffer buffer; ret = requestBuffer(&buffer); if (ret != NO_ERROR) { FLOGE("%s requestBuffer failed", __FUNCTION__); goto err_exit; } for (int i = 0; i < mTotalBuffers; i++) { if (mCameraBuffer[i].mBufHandle == buffer.mBufHandle) { //release frame from service. mCameraBuffer[i].release(); break; } } err_exit: sem_post(&mRespondSem); return ret; }