這裏的情況:SFML繪製OpenGL到多個窗口非常緩慢
我有4個SFML窗口,這是在我已經建立的容器內。容器爲每個窗口調用獨立的重繪方法,從第一個開始,最後一個結束。
如果每個窗口的繪圖代碼包含行drawMyCube()
或glClear(...)
,則幀速率變慢。
drawMyCube()
只繪製一個根據sf :: Clock對象的值旋轉的立方體。
如果一個窗口調用這兩個函數中的任何一個,則幀速率爲〜60fps。 如果兩個窗口調用(任一)這些函數,幀速率爲〜30fps。 如果三個窗口調用(這兩個函數中的任何一個),則幀速率爲〜20fps。 最後,如果全部四個呼叫(任一)這些功能,幀速率是〜15fps。
這看起來像一個新興的模式,所以我試圖從3個窗口中刪除功能,並從一個窗口調用它們10次。我期待的幀速率是〜6fps,但它仍然是60.
有誰知道爲什麼會發生這種情況?如果我從窗口繪圖方法中刪除任何其他功能,似乎沒有任何影響,例如,gluLookAt()
似乎沒有減慢速度。
編輯:幀率限制設置爲零,並且vsync爲false。
其實這聽起來是正確的。我不知道如何使用運行在MacBook Pro上的(X)Ubuntu Linux。 我記得過去大概一個月前就有過這樣的問題,因此我訂購了一臺帶有真正圖形處理器的新筆記本電腦。仍然在等待它,雖然... 但是:有什麼辦法可以解決這個問題? – user3728501
如果驅動程序強制執行vsync,則只能在驅動程序中禁用它。從個人經驗來看,nvidia Linux驅動似乎在這方面有一個缺陷,並默認強制vsync。我發現啓動和退出nvidia-settings應用程序會關閉它。 –
這對我不起作用 - 在啓動時,我收到錯誤消息「您似乎沒有使用nvidia驅動程序」 - 猜測我使用的是英特爾? – user3728501