0

状況は次のとおりです。

作成したコンテナ内に4つのSFMLウィンドウがあります。コンテナは、最初のウィンドウから最後のウィンドウまで、ウィンドウごとに独立した再描画メソッドを呼び出します。

各ウィンドウの描画コードに線drawMyCube()ORが含まれているglClear(...)場合、フレームレートは遅くなります。

drawMyCube()sf::Clockオブジェクトの値に応じて回転する立方体を描画するだけです。

1つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約60fpsです。2つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約30fpsです。3つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約20fpsです。最後に、4つすべてがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約15fpsです。

これはパターンが出現しているように見えるので、3つのウィンドウから関数を削除し、1つのウィンドウから10回呼び出してみました。フレームレートは約6fpsになると予想していましたが、60のままでした。

なぜこれが起こっているのか誰かが知っていますか?ウィンドウ描画メソッドから他の関数​​を削除しても効果はないようです。たとえば、gluLookAt()速度が低下しないようです。

編集:フレームレート制限はゼロに設定され、vsyncはfalseです。

4

1 に答える 1

0

これは、垂直同期とまったく同じように聞こえます。各ウィンドウは垂直方向の更新を待機しているため、レートは半分になり続けます。

vsyncがオフになっているとおっしゃっていましたが、ビデオドライバーが強制している可能性があります。ドライバーの設定を確認してください。

于 2013-02-06T19:18:05.397 に答える