ベンチマーク:またはglDisable(GL_BLEND):を有する多角形の同じ組のレンダリング時間のAndroidデバイスには、パフォーマンスへの影響
A) glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
B) glDisable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ZERO);
がイネーブルされるブレンドしたレンダリングが実際にわずかに遅くなることを示しています
- デスクトップ、OpenGLの2.0
- レノボP90ProインテルAtom/PowerVRのG6430、OpenGL ESの2.0
- サムスンギャラクシータブ:0
と私の混乱には、これらのデバイス上でベンチマークすることは有意な差、Iが無効にブレンドしてレンダリングする、と仮定し、意味を示さないパフォーマンス、コストのかかるブレンドと同様に有効にされているようです/ ARM-A57 /副腎と
- ソニーのXperia Z3 +オンボードクアルコム副腎305は430
それはなぜですか?違いがあるはずですね、そうですか?使用されているフラグメントシェーダは非常に簡単です:
precision highp float;
uniform sampler2D tex;
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
void main() {
gl_FragColor = v_fragmentColor * texture2D(tex, v_texCoord);
}
申し訳ありませんが、状況の定義があまりにも一般的なものであれば、それはSOの質問に適合するのに適した、最小限の作業サンプルを生成するために、かなり難しいです。私はここに、私が行方不明になっているいくつかの知られている悪夢があることを願っています。
ps:テストされたすべてのデバイスで、結果としてイメージは予期されたとおりに見え、ブレンドが有効な透過領域と無効の場合は不透明な黒が表示されます。全体の問題は単にパフォーマンスに関するものです。
どのように測定しましたか? –
私はグラフィックス、GPUなどの専門家ではありませんが、「ブレンドが無効の_renderingは、ブレンドが有効な場合と同様にパフォーマンスが高くなります」と表示されます。「ブレンドが有効な_レンダリング」は、 **(a)**より良い(それはプラス、問題ではない)、**(b)**は私には、[それらのデバイスで]ハードウェアが利用可能であることを示唆しているブレンド "はレンダリングの通常の部分として、それを使用することは事実上自由です。 – TripeHound
いずれの場合も、ドライバ/ハードウェアの制限である60 fpsが表示されます。つまり、性能の違いを見るのに十分なほどgpuを読み込まないということです。違いを見るために何千もの画像をレンダリングしてみてください。 – Dave