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