2011-07-07 3 views
2

私は1つのテクスチャを持つwebglの5つのボックスをすべてレンダリングすると、アプリケーションは60fpsで動作します。しかし、70ボックスをレンダリングすると〜40fpsのパフォーマンスが向上しますが、ビューのボリュームはまだ5です。WebglのFrustumビュー

私はこのアプリケーションをデバッグしました。錐台の私は、gl.viewport宣言がビューポリゴンから切り取られているが、そうではないと考えました。

fustrumカリングがこれを回避する方法であるかどうか知りたいですか? fustrumカリングをどのように起動できますか? webglコマンドがありますか、それとも手動で行う必要がありますか?

ありがとうございます。

+0

これは他のQ&Aのコピー貼りですか?あなたの質問の最初の文に、LinkedIn、Twitter、FBのような「共有」見出しがあるのでしょうか? "0投票のお気に入りのシェア[fb]シェア[tw]シェア[in]"。非常に非正規の、特にタイトルの「疑い」と聞こえます。 –

+0

はい、それはopenglの未回答の古い投稿からのコピー貼り付けです。 – JoniPichoni

+0

スタック交換ネットワーク内でクロスポストしないでください:http://gamedev.stackexchange.com/questions/14587/webgl-rendering-performance-and-frustum-culling –

答えて

1

あなたはそれを推測しました。手動で行う必要があります。

しかし、この手法はオブジェクトレベルにあります。ビューポートの外にある個々の三角形は、ハードウェアによって自動的に選択されます。

ボックスの数が増えるにつれてループループが他の非効率性を低下させる可能性がありますか?たとえば、各ボックスのテクスチャをバインドしていますか?または、getAttribLocationまたはgetUniformLocationを使用してシェーダにクエリを実行しますか?あるいは、WebGLの他のクエリを実行すると(パイプラインが劇的に遅くなります)

+0

私はコードを修正しました。私はfrustumを実装しましたレンダリングする前にプレーンを切り取って(球体のテクニック[リンク](http://www.lighthouse3d.com/tutorials/view-frustum-culling/))、すべてがうまくいっています。あなたが言うように、私はテクスチャに各ボックスを束縛しないように指示しました。だから私は再び60fpsで走っています。ありがとう。 – JoniPichoni

+0

集中的なフラグメントシェーダーがある場合は、Zプレパスを使用することをお勧めします。 – JoniPichoni

+0

@ジョニー、私は好奇心だ、あなたは錐台のカリングを削除する場合、あなたはまだ60fpsを得ますか? – brainjam