Framebufferオブジェクトは実際にはバッファーではなく、1 つ以上の添付ファイルを含むアグリゲーター オブジェクトであり、実際のバッファーです。Framebufferは、すべてのメンバーがバッファーへのポインターである C 構造体として理解できます。アタッチメントがない場合、Framebufferオブジェクトのフットプリントは非常に小さくなります。
Framebufferにアタッチされた各バッファは、 Renderbufferまたはtextureにすることができます。
Renderbufferは実際のバッファー (バイト、整数、またはピクセルの配列) です。Renderbufferはピクセル値をネイティブ形式で保存するため、オフスクリーン レンダリング用に最適化されています。つまり、Renderbufferへの描画は、テクスチャへの描画よりもはるかに高速です。欠点は、ピクセルが実装に依存するネイティブ形式を使用するため、Renderbufferからの読み取りがテクスチャからの読み取りよりもはるかに難しいことです。それにもかかわらず、Renderbufferがペイントされると、ピクセル転送操作を使用して、そのコンテンツを画面に直接 (または他のRenderbufferに、おそらく) コピーできます。これは、Renderbuffer があなたが言及したダブルバッファパターンを効率的に実装するために使用できます。
レンダーバッファーは比較的新しい概念です。それらの前は、Framebufferを使用してtextureにレンダリングしていましたが、テクスチャは標準形式を使用するため、遅くなる可能性があります。テクスチャにレンダリングすることは引き続き可能であり、シーンを構築するため、または別のシーンの表面にシーンを描画するために、各ピクセルに対して複数のパスを実行する必要がある場合に非常に便利です!
OpenGL wiki には、詳細とリンクを示すこのページがあります。