在两种情况下,我有一个THREE.ShaderMaterial,它没有正确渲染对象,省略了它的纹理。 在这两个例子中,中间对象是一个基本的THREE.MeshPhongMaterial错误的bindTexture(TEXTURE_2D,null);调用还是不好的着色器? Texture with three.ShaderMaterial
例1:http://jsfiddle.net/sG9MP/4/这是最靠近屏幕从未展示对象。 在这一个,它适用于renderer.render(...)但不composer.render(...)。
renderer.render(scene, camera);
//composer.render();
例2:http://jsfiddle.net/sG9MP/5/在这里,我试图复制MeshPhongMaterial着色器作为基础,所以我可以修改它。我试图完美地复制它。我复制了uniform,vert,frag,并复制了对象中的内容。我看不出有什么不同,所以我不明白为什么它不像标准的Three.js phong着色器那样工作。
所以这是两种情况,我使用THREE.ShaderMaterial,它不正确渲染着色器,我不明白为什么。在第二个例子中(这是我真正需要修复的例子,第一个例子是一个旧的测试),在webGL检查器中,我发现场景通常看起来很好,直到出现“bindTexture(TEXTURE_2D,null);”通过three.js调用它。虽然有时它只是没有它而画画。在第一个例子中,它总是绘制没有它。
我觉得我必须错过渲染器或作曲者或某事中的某种标志。或者在我的第二个示例中,我试图复制Three.js phong着色器,也许我没有完美地复制某些内容。
这里的目标只是复制phong着色器,所以我可以修改它的uniform,vert和frag。可悲的是,我不能简单地.clone()它,因为vert和frag在编译后不能被修改。