我试图找出为什么下面GLSL代码不起作用:GLSL预处理
#ifndef VertexPositionType
#define VertexPositionType vec3
#endif
in StandardVertexShaderInputs {
VertexPositionType ds_VertexPosition;
};
vec4 ProjectVertexPosition(in vec4 v);
vec4 ProjectVertexPosition(in vec3 v);
void main() {
gl_Position = ProjectVertexPosition(ds_VertexPosition);
}
着色器拒绝编译。该信息登录状态:
错误C1008:未定义的变量“ProjectVertexPosition”
即使它不发出警告的预处理,我得到了预处理符号VertexPositionType不被替换。如果我删除预处理器定义,一切都很好。现在
,说明书说:
的#define和和#undef功能被定义为是用于具有和不具有宏 参数宏定义C++预处理器的标准。
也许下面这行是不是一个有效的预处理线?
#define VertexPositionType vec3
你尝试在多台机器/驱动程序版本GLSL支持通常比HLSL更酥,你可能已经打了一个坏的驱动程序? – Anteru
编号实际上编译NVidia 280.26,着色器版本150 ... – Luca
定义“不起作用” - 无法编译,无法链接,链接正常但不运行,还有其他吗?看看实际的编译器错误(如果有的话)是什么? –