Ich mache ein OpenGL-Spiel für Android. Bis jetzt habe ich nur eine Pipeline mit festen Funktionen verwendet, aber ich rendere einfache Dinge.
Die Pipeline mit festen Funktionen enthält eine Menge Dinge, die ich nicht brauche. Ich denke also darüber nach, Shader in meinem Spiel zu implementieren, um die OpenGL-Pipeline zu vereinfachen, wenn sie eine bessere Leistung erzielen kann.
Bessere Leistung = bessere Akkulaufzeit, es sei denn, fps ist durch das Softwarelimit und nicht durch die Hardwareleistung begrenzt.
opengl
android
shaders
performance
Kravemir
quelle
quelle
Antworten:
Es gibt hier eigentlich keine Frage außer im Thema, aber eine verbesserte Leistung und eine verbesserte Akkulaufzeit können völlig andere Dinge sein. Auch verbessert im Vergleich zu was? Im Vergleich zur Pipeline mit festen Funktionen? Im Vergleich zu komplexen Shadern?
Einfache Shader sollten im Vergleich zu komplexen Shadern eine höhere Framerate liefern (vorausgesetzt, Ihre Framerate wird eher durch den GPU-Durchsatz als durch die Bildschirmaktualisierungsrate begrenzt), was Sie möglicherweise als bessere Leistung betrachten. Dies wird die Akkulaufzeit nicht unbedingt verbessern. Sie könnten immer noch 100% GPU / CPU-Leistung verwenden, aber Sie haben eine höhere Bildrate, da für jedes Bild weniger zu tun ist.
Im Vergleich zur Pipeline mit festen Funktionen ... wer weiß? Heutzutage implementieren viele Hardwareanbieter die Pipeline mit festen Funktionen in Bezug auf Shader. Sie vergleichen also einfach wieder einfache mit komplexen Shadern.
quelle
Ich habe keine aktuellen Zahlen zum Stromverbrauch von Smartphones, aber ich denke, dass CPU und GPU irgendwo auf dem gleichen Niveau liegen sollten. Korrigieren Sie mich, wenn ich falsch liege.
Im Allgemeinen ist der Versuch, Teile Ihres Codes zu optimieren, die von der Leistung abhängen, immer eine gute Sache, nicht nur, weil Sie die Akkulaufzeit sparen, sondern auch, weil Sie Geräte mit weniger leistungsfähiger Hardware erreichen können. Ich ermutige die Leute auch immer, OpenGL ES 2.0 / OpenGL 3.0 für Spiele zu verwenden, da die Leistung von Shadern, wie Sie sagten, darin besteht, den Aufwand auf ein Minimum zu reduzieren und viel mehr Flexibilität zu bieten.
Unter der Annahme, dass Sie einige 2D-Sprites rendern , würde ich sagen, dass sich die GPU größtenteils im Leerlauf befindet. Das bedeutet, dass die CPU möglicherweise mehr Einfluss auf die Akkulaufzeit hat als die GPU. Sie sollten hier also keine zu positiven Ergebnisse erwarten. Ich würde empfehlen, dass Sie versuchen, Ihre auf der CPU ausgeführten Algorithmen zu verbessern, bevor Sie diejenigen auf der GPU optimieren, aber ich würde aus Gründen der Flexibilität auch Shader verwenden. Zumindest wenn Sie die Geräte da draußen ohne Unterstützung für OpenGL ES 2.0 ignorieren können (wieder habe ich keine Zahlen ^^).
quelle