2014-11-02 62 views

回答

7

GLSL的現代版本通過將它們聲明爲out值來完成片段着色器輸出,並且不再支持gl_FragColor,因此您的錯誤。試試這個:

out vec4 fragColor; 
void main() 
{ 
    fragColor = vec4(1.0, 0.0, 0.0, 1.0); 
} 

請注意,gl_FragDepth尚未更改,仍然可用。

有關詳細信息,請參閱https://www.opengl.org/wiki/Fragment_Shader

3

預定義的變量gl_FragColor不GLSL ES 3.00不復存在。您需要爲片段着色器的輸出定義自己的out變量。你可以使用任何你想要的名字,例如:

out vec4 FragColor; 

void main() { 
    ... 
    FragColor = ...; 
} 

這遵循完整的OpenGL的核心配置文件。沒有預定義片段着色器輸出的原因在於,它不能很好地適應多個渲染目標,並且對於需要浮點向量以外類型的渲染目標也不會很好地進行縮放。