osg 第4講幀的學習

2021-10-10 22:46:51 字數 1492 閱讀 1751

run迴圈中

while(!viewer->done())

幀數=1/一幀的時間

float start_time=0.0;

float end_time=0.0;

while(!viewer->done())

count++:

frame();

if(count==3)

count++:

openthreads::thread::microsleep(sleep_time*1000000);

frame();

//控制幀數10,每幀0.1

if(count==3)

}}

出現的問題:當實際時間比預期時間長,sleep為負值,導致沒有睡眠,三幀時間短,3/很小的數,最後結果很大;

將sleep_time適當分割,此處用last_time,記錄以前的睡眠時間,適當減小,設為下一幀的睡眠時間,防止睡過頭。

float start_time=0.0;

float end_time=0.0;

float sleep_time=0.0;

float last_time=0.0;

int count=0;

while(!viewer->done())

count++:

openthreads::thread::microsleep(sleep_time*1000000);

last_time=sleep_time;

frame();

//控制幀數10,每幀0.1

if(count==3)

}}

將sleep_time適當分割,此處用last_time,記錄以前的睡眠時間,適當減小,設為下一幀的睡眠時間,防止睡過頭,對每幀進行睡眠。

float start_time=0.0;

float end_time=0.0;

float per_str_time =0.0;

float per_end_time =0.0;

float sleep_time=0.0;

float last_time=0.0;

int count=0;

while (!viewer->done())

count++;

viewer->frame();

per_end_time = timer->tick();

sleep_time = 0.1 - (timer->delta_s(per_str_time, per_end_time));

if (sleep_time<0)

last_sleep = sleep_time;

openthreads::thread::microsleep(sleep_time*1000000);

if (count == 3)

osg自學筆記5 《最長的一幀》第12日

osg自學筆記4 最長的一幀 第12日 當前位置 osgdb databasepager.cpp osgdb databasepager databasethread run 函式 那麼,我們就得到了乙個也許可行的資料流圖,如下所示 當前位置 osgdb databasepager.cpp 第 45...

資料結構 第4講 單鏈表

資料結構 第4講 單鏈表 結點結構體的定義 定義了結點之後,我們就可以把若干個結點連線在一起,形成乙個鍊錶 是不是像乙個鐵鍊子,一環扣一環的連在一起?不管這個鐵鍊子有多長,只要我們找到它的頭,就可以拉起整個鐵鍊子,因此我們給這個鍊錶設定乙個頭指標,這個鍊錶中的每個結點都可以找到了。有時候為了操作方便...

Python 基礎第4講 運算子

x 1 2 x hello world 字串相加是拼接x 6 2 x hello world 報錯 字串不能相減x 6 2 x 50 x x 6 2 x 3.0x 6 2 x 3x 7 2 x 1x 2 3x 25 0.5x 3 x x 3 x 3 x x 3 x 3 x x 3 x 3 x x 3...