diff --git a/example/Basic/rf_test.cpp b/example/Basic/rf_test.cpp index dcfb6f4b..6e47375f 100644 --- a/example/Basic/rf_test.cpp +++ b/example/Basic/rf_test.cpp @@ -157,10 +157,10 @@ int main(int,char **) WorkManager wm(&rf); - AutoDelete app=new TestApp(&rf); + TestApp *test=new TestApp(&rf); - if(!app->Init()) + if(!test->Init()) return(-2); - wm.Start(app); + wm.Start(test); } diff --git a/example/common/WorkObject.h b/example/common/WorkObject.h index 463d0557..5bc3ee61 100644 --- a/example/common/WorkObject.h +++ b/example/common/WorkObject.h @@ -65,6 +65,7 @@ namespace hgl double last_update_time=0; double last_render_time=0; + double cur_time=0; WorkObject *cur_work_object=nullptr; @@ -88,29 +89,23 @@ namespace hgl void Update(WorkObject *wo) { - double cur_time=GetDoubleTime(); - double delta_time; + double delta_time=cur_time-last_update_time; - if(wo->IsTickable()) + if(delta_time>=frame_time) { - delta_time=cur_time-last_update_time; - - if(delta_time>=frame_time) - { - last_update_time=cur_time; - wo->Tick(delta_time); - } + last_update_time=cur_time; + wo->Tick(delta_time); } + } - if(wo->IsRenderable()) + void Render(WorkObject *wo) + { + double delta_time=cur_time-last_render_time; + + if(delta_time>=frame_time) { - delta_time=cur_time-last_render_time; - - if(delta_time>=frame_time) - { - last_render_time=cur_time; - wo->Render(delta_time); - } + last_render_time=cur_time; + wo->Render(delta_time); } } @@ -119,12 +114,24 @@ namespace hgl if(!cur_work_object) return; + Window *win=render_framework->GetWindow(); + graph::GPUDevice *dev=render_framework->GetDevice(); + while(!cur_work_object->IsDestroy()) { - Update(cur_work_object); + cur_time=GetDoubleTime(); - render_framework->GetWindow()->Update(); - render_framework->GetDevice()->WaitIdle(); + if(cur_work_object->IsTickable()) + Update(cur_work_object); + + if(win->IsVisible()&&cur_work_object->IsRenderable()) + { + Render(cur_work_object); + dev->WaitIdle(); + } + + if(!win->Update()) + break; } } diff --git a/res b/res index 475d8ad4..e1a36d78 160000 --- a/res +++ b/res @@ -1 +1 @@ -Subproject commit 475d8ad43ceee084cd24f5d0bed59de9f6aa36fd +Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d