1

glutSwapBuffer の機能がよくわかりませんでした。私のコードでは、glutSwapBuffer を使用しないと、背景色がウィンドウに表示されず、透明のままになり、背景にあるものはすべてキャプチャされます。背景色は実際には glClearColor によって割り当てられていると思いますが、なぜ glutSwapBuffer を使用せずに背景色を取得できなかったのですか。

4

2 に答える 2

2

この質問は何度も出てきます。あなたが説明しているのは、合成ウィンドウマネージャーでフロントバッファーに排他的に描画すると実際に何が起こるかだと思います。

バッファーをスワップしないと、ウィンドウが正しく描画されないため、ウィンドウが透明に表示されます。ウィンドウ マネージャーの合成にはダブル バッファリングが必要であり、多くのハイブリッド統合/ディスクリート GPU 実装 (nVIDIA Optimus など) にも必要なようです。要するに、最近のデスクトップ プラットフォームでシングル バッファ レンダリングを使用する本当の理由はありません。

確かに、あなたの状況はこれに似ていますか? このスクリーンショットは、単一バッファリングのみを使用するウィンドウが合成ウィンドウ マネージャーで移動されるとどうなるかを示しています。

もしそうなら、より完全な説明はここにあります。

于 2013-09-30T14:04:45.457 に答える
1

通常、opengl はダブル バッファリングを使用するように構成されています。

最初に1つのバッファに描画します...次に、2番目のバッファと交換して画面に表示します。glutSwapBuffer を呼び出さないと何も表示されず、正しい動作です。

opengl でのダブル (およびそれ以上) のバッファリングについて

于 2013-09-30T13:19:14.330 に答える