2012-06-17 28 views
8

Three.jsシェーダの拡張機能を有効にするにはどうすればよいですか?これまでThree.jsシェーダの拡張機能を有効にする

マイコード:

なっ拡張子:私のシェーダの

var domElement = document.createElement('canvas'); 
var gl = domElement.getContext('webgl') || domElement.getContext('experimental-webgl'); 
gl.getExtension('OES_standard_derivatives'); 

fragmentShader: [ 
    "#extension GL_OES_standard_derivatives : enable", 
    "code..." 
]... 

コンソール出力:
WARNING:午後12時26分:拡張子 'GL_OES_standard_derivatives'
エラー:0:32: 'dFdx':一致するオーバーロードされた関数が見つかりませんでした: 'dFdy':一致するオーバーロードされた関数が見つかりませんでした。
エラー:032: '=': ' 0:33:「=」:this issue on githubを読んだ後

「フロートの2成分ベクトル」に「constのmediumpフロート」から変換することはできません、私はこの例を試してみました:http://jsfiddle.net/VJca4/から、私はこれらのエラーに

WARNINGを取得します:0:27:拡張 'GL_OES_standard_derivatives'はサポートされていません
エラー:0:30: '=': 'const mediump float'から '2-component vec'に変換できません浮動小数点の浮動小数点 '
エラー:0:31:' dFdx ':一致するオーバーロードされた関数が見つかりませんでした
エラー:0:31:' = ':' const mediump float 'から' floatの2要素ベクトル '

+0

jsfiddleはVEC2が欠落していた、とthree.jsが古すぎだった - を参照します。http:// jsfiddleを.net/VJca4/9 /それは完全に動作します) – makc

答えて

6

あなたもこれを行うことができるようになります。

renderer.context.getExtension('OES_standard_derivatives'); 
+0

どうやってこれを使いましたか?私は非常に似た問題があります。 – Hobbes

+0

私もこの問題があります。私は 'renderer.context.getExtension( 'GL_OES_standard_derivatives');を呼び出していますが、シェーダコードから' ShaderMaterial'を作成しようとすると 'ERROR:0:114: 'GL_OES_standard_derivatives':extension is disabled'と表示されます。シェーダを最初の行で '#extension GL_OES_standard_derivatives:enable'で普通のwebglでコンパイルすると動作します。 – matth

+3

現在のthree.jsコードベースでこれを行う方法は、作成時に 'ShaderMaterial'に' derivatives = true'を設定することです。 – matth

1

エラーを見つけました。あなたはレンダラのDOM要素を使用する必要があります。

var gl = renderer.domElement.getContext('webgl') || 
      renderer.domElement.getContext('experimental-webgl'); 
gl.getExtension('OES_standard_derivatives'); 
関連する問題