我正在尝试弄清楚以下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