現在、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
ます。
それらの違いについて簡単な説明はありますか?
問題を絞り込んでいますが、時間がかかるので、簡単な説明で誰かが助けてくれるかもしれません。