我正在使用三个v67的WebGLRenderTarget来渲染第二个摄像头/场景到缓冲区,以供将来在纹理中使用。在Three.js中是标准的东西,但在CocoonJS中它会静悄悄地死去。
我尝试过用类似的方法访问CocoonJS中的数据(直接从上下文访问gl.readPixels,类似于Three.js Retrieve data from WebGLRenderTarget (water sim) )。但似乎什么都不起作用。其他人也遇到过这种情况吗?
发布于 2014-05-15 05:45:30
我已经调试了运行Three.js演示的CocoonJS的原生Three.js代码,我发现了问题。
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)祝您的游戏好运:)
https://stackoverflow.com/questions/23621721
复制相似问题