0

OpenGLES 1.1を使用しています(現時点では選択肢はありません)。ターゲットOSはAndroidです。OpenGLES +フレームバッファのアーティファクト

メインフレームバッファにレンダリングするときと、テクスチャにレンダリングするときに、多少の矛盾があります。

通常の画面にレンダリングすると、すべて正常です。私がテクスチャにレンダリングすると、アルファが半透明であればどこでも、グラフィックの周りにダークリムができます。

ここでは私のヘルパー関数です:

void RenderNormal() 
{ 
    if (!gIsRenderToTexture) 
    { 
     glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 
     glBlendEquationOES(GL_FUNC_ADD_OES); 
    } 
    else 
    { 
     glBlendFuncSeparateOES(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA,GL_ONE,GL_ONE_MINUS_SRC_ALPHA); 
     glBlendEquationSeparateOES(GL_FUNC_ADD_OES,GL_FUNC_ADD_OES); 
    } 
} 

void RenderAdditive() 
{ 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE); 
} 

void RenderMultiply() 
{ 
    glBlendFunc(GL_ZERO, GL_SRC_COLOR); 
} 

ので、いくつかのデータ:新しいシステムでは

  • が、これは(iOS版、OSX、およびLinux上でも)だけで正常に動作のKindleで
  • 火事、私はまだ暗い縁を得る。
  • KitKatを実行している古いAndroidデバイスでは、私のadditive/multiply関数がオフにならない(glBlendFuncとglBlendFuncSeparateの間のジャグリングのために...私は何かをオフにしていないが、修正するために何をしようとしているそれは悪化させる)

私はこれらの3つの機能をレンダリングとテクスチャの両方で操作でき、通常の画面にレンダリングできるようにする方法を探しています。お手伝いできますか?

+0

バインド後にフレームバッファをクリア( 'glClear')しますか? – Rabbid76

+0

ええええええええええと...問題は、ゼロアルファ(通常のフレームバッファの1アルファとは対照的に)上に描くことのようです。私は、作業中のゲームでレンダーターゲットを「レイヤー」として使用しています。また、新しいデバイスでは動作することに注意してください。古いデバイスでは必要としない新しいデバイスでは必要ないハウスキーピングがあると思われます。 – Raptisoft

+0

なぜ1.0アルファにクリアされないのですか? – solidpixel

答えて

0

さて、作業と調査の日、私は最終的にターゲットデバイスでOESがサポートされていないことを知りました。つまり、この問題を抱えている人は... Kindle Fireと古いタブレットの多くは、glBlendFuncSeparateOESまたはglBlendEquationOESをサポートしていないため、まったく失敗します。

関連する問題