現在、iOSデバイスで実行されているOpenGLES2.0フラグメントシェーダーコードのいくつかのバグを追跡しています。コードはシミュレーターで正常に実行されますが、iPadでは大きな問題があり、計算の一部は大きく異なる結果をもたらします。たとえば0.0、iPadと4013.17シミュレーターでは、小さな違いについては話していません。いくつかの丸め誤差の結果。
私が気づいたことの1つは、iPadでは、
float1 = pow(float2, 2.0);
の結果とは非常に異なる結果をもたらす可能性があります
float1 = float2 * float2;
具体的には、pow(x, 2.0)のような大きな負の数を含む変数で使用すると-8、条件を満たした値を返すように見えましたif (powResult <= 0.0)。
また、両方の操作(pow(x, 2.0)およびx*x)の結果は、iPadとは異なる結果をシミュレーターで生成します。
使用済みのフロートはmediumpですが、私は同じものを取得しhighpます。
それらの違いについて簡単な説明はありますか?
問題を絞り込んでいますが、時間がかかるので、簡単な説明で誰かが助けてくれるかもしれません。