Adreno 200・Tegra 250と、PowerVR SGX540で
行列計算の結果が異なる。
確認したのは4次元の場合。
mat4 m;
vec4 p;
p = p*m;
詳しく調査していないけれど、PowerVRで表示の奥行きが崩れているので、
列か行どちらか4番目の扱い方が違うっぽい。
列ベクトルで、変換は左から行列を掛けるように行列を作っていると、
mat4 m;
vec4 p;
p = p*m;
でよいはず。実際、Adreno 200・Tegra 250では問題ない。
(column majorだから逆から掛けている)
これだとPowerVRで崩れるので、シェーダに渡す前に行列を転置、
p = m*p;
とすると3つのGPUで上手くいく。なんだこれは。
ES2.0で、glUniformMatrix のtranspose引数はG_FALSEじゃないといけないの、
すぐに忘れるな。