2017-08-22 10 views
0

私が理解したところでは、GL_BLENDを無効にすると、ブレンドは全く起こりません。 だから私はglClear(GL_COLOR_BUFFER_BIT)をする必要はありません。既にglDisable(GL_BLEND)のときにglClear(GL_COLOR_BUFFER_BIT)が必要ですか?

私はAndroidプログラミング用のGLES20に取り組んでいます。私は以下の行を追加しました。

GLES20.glDisable(GLES20.GL_BLEND); 

私はglClear(GL_COLOR_BUFFER_BIT)を追加しない場合は、他のすべてのデバイスは、1つのパス(他のパスが正常に動作)に、一部の領域のみがレンダリングされ、ネクサス4にネクサス4 除いてうまく機能します。 glClear(GL_COLOR_BUFFER_BIT)を追加すると、Nexus 4はうまく動作します。

+2

あなたの質問の文脈は、単純な答えを与えるのに十分ではありません。深さテストは有効になっていますか?ステンシル?どのくらいのフレームバッファがレンダリングされますか?ビューポートとは何ですか?その他詳細がない場合、答えは「おそらくはい」です。 – nmr

+0

私は深度テスト、ステンシルテストを有効にしません。しかし、なぜ彼らはカラーバッファーに関連していますか? –

答えて

0

GL_BLENDが無効の場合、ドローバッファーのフラグメントは描画されていれば上書きされます。
ブレンドを無効にして、フレームごとに描画バッファのすべてのフラグメントを書き込む場合、描画プロセス中に各フラグメントが設定されるため、描画バッファをクリアすることは無意味です。
glClear(GL_COLOR_BUFFER_BIT)は、glClearColorで設定された一定の色を持つすべてのフラグメントに書き込む以外に何もしません。

各フレームがすべてのフレームに書き込まれていることを確認する必要があります。たとえば、GL_DEPTH_TESTが有効になっている場合は、とにかくglClear(GL_DEPTH_BUFFER_BITにする必要があります。

+0

ありがとうございます。それは私が思った。 glClear(GL_COLOR_BUFFER_BIT)がなければ、他のすべてのデバイスはNexus 4以外では正常に動作します。だから、これはNexus 4の奇妙なものに起因する可能性があります。 –

+0

@ Y.L。質問に対する回答が完全にあなたの問題を解決した場合は、回答を受け入れる必要があります(回答の左側にあるチェックマーク)。 – Rabbid76

+0

私の場合、Nexus 4では何か問題があると思いますか? –

関連する問題