Three.js の R62 を使用していますが、オブジェクトがシーン内の間違った場所にある原因となる丸めエラーがいくつかありました。私は数ピクセルについて話しているのではありません。オブジェクトは、予想される位置からかなり離れています。それMatrix4
が問題でFloat32Array
あり、私の計算には不十分であることがわかりました。だから私はそれをに変更しFloat64Array
、すべてがうまくいきました。
ターゲットグループにとってお気に入りのブラウザーであるため、Firefox でのみテストしました。しかし、今度はアプリケーションの相互運用性について話すために、Chrome/IE/Opera でもアプリケーションをテストする必要がありました。私は数ヶ月前にそれを行い、すべてうまくいきましMatrix4
たが、Chrome/Opera で何も起こらず、コンソールにTypeErrors
.
数時間後、WebGLRenderer
関数内setProgram
で次の行がエラーを引き起こしていることがわかりました。
_gl.uniformMatrix4fv( p_uniforms.projectionMatrix, false, camera.projectionMatrix.elements );
Chrome/Opera は賛成Uncaught TypeError: Type error
ですcamera.projectionMatrix.elements
が、なぜですか? Google によると、この WebGL 関数は Float64array ではなく Float32Array を想定しているとのことですが、Firefox でエラーが発生しないのはなぜですか? Float64Array で動作させるにはどうすればよいですか? または、大きな丸め誤差を回避する別の可能性はありますか?