簡単な質問があります。メモリから整数値をチェックするか、opengl にプログラムを使用するか、テクスチャをバインドするなどの単純なことを行うように依頼する方が速いですか? 私はシェーダーマネージャークラスを書いていますが、何か違いがあるのだろうかと思っています.私の観点からは、不要な呼び出しを避けるために整数をチェックする方が安いようです.
2 に答える
不必要なパイプライン状態の変更を避けることは常に良いことであり、整数値をチェックする方が glUseProgram 呼び出しを行うよりも安価になると想像できます。レンダリング中に「プログラムの一貫性」が必要なだけなので、ほとんどの場合、両方 (check と glUseProgram) を行うことはありません。また、このガイドを読むことをお勧めしますhttp://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008793-CH1-SW1 . 最適化に役立ちます。
コードを最適化する最善の方法の 1 つは、できるだけ多くの OpenGL/DX 関数呼び出しを避けることです。そのため、ほとんどの場合、openGL コードを使用するよりも、ローカル変数を 1 つだけチェックする方が適切です。
時々、OpenGL は CPU と同期して、glGetTexImage、getPixels などのコードを実行しますが、これはパフォーマンスを大幅に低下させます。
「プログラムを使用する」または「テクスチャをバインドする」となると、コストが正確にはわかりません。仕様とデバイスの実装に依存します。