Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。
固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。
fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。
Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。
固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。
fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。
回答:
主題を除いて、ここでは実際には問題はありませんが、パフォーマンスの向上とバッテリ寿命の向上はまったく異なる可能性があります。また、何と比べて改善されましたか?固定機能パイプラインと比較して?複雑なシェーダーと比較して?
シンプルなシェーダーは、複雑なシェーダーと比較して、より高いフレームレートを提供する必要があります(フレームレートが画面のリフレッシュレートではなく、GPUスループットによって制限されている場合)。必ずしもバッテリ寿命が向上するわけではありませんが、100%のGPU / CPU電力を使用することはできますが、各フレームを実行する回数が少ないため、フレームレートは高くなります。
固定関数パイプラインと比較して...誰が知っていますか?現在、多くのハードウェアベンダーがシェーダーの観点から固定機能パイプラインを実装しているため、単純なシェーダーと複雑なシェーダーをもう一度比較しています。
スマートフォンの消費電力の最新の数字はありませんが、CPUとGPUは同じレベルのどこかにあるはずだと思います。私が間違っているなら、私を訂正してください。
一般的に、パフォーマンスに依存するコードの一部を最適化することは、バッテリ寿命を節約するだけでなく、より強力でないハードウェアでデバイスに到達できるため、常に良いことです。シェーダーのパワーは、あなたが言ったように、労力を最小限に抑え、より多くの柔軟性を提供するためです。
しかし、いくつかの 2Dスプライトをレンダリングしているという仮定に基づいて、GPUはほとんどアイドル状態にあると思います。つまり、CPUはGPUよりもバッテリ寿命に大きな影響を与える可能性があるため、ここではあまり良い結果を期待しないでください。GPUでアルゴリズムを最適化する前に、CPUで実行しているアルゴリズムを改善することをお勧めしますが、柔軟性を高めるためにシェーダーも使用します。少なくとも、OpenGL ES 2.0のサポートなしでそこにあるデバイスを無視できる場合(ここでも、数字はありません^^)。