-1

vsync は glfwSwapInterval(1) または glfwSwapInterval(0) でオンとオフを切り替えます

単一のビューポートは glClear --> glViewport(0, 0, win_w,win_h) --> drawscene() --> レンダリング ループの glfwSwapBuffers です。

ダブル ビューポートは glClear --> glViewport(0, 0, win_w/2,win_h) --> drawscene() --> glViewport(win_w/2, 0, win_w/2,win_h) --> drawscene() -- >レンダリングループのglfwSwapBuffers

vsync のないシーンの単一ビューポート --> 140 fps

vsync のないシーンのダブル ビューポート --> 70 fps (同じシーンを 2 回描画しているため、予想通り)

vsync を使用したシーンの単一ビューポート --> 60 fps (モニターのリフレッシュ レートが 60 Hz であるため、予想どおり)

vsync を使用した私のシーン ダブル ビューポート --> 30 fps (??? vsync なしで 70 > 60 fps を達成しているため、ここでは 60 fps を期待しています。呼び出す必要がある追加の GLFW 関数はありますか?)

4

1 に答える 1

1

おそらく問題は、各レンダリング呼び出しの最後に glFinish またはスワップ バッファ コマンドを配置することです。これは、すべての描画コマンドが実行されるまでレンダリング エンジンが停止することを意味します。それはあなたがとても遅くなった方法を説明するかもしれません.

2 つのレンダリング コールの最後に 1 つだけ配置する必要があると思います。

于 2015-04-21T08:26:46.810 に答える