推 VictorTom:小弟我用VC2005試了一下, 色點是會往四個角落移動啊.... 12/10 02:49
→ VictorTom:把glColor()裡傳i的部份都加個0.1或0.2, 並且一開始先用 12/10 02:53
→ VictorTom:glPointSize()給個10.0, 效果看起來很明顯啊.... 12/10 02:53
→ Esvent:要慢一點的話就glutTimerFunc + glutPostRedisplay 12/10 06:40
謝謝兩位
程式小修改後大致上可以跑
但是不知道為什麼
跑兩次就自己停掉了
不會無限循環下去
然後視窗感覺還是盪盪的
※ 編輯: cory8249 來自: 140.114.221.54 (12/12 21:24)
→ Esvent:gultTimerFunc裡面每次都要設定下一次的timerFunc才會迴圈 12/12 21:29
→ Esvent:找個範例來看應該就懂了 12/12 21:29
→ Esvent:當當的感覺我猜是fps太低? timerFunc的頻率設短一點即可 12/12 21:31
關於 TimerFunc 這部分
我在網路上看來看去還是不太明白
亂改的程式碼: http://pastie.org/3005736
會呈現一直在重繪的情況
還是沒有 delay @@"
※ 編輯: cory8249 來自: 140.114.221.54 (12/13 00:04)
推 VictorTom:你是要一直重覆從裡到外的過程, 還是只要一次裡到外但是 12/13 00:19
→ VictorTom:慢慢畫? 你的設計裡Timer每隔段時間call PostRedisplay, 12/13 00:20
→ VictorTom:然後display func裡都是從裡到外畫完一次的全程, 自然你 12/13 00:21
→ VictorTom:看到最後的結果就是一直重繪從裡到外的流程.... 12/13 00:21
→ VictorTom:如果你只是要一次慢慢畫的過程, 簡單作法就是display裡 12/13 00:22
→ VictorTom:那個for直接拿掉, 把i提成global變數, 然後原本for裡的 12/13 00:23
→ VictorTom:條件判斷與i+=0.01這些都拉進Timer裡(PostRedisplay前) 12/13 00:23
→ VictorTom:另外, 總覺得display裡最後兩行clear相關的是不需要的. 12/13 00:28
→ VictorTom:還有, TimerFunction() 好像應該從display裡拉到main裡. 12/13 00:31
對不起 我資質駑鈍 弄一弄都變成全黑一片
我想做到以下兩點:
1. 像 _sleep() 這樣的延遲功能
就是每次畫一次小方塊之後 都短暫停個 0.2 秒 (舉例來說)
然後下一次 小方塊的位置、顏色都改變之後 再把它畫出來
也就是方塊會慢慢變亮、從內移往外移動 , 像動畫那樣
clear那邊如果不打 他會全部連在一起 變成一條線
我是想要方塊移動的樣子
2. 以上流程可以一直重複的跑
若鍵盤輸入 p 就暫停
輸入 r 回復播放動畫
輸入 q 或者 ESC 之類的才結束
Thanks !!
※ 編輯: cory8249 來自: 140.114.221.54 (12/13 02:02)
推 VictorTom:你如果要用Sleep, 就不需要搞Timer, 而我這邊試再前一次 12/13 10:23
→ VictorTom:的版本就已經會從裡到外跑了.... 12/13 10:23
→ VictorTom:一般的設計會是display只畫一個frame, 然後等Timer到或 12/13 10:23
→ VictorTom:需要ReDraw的時候才clear, 然後render frame內容.... 12/13 10:24
→ VictorTom:你的設計裡是display裡把動畫的所有frame都畫完, 所以 12/13 10:26
→ VictorTom:clear, render, timer全攪和在一起了, 你可能要想想你的 12/13 10:27
→ VictorTom:你想要做的與目前你的程式實際運行的流程再作修改.... 12/13 10:28
→ VictorTom:最後要收key event, 可以查 glutKeyboardFunc 的用法. 12/13 10:28
→ VictorTom:迴圈版我懶得改成一直loop跑了, 反正多掛一層loop的事; 12/13 10:38
→ VictorTom:每個Point的Color我都多加了0.2, 不然不容易看出來結果. 12/13 10:39
→ VictorTom:Key event的等你自己搞清楚試了有問題再說吧.... 12/13 10:39
原來如此 ... 感謝 V大 詳細的講解
不過我還是不太清楚 void TimerFunction(int value);
還有 glutTimerFunc(millisecond,TimerFunction, value);
他的引數 value 是做什麼用的? (這邊看似沒用到 ?)
然後 關於整個 glut 的流程
感覺還是一知半解
我另外加了一個三角形 http://pastie.org/3009372
如果想要兩個輪流 (或者同時) display 該怎麼做 ?
glutPostRedisplay() 是重播哪個函數 ?
※ 編輯: cory8249 來自: 140.114.221.54 (12/13 17:09)
推 VictorTom:你需要去查一下你提到與寫到的所有函數的使用說明.... 12/13 22:14
官方說明文件有看過幾遍了
不過小弟程度粗淺 不慎明白 @@"
這部分我再慢慢 google 看看好了
這幾天麻煩 V大 了
真是非常感謝 !!
※ 編輯: cory8249 來自: 140.114.221.54 (12/14 03:04)