gDEBuggerを使用して、私のopenGLコードのパフォーマンスを向上させようとしています(これは現在非常に悪いので、私はあなたのfpsレートも教えてくれません)。私はチュートリアルを段階的に行っています(デバッガを使ってOpenGLエラーを見つけるなど)、今は冗長な状態の変更を識別しています。それらを避けるためにコードを変更するのが本当に良いアイディアかどうか私は多少は分かりません。例えばOpenGLの冗長なコールを削除する
:
- 私のコードは
glClearAccum(0 , 0 , 0 , 0);
とglClearColor(0.0, 0.0, 0.0, 0.0);
を呼び出すことにより、 "クリーン初期化" を行います。これらは分かりやすいように冗長ですが、すべての状況でそれに頼ることができますか?いくつかのOpenGLの実装がこの初期状態を保証しない場合、ほとんどの場合それらが冗長であっても呼び出しを行う方が安全です。 - 初めて初めてシーンを描画する場合は
glDrawBuffer(GL_BACK);
と同じです。 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
も冗長であると報告されている。私は同じパラメーターで繰り返し呼び出すことを認識しています。これは、コールがglEnable(GL_TEXTURE_2D);
とglDisable(GL_TEXTURE_2D);
の間に配置され、テクスチャリングが有効になっている間にテクスチャリングが一時的に有効になっているためです。テクスチャが永久に有効になるようにパフォーマンスを傷つけるでしょうか?一時的にテクスチャリングを有効にしている場合は、初期化中にglTextEnvf
を一度だけ呼び出すことはできますか?その時点でテクスチャリングが無効になっているので失敗しますか?それとも、それはOpenGLの実装に依存していますか?
即時モード(glBegin/glEnd)または頂点配列を使用していますか? –
私はglBegin/glEndを使用しています。私はおそらく、その頂点配列の事を読む必要があるように見える... +1 – Dabbler
はい、glBegin/glEndは、あなたの悪い性能の原因である可能性が高いです。 –