aframe支持webgl2吗?我正在尝试使用
precision mediump sampler3D
在片段着色器中,出现此错误:
THREE.WebGLShader: gl.getShaderInfoLog() fragment ERROR: 0:106: 'sampler3D' : Illegal use of reserved word
ERROR: 0:106: 'sampler3D' : syntax error
默认情况下,我读到threejs支持webgl1,并且我必须在html中添加脚本标签以支持webgl2。
<script src="/path/to/WebGL.js"></script>
此外,我尝试在文件的开头添加着色器版本,但随后显示:
'version' : #version directive must occur before anything else, except for comments and white space
有没有办法做到这一点?
答案 0 :(得分:0)
好的,我做到了(至少这是一个里程碑)。
问题在于Aframe用来初始化场景的webgl上下文。默认情况下,它是webgl,而不是webgl2。保留字“ sampler3D”仅在webgl2中可用,这就是我收到错误的原因。 我必须克隆aframe存储库,在文件src \ core \ scene \ a-scene.js中修改方法setupCanvas并添加对webgl2的支持:
canvasEl = document.createElement('canvas');
var contextEl = canvasEl.getContext( 'webgl2' );
sceneEl.context = contextEl;
,然后在setupRenderer()方法中添加属性:
context: this.context,
到rendererConfig映射。
这使我的着色器上运行了“ precision mediump sampler3D”行。