【问题标题】:CocoonJS + Three.js webGLRenderTarget silent deathCocoonJS + Three.js webGLRenderTarget 无声死亡
【发布时间】:2014-05-13 02:05:25
【问题描述】:

我正在使用三个 v 67 的 WebGLRenderTarget 将第二个相机/场景渲染到缓冲区以供将来在纹理中使用。 Three.js 中的标准东西,但它在 CocoonJS 中无声无息地消亡。

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

【问题讨论】:

    标签: 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)
    

    祝你的游戏好运:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 2017-01-24
      • 2013-08-12
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多