如何在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..."
]...
控制台输出:
警告:0:26:不支持扩展“GL_OES_standard_derivatives”
错误:0:32:'dFdx':找不到匹配的重载函数
错误:0:32:'=':无法从'const mediump float'转换为'浮动的2分量向量'
错误:0:33:'dFdy':找不到匹配的重载函数
错误:0:33:'=':无法从'const mediump float'转换为'浮动的双组分向量'
阅读this issue on github后,我尝试了这个例子:从http://jsfiddle.net/VJca4/我收到了这些错误
警告:0:27:不支持扩展“GL_OES_standard_derivatives”
错误:0:30:'=':无法从'const mediump float'转换为'浮动的双组分向量'
错误:0:31:'dFdx':找不到匹配的重载函数
错误:0:31:'=':无法从'const mediump float'转换为'浮动的双组分向量'
答案 0 :(得分:7)
你也应该能够这样做:
renderer.context.getExtension('OES_standard_derivatives');
答案 1 :(得分:1)
发现错误。您必须使用渲染器的dom元素:
var gl = renderer.domElement.getContext('webgl') ||
renderer.domElement.getContext('experimental-webgl');
gl.getExtension('OES_standard_derivatives');