2010-12-17 19 views

答えて

8

WebGLはOpenGL ES 2.0をベースにしているので、シェーダにはGLSL ES 1.0を使用していなければなりません。 GLSL ESにはgl_Colorがありませんので、このシェーダを書き直す必要があります。

+1

ご協力ありがとうございます。私はgoogle GLSL ES 1.0です。 http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdfにあります。 GLSL ES 1.0のgl_Colorに相当するものにはどうすればアクセスできますか? – pion

+2

gl_Colorやgl_Vertex、gl_Normalなどと同等のものはありません。古い固定パイプラインの側面は複製もシミュレートもなく、glColorPointerなどの関数はES 2.0では機能しません。必要に応じて独自の属性や制服を定義し、通常の方法で取得/設定する必要があります。 – Tommy

+0

私はWebGLに新しいです。私はちょうど現在のテクセルとフレームバッファ上の現在のピクセルを混合しようとしています。それを行う最善の方法は何ですか? – pion

-3

通常のCコンパイラを使用してGLSLコードをコンパイルしようとしていると思います。

これはCコードであると思われますが、実際にはGLSLソースです。マシンCコンパイラではなく、OpenGL GLSLコンパイラによってコンパイルされています。

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

参照するサンプルにはshader.fragファイル内のコードがあり、shader.init()によって参照されます。 OpenGLライブラリ自体が、あなたのマシンのGPU命令にコンパイルされます。このファイルにコードを入れてください。

+0

元の投稿でWebGLを使用していることを忘れてしまいました。すでに動作している既存のWebGL(およびGLSL)の例を変更しています。上記のチュートリアルでgl_Colorをインクルードしようとしました。エチェーゼには正しい答えがあるようだ。 WebGLがGLSL 1.0を使用しているかもしれません。 – pion

関連する問題