Analyse comparative des temps de rendu du même ensemble de polygones avec:glDisable (GL_BLEND): pas d'impact sur les performances des dispositifs androïde
A) glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
B) glDisable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ZERO);
montre que le rendu avec le mélange en cours d'activation est en effet un peu plus lent sur la:
-
bureau
- , OpenGL 2.0
- Lenovo P90Pro Intel Atom/PowerVR G6430, OpenGL ES 2,0
et à ma grande confusion, l'analyse comparative sur ces appareils montre pas de différence significative, ce qui signifie, je suppose, ce qui rend avec le mélange désactivé est que la performance coûteuse comme avec le mélange étant permis:
- Samsung Galaxy Tab avec ARM-A7/Qualcomm Adreno 305 à bord
- Sony Xperia Z3 + avec ARM-A57/Adreno 430
Pourquoi est-ce? Il devrait y avoir une différence, non? shader Fragment utilisé est assez simple:
precision highp float;
uniform sampler2D tex;
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
void main() {
gl_FragColor = v_fragmentColor * texture2D(tex, v_texCoord);
}
Désolé si la définition de la situation est trop générique, il est considérablement difficile de produire l'échantillon de travail minimal adapté à entrer dans la question SO. J'espère qu'il y a des pièges connus ici que j'ai manqués. Ps: sur chaque périphérique testé, l'image résultante ressemble à celle attendue, les zones de transparence avec le fondu étant activé et le noir opaque - si désactivé. toute la question concerne simplement la performance.
Comment avez-vous mesuré? –
Je ne suis pas un expert sur les graphiques, les GPUs etc., mais si vous activez "_endending avec blending disabled" est aussi performant que le blending étant activé_ "autour de" _endending avec blending enabled est ** pas plus ** performance- coûteux comme avec blending disabled_ "que ** (a) ** ça sonne mieux (c'est un plus, pas un problème), et ** (b) ** pour moi suggère que [sur ces appareils] il y a du matériel disponible pour" faire le mélange "comme une partie normale du rendu, donc en faire usage est effectivement libre. – TripeHound
Peut-être dans les deux cas, vous voyez 60 fps, ce qui est la limite de pilote/matériel. Cela signifie que vous ne chargez pas suffisamment votre GPU pour voir la différence de performance. Essayez de rendre plusieurs images (des milliers?) Pour voir la différence. – Dave