glsl矢量加标量

时间:2013-02-07 14:12:01

标签: glsl

我搜索了很多但是在#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卡上编译。不幸的是我没有确切的编译结果,我只知道编译不成功。

1 个答案:

答案 0 :(得分:9)

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

来自5.9

  

算术二元运算符add(+),subtract( - ),multiply(*)和divide(/)对整数运算   浮点标量,向量和矩阵。

(...)

  

一个操作数是标量,另一个是矢量或矩阵。在这种情况下,标量操作是   独立地应用于矢量或矩阵的每个分量,产生相同大小的矢量   或矩阵。

因此,如果它不能在ATI上编译,那就意味着它的驱动程序在这方面是不正确的。