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ソースです。マシンのCコンパイラではなく、OpenGLGLSLコンパイラによってコンパイルされるように設計されています。

フラグメントシェーダーには、頂点シェーダーからの出力である事前定義された変数「gl_Color」があります。

参照するサンプルには、shader.init()によって参照されるshader.fragファイル内のコードが含まれています。OpenGLライブラリ自体が、マシンのGPU命令へのコンパイルを処理します。そのファイルにコードを入れてください、そしてうまくいけば例はうまくいくでしょう:)

于 2010-12-17T08:07:33.280 に答える