看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tyc5116 (累人啊....)》之銘言: : 恩... : 這是DirectX的函式 : D3DXMatrixRotationX( &matWorld, timeGetTime() / 1000.0f ); : 每次呼叫到這裡的時候便旋轉角度(timeGetTime() / 1000.0f) : 我怎麼知道這個值要多少才會轉完一圈剛好1秒呢? : 目前我並不知道電腦執行的速度有多快,一秒內會執行到這個函數幾次啊? : 這是我主要的問題啦~~再麻煩了,謝謝^^ 雖然我們不知道 hardware 去 render 一張圖的時間是多少 不過我們可以假設 render 第一張 frame 和 render 第二張 frame 的時間是差不多的 (這假設也很合理) 所以我們可以這樣寫: float render_time; // 儲存 render 上一張 frame 所花的時間 void render() { DWORD time_begin = timeGetTime(); // 一秒轉動 2 PI 弧度 // 每張 frame 之前相隔 render_time 這麼多秒 // 所以是轉動 render_time * PI * 2.0 D3DXMatrixRotationX(&matWorld, render_time * PI * 2.0f); // 把東西畫出來 ... // 計算這張 frame 花了多久 render_time = (timeGetTime() - time_begin()) / 1000.0f; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.108
VictorTom:暈, 還是l大的方法比較有彈性Orz 剛問了一下同事, D3Dy 11/30 16:20
VictorTom:SDK的tutorial 04似乎剛好有一個類似的sample就是這樣 11/30 16:20
VictorTom:做的, 有需要也可以看一下:) 11/30 16:20
tyc5116:哈~那些範例我都看過啦..XD,只是有些地方要改不知道要怎改 11/30 16:34
tyc5116:我的作業是繞X軸轉一圈花一秒,再換繞Y軸一圈花一秒 11/30 16:35
tyc5116:然後就有一堆timer的問題要解決,目前還想不出來...@@ 11/30 16:35
tyc5116:試了一陣子,render_time常常都會是0耶,為什麼? 11/30 21:21
littleshan:render速度太快了 timer 跟不上 11/30 21:48
littleshan:加一個 Sleep 試試 11/30 21:49