4

私はたくさん検索しましたが、次のステートメントが#version 330頂点シェーダーで有効かどうかを見つけることができませんでした:

#define note_the_following_whitespaces            0x01

(layout location = 7) vec3 out ov;
(layout location = 8) vec3 out rv;
void main() {
    rv = vec3(1.0,2.0,3.0);
    ov = (1.0+rv)/2.0;
    gl_Position = [whatever]...
}

特に(1.0+rv)、シェーダーはすべての nVidia カードで正常にコンパイルされますが、ATI カードでのコンパイルは拒否されます。残念ながら、正確なコンパイル結果はわかりません。コンパイルが失敗したことだけはわかっています。

4

1 に答える 1

9

http://www.opengl.org/registry/doc/GLSLangSpec.3.30.6.pdf

から5.9

二項算術演算子は、加算 (+)、減算 (-)、乗算 (*)、および除算 (/) で、整数および浮動小数点のスカラー、ベクトル、および行列を操作します。

(...)

一方のオペランドはスカラーで、もう一方はベクトルまたは行列です。この場合、スカラー演算はベクトルまたは行列の各コンポーネントに個別に適用され、同じサイズのベクトルまたは行列になります。

したがって、ATI でコンパイルできない場合は、その点でドライバーが正しくないことを意味します。

于 2013-02-07T14:17:29.583 に答える