2017-04-03 4 views
0

を呼び出します。本当に標準的な手順ですが、一般的なビデオゲームでは、これは確かに最良のアプローチです(私はもともとこのコードをOpenGLのゲームチュートリアルから取りました)。しかし、私にとっては、3Dシーンはコンピュータゲームのように急速かつ予期せず変化することはありません。 3Dシーン自体は時々変更される可能性がありますが、レンダリングコール(一般的には幾何学的な問題の視覚化ツール)が変わることはありません。ユーザはカメラの位置/向きを制御することができるが、カメラが数秒/分(潜在的に何百ものレンダリングコール)動かない時間があり、また3Dシーンは静的である可能性が高い私は本当に連続したレンダリングループが必要なのだろうか?レンダリングループ対は、明示的に、私は世界の変化に応じて更新された画面を維持するために、固定フレームレートでレンダリングループを使用してOpenGLを使った3Dシミュレーションプログラムに取り組んでいます更新方法

私の考えは、私が自動レンダリングループを削除し、代わりに私が明示的にいずれかの場合、私の更新メソッドを呼び出します、

  1. 3Dシーンの変化(非常にまれ)
  2. カメラが移動(ということです

私はこれを主に研究目的に使用するので、シーン/カメラは一度に数分間1つの状態にとどまる可能性が高く、継続的に変更されていないときにフレームバッファに保存されます。

私の質問が続いており、これは良いアプローチですか? 3Dグラフィックスレンダリングのすべてのオンラインチュートリアルはゲームデザインを扱うようですが、それは本当に私の必要条件ではありません。言い換えれば、何かが変わるたびに手動で "update()"を呼び出すのに対して、レンダーループを使うことの長所と短所は何ですか?

おかげ

答えて

1

このアプローチの問題は、実際に3DS MAXのような多くの3Dアプリは、明示的なレンダリングを使用し、ありません。あなたのニーズに合ったものを選んでください。大半のゲームシーンでは各フレームが変更されるので、更新ループがある方が良いですが、チェスゲームをしていたら、アニメーションUIなしでもシーンが変わったときだけ明示的なレンダリングを使用できます。

3DSのような稀な変化を伴うアプリケーションの場合

、または唯一の変更にレンダリングを呼び出すために良いだろうブレンダ。このようにしてCPU/GPUを節約できますが、電力とPCはあまり熱くなりません。

明示的なレンダリングでは、パフォーマンスを向上させるために、カメラが動いたときに簡略化されたシーンを描画するような、いくつかのパフォーマンストリックを使用することもできます。その後、カメラが停止すると、バックグラウンドでフルシーンをレンダリングし、低品質のレンダリングを新しいレンダリングに置き換えます。

+0

おかげで、非常に明確で親切な答え – JeneralJames

関連する問題