2016-06-17 20 views
0

glDrawArrays(GL_TRIANGLE_STRIP、0、4)で描画されたオブジェクトの透明度を変更したい。Triangleストリップの透明度オブジェクトOpenGL es 2.0

は私が

glEnable(GL_BLEND); 
    //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glBlendFunc(GL_SRC_ALPHA, GL_SRC_ALPHA_SATURATE); 

(私は、これらのオプションを試してみました:GL_ONE_MINUS_SRC_ALPHA、GL_ZERO、GL_ONE、GL_ONE_MINUS_DST_COLOR、GL_SRC_ALPHA_SATURATE)のように、ブレンドオプションを使用している全てにおいて 、私は取得しています色は私が変更されたときに変更しましたアルファ値ですが、透明または半透明にはなりません。 アルファ= 255の場合、明るい色になります。アルファ= 1のときは黒色になりますが、透明ではありません。アルファ= 0にすると、完全に透明になります。半透過性を与える方法はありますか? (1から255までのアルファベットを与えた場合、100と言うと明るい色合いの色になりますが、背景のオブジェクトはまだ表示されません)意味はありますか? 誰かが助けてくれますか?ここで

は私のプロットのAPIが使用されている:あなたが使用したいブレンドオペレータ「オーバー」標準については

glUniformMatrix4fv(i32Location, 1, GL_FALSE, afIdentity); 
    glEnableVertexAttribArray(VERTEX_ARRAY); 
    glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, 0, 0); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

答えて

0

:描画オブジェクトの glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);アルファ値がその後、どのくらいのフォアグラウンドのが見える決定し、すなわち、ブレンド操作の結果である:

結果= NEW_VALUE *アルファ+ existing_value *(1-α)

背景オブジェクトの前に透明オブジェクトを描画する場合は、透明オブジェクトの背後にあるオブジェクトを確認するために深度テストを変更する必要があります。透過オブジェクトの深度テストが必要ない場合、または透明オブジェクトの深度テストを行いたいがオブジェクトを遮らないようにする場合は、深度書き込みを無効にする(glDepthMask(GL_FALSE);)ことで、深度テスト(glDisable(GL_DEPTH_TEST);)を無効にすることができますその背後にある。

関連する問題