グラフィックスプロセッサのためのデータを提供するために、

1、バッファ:データを提供するための最良の方法

OpenGL ESは、2つのメモリ領域との間のデータ交換のためのキャッシュ(バッファ)の概念を定義します。グラフィックスプロセッサのキャッシュが継続的にRAMを制御し、管理することを意味します。CPUのOpenGL ESのキャッシュにメモリからデータをコピーするためのプログラム。理想的にはもはやキャッシュに接触することなくなりますCPUで実行中のプログラムの下で、将来的にはGPUのキャッシュされた所有権を取得します。排他的なキャッシュを制御することにより、GPUはメモリを読み書きするための最も効率的な方法で可能な限り多くのことができます。それはGPUの作業のキャッシュ内のデータがCPUにプログラムを実行している間は実行し続けることができることを意味するキャッシュに適用されている間、大量のデータを処理するグラフィックプロセッサ容量非同期。

GPUのデータが利用可能なほとんどすべてのプログラムがキャッシュに配置する必要があります。キャッシュ・エンド・ジオメトリに格納されたデータ、色、照明効果、又は他の情報は重要ではありません。次のようにデータバッファは、7つのステップを提供しています。

1)を生成する(生成) - グラフィックスプロセッサ要求キャッシュ制御へのOpenGL ESは、一意の識別子を生成します。

2)結合(バインド) - キャッシュを使用して、次の動作のためのOpenGL ESを伝えます。

3)キャッシュされたデータ(バッファデータ) - のOpenGL ESは、現在キャッシュの割り当てと初期化の十分な連続メモリ(割り当てられたメモリを制御するCPUからのデータをコピーするため、通常はメモリ)にバインドされてみましょう。

4)(無効化)を有効(有効)または無効 - のOpenGL ESは、次のレンダリングにキャッシュ内のデータを使用するかどうかを教えてください。

5)ポインタ(セットポインタ)を設定 - オフセット値メモリのタイプを指示し、すべてのキャッシュ内のデータオープンGL ESデータへのアクセスを必要とします。

6)(ドロー)描画 - シーンやシーンの一部をレンダリングのOpenGL ESのデータを使用して、現在バインドされ、有効なキャッシュを教えてください。

7)(削除) - キャッシュされたが、OpenGL ESの前の世代とそれに関連するリソースの解放を教えて削除します。

理想的には、各キャッシュはかなりの時間(プログラムの可能性ライフサイクル全体)を生成するために使用することができます。生成、初期化、およびキャッシュを削除し、時にはグラフィックスプロセッサとCPUを同期させるための時間がかかります。この遅延は、GPUの存在に起因するキャッシュを削除する前に、操作で待機してキャッシュに関連付けられているすべてを完了する必要があります。第二世代プログラムとは、時間のキャッシュ数千人を削除した場合、GPUは、任意のレンダリングが完了するまでの時間を持っていないかもしれません。

キャッシュの他のタイプの同様の機能を提供しながら、キャッシングのOpenGL ESの一つのタイプは、以下のC言語の関数を定義し、各ステップの過程で行われます。

  • glGenBuffers() - のOpenGL ESは、グラフィックスプロセッサキャッシュを制御するための一意の識別子を生成する要求。

  • glBindBuffer() - キャッシュを使用して次の操作のためのOpenGL ESを教えてください。

  • glBufferData()またはglBufferSubData() - OpenGL ESのは、現在のキャッシュの割り当てにバインドされてみましょう

    そして、(RAMは通常、メモリ割り当てに制御CPUからのデータを再生する)十分な連続メモリを初期化します。

  • glEnableVertexAttribArray()またはglDisableVertexAttribArray() - OpenGLを伝えます

    ESは、次のレンダリングにキャッシュ内のデータを使用するかどうか。

  • glVertexAttribPointer() - タイプのデータのキャッシュでのOpenGL ESを告げると、すべてのニーズ

    オフセット値データへのメモリアクセス。

  • glDrawArrays()、またはglDrawElements() - 現在のバインディングとスタートを使用するようにOpenGL ESを伝えます

    データ・キャッシュは、シーン全体またはシーンの一部をレンダリングする際に使用されます。

  • glDeleteBuffers() - OpenGL ESのは、以前に生成されたキャッシュされたを削除し、関連するリソースを解放言います。

図2に示すように、フレームバッファ

  GPUは、アウトレンダリングメモリ位置に格納される2次元画像の画素データを知る必要があります。そのようなGPUキャッシュのためのデータを提供し、フレームバッファ(フレームバッファ)と呼ばれる描画バッファの結果を受け取ります。他のプログラムと同様に、キャッシュの同じ種類を生成結合し、フレームバッファを削除します。描画コマンドは、適切な時にキャッシュの内容を置き換えるので、しかし、フレームバッファは、初期化を必要としません。結合した場合のOpenGL ESの構成および機能は、自動的にデータの種類に応じて設定され、特定のハードウェアプラットフォームのオフセットされながら、フレームバッファは、暗黙的に、開かれました。

  それは同時に、フレームバッファを多く存在し、フレームバッファの任意の数に格納されているのOpenGL ESレンダリング結果を介してGPUを可能にすることができます。しかし、表示されるピクセルが特定のフレームバッファ内のフレームバッファ(フロントフレームバッファ)の前画素の色記憶要素によって制御されます。それは、ユーザーがまだ終わってレンダリングでレンダリングされた画像を見るようになるので、プログラムおよびオペレーティングシステムはほとんど、フロントフレームバッファに直接レンダリングされません。その代わりに、アプリケーションおよびオペレーティングシステムは、異なるフレームバッファに保存された結果をレンダリングすることを含め、リアフレームバッファ(バックフレームバッファ)を含みます。フレームバッファは、前フレームの終了とリアフレームバッファキャッシュのレンダリングされた画像を含む場合に、ほぼ瞬時に変化します。古いが、フロントフレームバッファフレームバッファになりながら、フレームバッファの後、新しいフロントフレームバッファになります。図1-5は、3つの表示フレームバッファ前後の画面ピクセルとの間の関係、フレームバッファを示します。

               

 

 

                      

              図1-5は、画面に表示されたピクセルの色の前にフレームバッファを決定し、同時にフレームバッファを切り替えます

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/jerryspace/p/11697978.html