缺少 GLSL 功能
Missing GLSL functionality
我已将一个 Visual Studio 项目移至另一台计算机,现在 GLSL 无法编译以前运行良好的着色器。它在隐式地将 vec4s 转换为 vec3s 时卡住了,它告诉我 'dot' 函数未定义,例如。
我正在使用 GLSDK,项目构建正确,glGetString(GL_SHADING_LANGUAGE_VERSION) 告诉我 4.40。这显然是我没有安装但习惯了的东西,但是我四处搜索并无法弄清楚是什么。
抱歉,听起来您的老司机有点过于宽容了。您的新驱动程序在拒绝着色器方面是正确的。
vec4 a = vec4(1.0, 2.0, 3.0, 4.0);
vec3 x = vec3(a); // Ok
// vec3 y = a; error
的确,如果我运行通过reference compiler进行隐式转换,我得到以下错误信息:
ERROR: 0:4: '=' : cannot convert from '4-component vector of float' to '3-component vector of float'
ERROR: 1 compilation errors. No code generated.
尝试使用 reference compiler 验证您的脚本,它可能会发现一些像这样的可移植性问题。您唯一真正的选择是修复损坏的着色器。
dot()
呢?
试试这个:
#version 330
void main() {
vec4 x = vec4(1.0);
vec3 y = vec3(2.0);
float z = dot(x, y);
}
当我 运行 验证器时,我得到:
ERROR: 0:5: 'dot' : no matching overloaded function found
ERROR: 1 compilation errors. No code generated.
这里的错误是我对 dot()
的参数类型错误。同样,问题出在我的着色器中。
我已将一个 Visual Studio 项目移至另一台计算机,现在 GLSL 无法编译以前运行良好的着色器。它在隐式地将 vec4s 转换为 vec3s 时卡住了,它告诉我 'dot' 函数未定义,例如。
我正在使用 GLSDK,项目构建正确,glGetString(GL_SHADING_LANGUAGE_VERSION) 告诉我 4.40。这显然是我没有安装但习惯了的东西,但是我四处搜索并无法弄清楚是什么。
抱歉,听起来您的老司机有点过于宽容了。您的新驱动程序在拒绝着色器方面是正确的。
vec4 a = vec4(1.0, 2.0, 3.0, 4.0);
vec3 x = vec3(a); // Ok
// vec3 y = a; error
的确,如果我运行通过reference compiler进行隐式转换,我得到以下错误信息:
ERROR: 0:4: '=' : cannot convert from '4-component vector of float' to '3-component vector of float' ERROR: 1 compilation errors. No code generated.
尝试使用 reference compiler 验证您的脚本,它可能会发现一些像这样的可移植性问题。您唯一真正的选择是修复损坏的着色器。
dot()
呢?
试试这个:
#version 330
void main() {
vec4 x = vec4(1.0);
vec3 y = vec3(2.0);
float z = dot(x, y);
}
当我 运行 验证器时,我得到:
ERROR: 0:5: 'dot' : no matching overloaded function found ERROR: 1 compilation errors. No code generated.
这里的错误是我对 dot()
的参数类型错误。同样,问题出在我的着色器中。