作者asdiii (好想飛)
看板C_and_CPP
標題[問題] OpenGL 快速交換frame會掉frame 求解
時間Wed Aug 11 21:20:08 2021
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Visual Studio 2019
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenGL
問題(Question):
1. 餵入兩張圖片 使畫面配合顯示器輸出頻率交換但不知為何約 100 frame左右
會掉 1frame,但程式依然執行想問是我哪裡有問題,導致他沒有辦法穩定?
2. 根據我的理解對framebuffer object進行紋理依附,因為我想先把圖塞到GPU
的記憶體中,我猜想這樣會讓兩張圖片交換速度更快更順暢,而且看顯示卡
記憶體有被我占用 但我還是不確定我是否是圖從CPU送出還是GPU先存好才
交換 請問有方向或者方法讓我進一步確認嗎?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://hackmd.io/@kkbox36930/H1ff2BZxF
補充說明(Supplement):
對這個opengl有點生手 感謝大家的幫忙
程式碼放在markdown中
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.126.66 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1628688011.A.23E.html
1F:推 Schottky: 最近比較忙,星期日再來看 08/12 05:49
2F:→ Schottky: 你的螢幕更新頻率是 60Hz 還是 120Hz? 08/12 05:50
60Hz/75Hz 都有 倍數或者減半我都試過 都會
3F:推 pponywong: 可能跟你的程式沒關係 你要查一下glut跟window display 08/12 08:43
4F:→ pponywong: 不知道glut跟windows vsync怎麼配合的 08/12 08:45
5F:→ pponywong: 另外是不是用GPU還是PC記憶體 要看driver怎麼寫 08/12 08:46
6F:→ pponywong: 電腦獨顯你用texture還是framebuffer都是用GPU memory 08/12 08:47
我想全部確認放在 GPU獨立記憶體中 我怕放在GPU共用記憶體 本質上還是CPU的主記憶體
不知道會不會有影響
7F:→ Killercat: 不是很確定 但是看看是不是Triple Buffer搞的鬼 08/12 13:32
這個我也考慮過是不是三重frame buffer 我覺得比較像是每frame輸出指定出去到顯卡再
到螢幕真的刷新 有微妙的時間差 導致幾秒後有時間不匹配的問題 苦手
※ 編輯: asdiii (36.230.126.66 臺灣), 08/12/2021 23:38:40
9F:推 paintlife08: 會不會是 glutTimerFunc()那一行? 它吃unsigned int. 08/13 10:27
10F:→ paintlife08: 16.67 會變成 16. 08/13 10:29
11F:→ paintlife08: 查了一下,glutTimerFunc()好像也不保證一定會在設定 08/13 10:54
12F:→ paintlife08: 的值更新. 08/13 10:55