2016-05-17 98 views
3

我有一個頂點着色器,可以在Windows上使用OpenGL正常工作。我想在支持OpenGL ES2.0的iPad上使用相同的着色器。GLSL ES等同於OpenGL GLSL'out'關鍵字?

編譯着色器的失敗:

Invalid storage qualifiers 'out' in global variable context 

從我已閱讀,在「出」關鍵字所需GLSL 1.5將iPad將不會支持。是否有一個等同的關鍵字可用於將顏色傳遞到片段着色器中?

attribute vec4 vPosition; 
attribute vec4 vColor; 

uniform mat4 MVP; 

out vec4 pass_Color; 

void main() 
{ 
    gl_Position = MVP * vPosition; 
    pass_Color = vColor; 
} 

該頂點着色器用於通過我創建梯度共混物,所以我分配顏色的三角形的各頂點,然後將片段着色器內插每個頂點之間的顏色。這就是爲什麼我沒有將直接顏色直接傳遞給片段着色器。

+0

請注意,所有最近的iPad都支持ES 3.0,它與更新版本的桌面OpenGL更兼容。 –

+0

@ReetoKoradi我希望我擁有一個:) – SparkyNZ

回答

1

解決!在我使用的GLSL ES 1.0中,我需要使用'變化'而不是'in'和'out'。這裏是工作着色器:

attribute vec4 vPosition; 
attribute vec4 vColor; 

uniform mat4 MVP; 

varying vec4 pass_Color; 

void main() 
{ 
    gl_Position = MVP * vPosition; 
    pass_Color = vColor; 
}