我試圖找出爲什麼下面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
定義「不起作用」 - 無法編譯,無法鏈接,鏈接正常但不運行,還有其他嗎?看看實際的編譯器錯誤(如果有的話)是什麼? –