7

問題

プロジェクトで WebGLRenderTargets にレンダリングし、それらをメイン シーンのテクスチャとして使用するところまで来ました。動作しますが、必要以上の作業をさせているようです。生成されたテクスチャは 64x64 で十分ですが、メインのレンダラー (ウィンドウの幅とウィンドウの高さ) を両方に使用しているため、WebGLRenderTargets を不必要に大きな解像度でレンダリングしています。

私は間違っているかもしれませんが、これにより、各 RenderTarget に描画するために必要な処理と、その大きなテクスチャをメッシュに描画するために必要な処理の両方が増加すると思います。

2 番目のレンダラーを使用してみましたが、レンダラー B から描画した後、レンダラー A で WebGLRenderTarget を使用しようとすると、このエラーが発生するようです。

WebGL: INVALID_OPERATION: bindTexture: object not from this context

参考までに、私の抽象化されたページをここで見ることができます(警告: 私が問い合わせているまさにその問題のために、このページはあなたのために遅れるかもしれません)。セカンダリ シーンのプレーンでシンプレックス関数を実行し、カメラの配置を使用してセクションに分割し、WebGLRenderTarget を介してセグメントをタイル ピースに適用して、流暢でありながら個々のピースになるようにしています。

質問

同じサイズのレンダラーを使用することは、より小さなレンダラーにレンダリングする場合よりもはるかに効率が悪いという私の仮定は正しいですか? もしそうなら、これに対する最善の解決策は何だと思いますか? 現在、この最適化を達成する方法はありますか?

4

1 に答える 1

4

のサイズ パラメータはrenderer.setSize()、レンダラーが画面のみにレンダリングするときにビューポートを設定するために使用されます。

レンダラーがオフスクリーン レンダー ターゲットにレンダリングする場合、レンダリング先のテクスチャのサイズはパラメータrenderTarget.widthおよびによって指定されますrenderTarget.height

したがって、あなたの質問に対する答えは、両方に同じレンダラーを使用しても問題ないということです。非効率はありません。

于 2012-10-06T15:23:23.707 に答える