状況は次のとおりです。
作成したコンテナ内に4つのSFMLウィンドウがあります。コンテナは、最初のウィンドウから最後のウィンドウまで、ウィンドウごとに独立した再描画メソッドを呼び出します。
各ウィンドウの描画コードに線drawMyCube()
ORが含まれているglClear(...)
場合、フレームレートは遅くなります。
drawMyCube()
sf::Clockオブジェクトの値に応じて回転する立方体を描画するだけです。
1つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約60fpsです。2つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約30fpsです。3つのウィンドウがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約20fpsです。最後に、4つすべてがこれらの関数(のいずれか)を呼び出す場合、フレームレートは約15fpsです。
これはパターンが出現しているように見えるので、3つのウィンドウから関数を削除し、1つのウィンドウから10回呼び出してみました。フレームレートは約6fpsになると予想していましたが、60のままでした。
なぜこれが起こっているのか誰かが知っていますか?ウィンドウ描画メソッドから他の関数を削除しても効果はないようです。たとえば、gluLookAt()
速度が低下しないようです。
編集:フレームレート制限はゼロに設定され、vsyncはfalseです。