gl_Color是WebGL上未声明的标识符

时间:2010-12-17 06:42:36

标签: opengl-es webgl fragment-shader

我正在查看http://www.swiftless.com/tutorials/glsl/3_glcolor.html,其中包含以下代码段:

void main() {
// Set the output color of our current pixel
gl_FragColor = gl_Color;}

我试图在我的WebGL上使用gl_Color。我收到一个错误,gl_Color是未声明的标识符。

我做错了什么?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

WebGL使用Open GL ES 2.0作为基础,因此您应该使用GLSL ES 1.0作为着色器。 GLSL ES没有gl_Color,因此您必须重写此着色器。

答案 1 :(得分:-3)

我的猜测是你正在尝试使用常规C编译器编译GLSL代码。

它看起来应该是C代码,但它实际上是GLSL源代码 - 由OpenGL GLSL编译器编译而不是你的机器C编译器。

片段着色器有一个预定义的变量'gl_Color',它是顶点着色器的输出。

您引用的示例包含shader.frag文件中的代码,该文件由shader.init()引用。 OpenGL库本身将处理将其编译为机器的GPU指令。将代码放在该文件中,希望该示例能够正常工作:)