CocoonJS + Three.js webGLRenderTarget沉默死亡

时间:2014-05-13 02:05:25

标签: javascript three.js cocoonjs

我使用三个v 67的WebGLRenderTarget将第二个相机/场景渲染到缓冲区以供将来在纹理中使用。 Three.js中的标准内容,但它在CocoonJS中死于沉默。

我尝试过类似的方法来访问CocoonJS中的数据(直接从上下文访问gl.readPixels,类似于Three.js Retrieve data from WebGLRenderTarget (water sim))。但似乎没有任何效果。 还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:2)

我调试了运行Three.js演示的CocoonJS的本机C ++代码,我发现了问题。

Three.js为WebGLRenderTarget对象创建一个帧缓冲区,附加颜色缓冲区(纹理),创建一个renderBuffer并为其附加深度/模板渲染缓冲区。问题出在WebGL renderbufferStorage方法的第二个参数中,它会导致帧缓冲区状态不完整。 Three.js应检查该错误(使用checkFramebufferStatus方法)以避免无声错误,但似乎没有。

我已经提交了修复程序,它将在下一个CocoonJS版本上准备就绪。

现在你可以在JS代码上修复它(在下一个版本中你不需要这个修复)

只需在Three.js中替换此行

j.renderbufferStorage(j.RENDERBUFFER,j.DEPTH_STENCIL,b.width,b.height)

有了这个:

j.renderbufferStorage(j.RENDERBUFFER,navigator.isCocoonJS?35056:j.DEPTH_STENCIL,b.width,b.height)

祝你好运:)

相关问题