Frame rate independent animation updates

This commit is contained in:
saschawillems 2016-03-11 20:09:12 +01:00
parent 710ff2d511
commit e502785b1f
5 changed files with 76 additions and 59 deletions

View file

@ -611,6 +611,27 @@ public:
err = swapChain.queuePresent(queue, currentBuffer, semaphores.submitSignal);
assert(!err);
}
void render()
{
if (prepared)
{
startTiming();
if (animating)
{
// Update rotation
state.rotation.y += 0.05f * frameTimer;
if (state.rotation.y > 360.0f)
{
state.rotation.y -= 360.0f;
}
updateUniformBuffers();
}
draw();
endTiming();
}
}
};
static int32_t handleInput(struct android_app* app, AInputEvent* event)
@ -656,7 +677,6 @@ void android_main(struct android_app* state)
{
VulkanExample *engine = new VulkanExample();
//memset(&engine, 0, sizeof(engine));
state->userData = engine;
state->onAppCmd = handleCommand;
state->onInputEvent = handleInput;
@ -687,21 +707,6 @@ void android_main(struct android_app* state)
}
}
// Render frame
if (engine->prepared)
{
if (engine->animating)
{
// Update rotation
engine->state.rotation.y += 0.25f;
if (engine->state.rotation.y > 360.0f)
{
engine->state.rotation.y -= 360.0f;
}
engine->updateUniformBuffers();
}
engine->draw();
}
engine->render();
}
}