【问题标题】:CocoonJS + Three.js webGLRenderTarget silent deathCocoonJS + Three.js webGLRenderTarget 无声死亡
【发布时间】:2014-05-13 02:05:25
【问题描述】:
【问题讨论】:
标签:
javascript
three.js
cocoonjs
【解决方案1】:
我已经调试了运行 Three.js 演示的 CocoonJS 的原生 C++ 代码,我发现了问题。
Three.js 为 WebGLRenderTarget 对象创建一个帧缓冲区,附加颜色缓冲区(纹理),创建一个渲染缓冲区并为其附加一个深度/模板渲染缓冲区。问题出在 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)
祝你的游戏好运:)