5

我正在查看具有以下代码片段的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 是未声明的标识符的错误。

我做错什么了?

在此先感谢您的帮助。

4

2 回答 2

9

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

于 2010-12-17T08:17:49.960 回答
-3

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

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

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

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

于 2010-12-17T08:07:33.280 回答