英特尔核显运行opengl时的帧数过高或过低问题,opengl帧数问题
我相信不止我一個人在學習OpenGL時遇到了這些問題,國內(nèi)外的相關資料或解決方法很難找,也僅在glfw論壇里找到了幾個提出這個問題的人,并摸索到了莫名其妙的解決方法,具體原因也沒弄清楚。
這里也希望如果有遇到相同問題的人,也能搜索到我寫的這些東西來暫時解決這個問題和它帶來的煩惱。
下面就是幀數(shù)的問題:
1.opengl的代碼在英特爾核心顯卡上運行時幀數(shù)超高,會超過1000fps甚至達到2000fps,核顯GPU負載直接達到100%
這個問題具體的原因暫時不清楚,但有說法是英特爾核顯在運行時沒有幀數(shù)限制,能跑多快就跑多快,從而產(chǎn)生這個問題。
解決的方法是在主函數(shù)進入循環(huán)之前加入glfwSwapInterval(1),這個代碼能啟動opengl的垂直同步功能。但在英偉達GPU上加入這行代碼反而會引起畫面撕裂的問題,具體原因不清楚,但英偉達GPU在運行OpenGL代碼時本就自帶垂直同步功能,也就無視掉吧。
2.在加入glfwSwapInterval(1)之后,英特爾核顯運行OpenGL代碼時會出現(xiàn)渲染窗口幀數(shù)低于屏幕刷新率的現(xiàn)象,產(chǎn)生明顯的卡頓感,然而主循環(huán)每秒循環(huán)次數(shù)不受影響
這個問題的解決方法是在循環(huán)中加入glGetError()或glFinish(),窗口的幀數(shù)就會恢復到與屏幕刷新率同步恢復正常,順便一提啟動Fraps也會使窗口幀數(shù)恢復正常。具體的原因不知道,也許是軟件問題,也許是驅動問題,也許是硬件問題,也許是硬件廠商問題。但這已經(jīng)超越了初學者的范疇,也暫時不打算討論了。
這是我在glfw論壇上提出的這個問題,回答者也在回復里貼上了其他與我相似的問題:
https://discourse.glfw.org/t/i-have-a-question-about-fps/1498/2
glfw論壇的老哥很好,懂點英語的朋友也以去那里學習學習。
再添加點關鍵字:英特爾核顯opengl,opengl幀數(shù)問題,相同opengl代碼在不同GPU上幀數(shù)不同,英特爾核顯運行opengl卡頓,英特爾核顯運行opengl幀數(shù)過高。
希望這點文字被更多的opengl初學者看到,并解決他們的問題和問題帶來的煩惱。
總結
以上是生活随笔為你收集整理的英特尔核显运行opengl时的帧数过高或过低问题,opengl帧数问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 理解使用requests库
- 下一篇: 通达信交易接口及说明用法