0

OpenGLESを使用して画面上にグラフィックを描画するiPhoneアプリを開発しています。新しいフレームごとに、画面全体に描画します。これが私の質問につながります。各フレームのカラーバッファをクリアするためにglClearを呼び出す必要がありますか、それとも新しいデータで上書きできますか?glClear関数は現在フレームタイムの9.9%なので、それを取り除くことができれば、それは素晴らしいブーストを提供するでしょう。

私はこのトピックに関する初心者なので、これが非常に素朴な質問である場合はご容赦ください。前もって感謝します。

4

3 に答える 3

2

理論的には、省略できます。

ただし、カラーバッファをクリアしないと、以前に描画されたデータが画面に表示されたままになります。これにより、アプリケーションは変更されないデータを使用するものに制限されます。

于 2013-03-25T14:19:38.783 に答える
1

再描画の必要がない静的なシーンがある場合はglClear()、カラーバッファの呼び出しをスキップできます。

Khronos OpenGL ESドキュメントから:

glClearは、ウィンドウのビットプレーン領域をglClearColorによって以前に選択された値に設定します。

glClearは、どのバッファーをクリアするかを示す単一の引数を取ります。

GL_COLOR_BUFFER_BIT現在カラー書き込みが有効になっているバッファを示します。

于 2013-03-25T14:35:20.810 に答える
0

通常(3Dゲームを作成する場合)、カラーバッファーだけでなく、深度バッファーもクリアし、深度テストを使用して、カメラに最も近いものが描画されていることを確認します。したがって、デプスバッファをクリアすることが重要です。そうしないと、前のフレームよりもZ値が低いピクセルのみが再描画されます。カラーバッファをクリアしないと、透明なものを描画するときにも問題が発生します。

2Dアプリケーションを作成していて、自分で描画順序を管理している場合(最初にカメラから最も遠いものを描画し、次に画家のアルゴリズムとも呼ばれるものに近いものを描画します)、明確な呼び出しを省略できます。注意すべき点の1つは、このようなアルゴリズムでは別の問題が発生することです。つまり、オーバードロー、つまり同じピクセルを必要以上に頻繁に描画するという問題です。

于 2013-03-25T14:31:59.003 に答える