Android と iOS 向けのクロスプラットフォーム ゲームを開発しています。いくつかのビルボードのようなオブジェクトではglBlend(GL_ONE, GL_ONE)
、黒の背景テクスチャで加算ブレンディング ( ) を使用しています。レンダリングされたオブジェクトは、ほぼどこでもきれいに見えます (つまり、テクスチャの黒いピクセルが完全に透明に見えます)。ただし、Adreno GPU を搭載した 2 つの異なる Android デバイス (1 つは Nexus 4 で、もう 1 つは Sony Xperia Go) では、次のようなアーティファクトがあります。
ハンバーガー アイコンで表示されるように、背景色がレンダリングされたクワッドに流れ込みます。ビルボードの四角形が背景の真正面にあると効果が見えないため、背景色のにじみだと思います。さらに奇妙なことに、デバイスからスクリーンショットを撮ると効果が見えないため、別のカメラで画面の写真を撮る必要があります。Disable HW Overlays
また、Android 開発者設定から有効にすると、アーティファクトが消えることにも気付きました。音量ボタンを押したときの音量スライダーなど、画面に別の透明なウィンドウがある場合にもアーティファクトは消えます。
シーンをレンダリングするときは、まず最初のパスで不透明なオブジェクトをレンダリングし、次に 2 番目のパスでglBlend(GL_ONE, GL_ONE)
深度書き込みを無効にして透明なビルボードをレンダリングします。