2017-04-02 265 views
-2

這是我的以下錯誤,它是GLSL中的錯誤#160。GLSL頂點着色器編譯錯誤

#version 330 core 

layout (location = 0) in vec3 position; 
out vec4 pos; 

uniform mat4 model; 
uniform mat4 view; 
uniform mat4 projection; 

void main() 
{ 
    gl_Position = projection * view * model * vec4(position, 1.0f); 
    pos = position; 
} 

這是試圖編譯此GLSL程序時創建的錯誤。

ERROR: Vertex Shader Program Compilation Failed! Vertex shader failed to compile with the following errors: 
ERROR: 0:13: error(#160) Cannot convert from: "in highp 3-component vector of vec3" to: "default out highp 4-component vector of vec4" 
ERROR: error(#273) 1 compilation errors. No code generated 

我沒有關於調試GLSL的知識,所以如果有人能夠幫助它將非常感激。

+0

修復編譯錯誤不是「調試」。 –

回答

3

那麼,你的錯誤很明顯。由於您將position指定爲pos,並且posvec4,而positionvec3,並且此處沒有隱式轉換,編譯器會抱怨。要解決這個問題,只需創建一個vec4,例如position,例如

pos = vec4(position, 1.0f); 

然而,你應該好好想想爲什麼你需要爲你的位置vec4下來的管道,或者是否有posvec3就足夠與否。

+0

我是有史以來最盲目的人......感謝您爲我指出這一點,我非常關注gl_Position系列。 –

+0

@AaronSharp別擔心,不時發生在每個人身上;) –