Je fais un jeu OpenGL pour Android. Jusqu'à présent, j'ai utilisé uniquement un pipeline de fonctions fixes, mais je rend des choses simples.
Le pipeline de fonctions fixes comprend beaucoup de choses dont je n'ai pas besoin. Je pense donc à implémenter des shaders dans mon jeu pour simplifier le pipeline OpenGL s'il peut améliorer les performances.
Meilleures performances = meilleure autonomie de la batterie, à moins que fps ne soit limité par la limite du logiciel, et non par la puissance matérielle
opengl
android
shaders
performance
kravemir
la source
la source
Réponses:
Il n'y a pas vraiment de question ici, sauf dans le sujet, mais des performances améliorées et une durée de vie de la batterie améliorée pourraient être des choses totalement différentes. Aussi, amélioré par rapport à quoi? Par rapport au pipeline de fonctions fixes? Comparé aux shaders complexes?
Les shaders simples devraient donner un taux de rafraîchissement plus élevé (en supposant que votre taux de rafraîchissement est limité par le débit du processeur plutôt que par le taux de rafraîchissement de l'écran) par rapport aux shaders complexes, que vous pourriez considérer comme de meilleures performances. Cela n'améliorera pas nécessairement la durée de vie de la batterie, vous pouvez toujours utiliser une alimentation 100% gpu / cpu, mais vous aurez une fréquence d'images plus élevée car il y a moins à faire pour chaque image.
Par rapport au pipeline de fonctions fixes ... qui sait? De nombreux fournisseurs de matériel implémentent aujourd'hui le pipeline de fonctions fixes en termes de shaders, vous comparez donc simplement les shaders simples aux complexes.
la source
Je n'ai pas de chiffres à jour sur la consommation d'énergie des smartphones, mais je pense que le CPU et le GPU devraient être quelque part au même niveau. Corrigez-moi si je me trompe.
En règle générale, essayer d'optimiser des parties de votre code qui reposent sur les performances est toujours une bonne chose, non seulement parce que vous économisez la vie de la batterie, mais aussi parce que vous pouvez atteindre des appareils avec un matériel moins puissant. J'encourage également toujours les gens à utiliser OpenGL ES 2.0 / OpenGL 3.0 pour les jeux, car la puissance des shaders est, comme vous l'avez dit, de réduire l'effort au minimum et de fournir beaucoup plus de flexibilité.
Mais, en supposant que vous effectuez le rendu de quelques sprites 2D, je dirais que le GPU est principalement dans un état inactif. Cela signifie que le processeur aura probablement plus d'impact sur la durée de vie de la batterie que le GPU, vous ne devez donc pas vous attendre à des résultats trop positifs ici. Je vous recommande d'essayer d'améliorer vos algorithmes exécutés sur le processeur avant d'optimiser ceux du GPU, mais j'utiliserais également des shaders pour des raisons de flexibilité. Au moins si vous pouvez ignorer les périphériques sans prise en charge d'OpenGL ES 2.0 (encore une fois, je n'ai pas de chiffres ^^).
la source