1

Chrome 22 と Firefox 15 の両方でこの WebGL フラグメント シェーダーをコンパイルすると、次のようになります。

precision mediump float;
uniform vec2 u_resolution;
uniform sampler2D u_tex;
void main() {
    vec2 texCoord = gl_FragCoord.xy / u_resolution;
    vec4 floatColor = texture2D(u_tex, texCoord);
    mat3 outerMat = outerProduct(floatColor.rgb,floatColor.rgb);
    gl_FragColor = vec4(outerMat[0], 1);  
}

次のエラーが表示されます。

ERROR: 0:8: 'outerProduct' : no matching overloaded function found
ERROR: 0:8: '=' :  cannot convert from 'const mediump float' to '3X3 matrix of float'

OpenGL ES 2.0 GLSL 仕様はそれmat3 outerProduct(vec3,vec3)がサポートされていることを示しており、WebGL 仕様は ES シェーダーを受け入れると述べているため、何が問題なのかわかりません。outerProduct は WebGL フラグメント シェーダーでサポートされていませんか、それとも間違っていますか?

4

3 に答える 3

2

outerProductOpenGL ES 2.0 GLSL には機能がありません。あるってどこで読んだ?(または私はそれを見逃していますか?)

ここに仕様があり ます http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf

于 2012-10-03T02:21:57.950 に答える
0

試すmat3 outerMat = outerProduct(vec3(floatColor.rgb),vec3(floatColor.rgb));

拡張するには、.rgb を使用するよりも、明示的な型を指定する方がよいかもしれません。

于 2012-10-02T22:52:31.570 に答える
0

webGL2 で利用できるようになりました。ここでシステムを確認してください: https://webglreport.com/?v=2

于 2020-05-30T19:50:14.213 に答える