2

次の単純なフラグメント シェーダーがあります。

precision highp float;
main()
{
gl_FragColor = vec4(0.15, 0.15, 0.15, 0.15);
}

フレーム バッファ オブジェクトを使用してテクスチャにレンダリングしています。フレーム バッファから値を読み戻すと、次のようになります。

38、38、38、38、39、39、39、39、38、38、38、38、39など

0.15*255 = 38.25 したがって、デスクトップ GPU (intel 4000) と Tegra 3 で得られるすべてのピクセルで均一に 38 になると予想されます。誰かがこの問題に光を当てることができれば幸いです。Mali-400MP は Samsung Galaxi s2、s3、および s3 mini で使用されているため、モバイル デバイス用の GPGPU を使用するすべての人にとって重要です。

4

1 に答える 1

3

あるピクセルから残ったエラーが次のピクセルに持ち越され、切り上げられるため、出力がディザリングされているように見えます。OpenGL では GL_DITHER がデフォルトでオンになっていることを思い出してください。glDisable(GL_DITHER) を実行してみてください。

于 2014-07-14T18:00:37.917 に答える