[問題] OpenGL 快速交換frame會掉frame 求解

看板C_and_CPP (C/C++)作者 (好想飛)時間3年前 (2021/08/11 21:20), 3年前編輯推噓3(309)
留言12則, 4人參與, 3年前最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1628688011.A.23E.html

08/12 05:49, 3年前 , 1F
最近比較忙,星期日再來看
08/12 05:49, 1F

08/12 05:50, 3年前 , 2F
你的螢幕更新頻率是 60Hz 還是 120Hz?
08/12 05:50, 2F
60Hz/75Hz 都有 倍數或者減半我都試過 都會

08/12 08:43, 3年前 , 3F
可能跟你的程式沒關係 你要查一下glut跟window display
08/12 08:43, 3F

08/12 08:45, 3年前 , 4F
不知道glut跟windows vsync怎麼配合的
08/12 08:45, 4F

08/12 08:46, 3年前 , 5F
另外是不是用GPU還是PC記憶體 要看driver怎麼寫
08/12 08:46, 5F

08/12 08:47, 3年前 , 6F
電腦獨顯你用texture還是framebuffer都是用GPU memory
08/12 08:47, 6F
我想全部確認放在 GPU獨立記憶體中 我怕放在GPU共用記憶體 本質上還是CPU的主記憶體 不知道會不會有影響

08/12 13:32, 3年前 , 7F
不是很確定 但是看看是不是Triple Buffer搞的鬼
08/12 13:32, 7F

08/12 15:36, 3年前 , 8F
https://tinyurl.com/y5a24bar 關閉試試看 預設是開的
08/12 15:36, 8F
這個我也考慮過是不是三重frame buffer 我覺得比較像是每frame輸出指定出去到顯卡再 到螢幕真的刷新 有微妙的時間差 導致幾秒後有時間不匹配的問題 苦手 ※ 編輯: asdiii (36.230.126.66 臺灣), 08/12/2021 23:38:40

08/13 10:27, 3年前 , 9F
會不會是 glutTimerFunc()那一行? 它吃unsigned int.
08/13 10:27, 9F

08/13 10:29, 3年前 , 10F
16.67 會變成 16.
08/13 10:29, 10F

08/13 10:54, 3年前 , 11F
查了一下,glutTimerFunc()好像也不保證一定會在設定
08/13 10:54, 11F

08/13 10:55, 3年前 , 12F
的值更新.
08/13 10:55, 12F
文章代碼(AID): #1X4ywB8- (C_and_CPP)
文章代碼(AID): #1X4ywB8- (C_and_CPP)