2D テクスチャにオフスクリーン レンダリングを使用しています。最初のシェーダーは YUV 値を出力し、2 番目のフラグメント シェーダーはオフスクリーン テクスチャから YUV を読み取ります。2 番目のシェーダーでは、U と V を操作して、-0.5 から 0.5 の範囲にします。しかし、これらは、レンダリングしようとするとすぐに 0 から 1 (正) にクランプされます。私の負の値はすべて0になります。
問題がここにあることがわかりました:
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA,
width, height, 0, GLES20.GL_RGBA,
GLES20.GL_UNSIGNED_BYTE, null)
GL_UNSIGNED_BYTE の代わりに GL_FLOAT を使用すると、色の形式が一致しないためエラーが発生します。リンクから、https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xmlは、サポートされているすべての形式が 0 ~ 1 の範囲にクランプされるように見えます。次のテクスチャでも負の値を取得する方法。
GL_R16F などの他の画像形式を使用できることがわかりましたが、リンク/GLES20 ではいずれもサポートされていません。