2

私は 3 つの v 67 の WebGLRenderTarget を使用して、テクスチャで将来使用するために 2 番目のカメラ/シーンをバッファにレンダリングしています。Three.js の標準的なものですが、CocoonJS では黙って死にます。

CocoonJS でデータにアクセスする同様の方法を試しました ( Three.js Retrieve data from WebGLRenderTarget (water sim)と同様に、コンテキストから直接 gl.readPixels にアクセスします)。しかし、何も機能していないようです。他の誰かがこれに遭遇しましたか?

4

1 に答える 1

2

Three.js デモを実行している CocoonJS のネイティブ C++ コードをデバッグしたところ、問題が見つかりました。

Three.js は、WebGLRenderTarget オブジェクトのフレーム バッファを作成し、カラー バッファ (テクスチャ) をアタッチし、renderBuffer を作成して、深度/ステンシル レンダ バッファをそれにアタッチします。問題は、不完全なフレームバッファ ステータスを引き起こす WebGL renderbufferStorage メソッドの 2 番目の引数にあります。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)

あなたのゲームで頑張ってください:)

于 2014-05-14T21:45:29.523 に答える