3

Ich habe gerade über Hardware Acceleration gelesen und sah this video. Jetzt fühle ich mich ein wenig verwirrt.Hardware-Schichten und Hardware-Beschleunigung auf Android

Hardwarebeschleunigung bedeutet, dass Zeichenoperationen von der GPU ausgeführt werden und standardmäßig unter Android 3.0+ aktiviert sind. Wenn die Hardwarebeschleunigung aktiviert ist, warum lautet der Layertyp View standardmäßig LAYER_TYPE_NONE? Ich dachte, es sollte LAYER_TYPE_HARDWARE sein.

Hardwareschichten müssen etwas tun, mit dem View in einem Offscreen-Puffer zu halten.

So sieht es aus wie die Konstanten View.LAYER_TYPE_NONE, View.LAYER_TYPE_HARDWARE und View.LAYER_TYPE_SOFTWARE sind nicht über Hardwarebeschleunigung. Sie sind dabei, die View im Offscreen-Puffer zu halten, um zu vermeiden, dass jedes Mal, wenn sich die Transparenz und einige andere Eigenschaften ändern, View gezeichnet wird.

Antwort

2

View.LAYER_TYPE_HARDWARE bedeutet, dass die Ansicht durch eine Hardwareschicht, z. eine Textur, FBO ... Somit ist es einfach/fast frei, Farbeffekte, Transluzenz und andere GPU-Effekte anzuwenden, ohne die Ansicht neu zeichnen zu müssen. Es empfiehlt sich, die Hardwareebene zu aktivieren, wenn die Ansicht solche Effekte aufweist oder bevor sie animiert wird. Hardwareschichten benötigen jedoch viel RAM, seien Sie also vorsichtig.

Dokumentation hier: LAYER_TYPE_HARDWARE und ein Zitat von ihm:

Zeigt an, dass die Ansicht eine Hardwareschicht hat. Eine Hardwareschicht wird durch eine hardwarespezifische Textur (in der Regel Rahmenpufferobjekte oder FBO auf OpenGL-Hardware) unterstützt und bewirkt, dass die Ansicht mit der Hardware-Rendering-Pipeline von Android gerendert wird, jedoch nur, wenn die Hardwarebeschleunigung für die Ansichtshierarchie aktiviert ist. Wenn Hardwarebeschleunigung deaktiviert ist, verhalten sich Hardwareschichten genau wie Softwareschichten.

Eine Hardwareschicht ist nützlich, um einer Ansicht und allen untergeordneten Elementen einen bestimmten Farbfilter und/oder Füllmodus und/oder Transluzenz zuzuweisen.

Eine Hardwareschicht kann verwendet werden, um einen komplexen Ansichtsbaum in eine Textur zu cachen und die Komplexität von Zeichenoperationen zu reduzieren. Wenn Sie beispielsweise einen komplexen Ansichtsbaum mit einer Übersetzung animieren, kann eine Hardwareschicht verwendet werden, um den Ansichtsbaum nur einmal zu rendern.

Eine Hardwareschicht kann auch verwendet werden, um die Renderqualität zu verbessern, wenn Drehtransformationen auf eine Ansicht angewendet werden. Es kann auch verwendet werden, um mögliche Clipping-Probleme beim Anwenden von 3D-Transformationen in einer Ansicht zu vermeiden.

EDIT: Um Ihre Frage zu beantworten, ist die Schicht standardmäßig NONE, so dass es RAM nicht nimmt. HW-beschleunigtes Zeichnen und eine Hardware-Schicht sind zwei verschiedene Dinge. HW-beschleunigtes Zeichnen bedeutet, dass die Zeichenbefehle, z. beim Zeichnen in eine Canvas, werden von einer GPU statt CPU durchgeführt. HW-Layer bedeutet, dass das Ergebnis der Zeichnung im Speicher der GPU gespeichert wird, sodass das Ergebnis (z. B. eine Textur) später angezeigt werden kann, anstatt die Ansicht erneut zu zeichnen.

EDIT 2: Die erste bearbeiten mein eigenes ist, aber ich war aus SO unterzeichnet während der Bearbeitung: D

1

In einfacher Sprache, nehmen Sie es mögen: Hardwarebeschleunigung ist eine Funktion als Standard verfügbar sind auf API 14+ , wird aber nicht für alle 2D-Zeichenoperationen unterstützt. Dies bedeutet, dass einige benutzerdefinierte Ansichten dies möglicherweise nicht unterstützen. Da es jedoch standardmäßig aktiviert ist, kann es bei der Darstellung von benutzerdefinierten Ansichten zu Problemen kommen.

prüfen Link unten für einen, wenn die Themen: http://postimg.org/image/6wzssbdbr/

kommend Typen auf Layer, In allen Versionen von Android, haben Ansichten, die die Fähigkeit zu machen, in Off-Screen-Puffer haben, entweder durch die Ansicht einer Zeichnung-Cache oder mithilfe von Canvas.saveLayer(). Offscreen-Puffer oder Ebenen haben mehrere Anwendungen. Sie können sie verwenden, um beim Animieren komplexer Ansichten oder beim Anwenden von Kompositionseffekten eine bessere Leistung zu erzielen.

LAYER_TYPE_NONE: Die Ansicht wird normal gerendert und nicht von einem Offscreen-Puffer unterstützt. Dies ist das Standardverhalten für alle APIs von 1 bis 13.

LAYER_TYPE_HARDWARE: Die Ansicht wird in Hardware in eine Hardwarebeschaffenheit gerendert, wenn die Anwendung hardwarebeschleunigt ist. Wenn die Anwendung nicht hardwarebeschleunigt ist, verhält sich dieser Layertyp genauso wie LAYER_TYPE_SOFTWARE. Dies ist das Standardverhalten für alle APIs 14+.

LAYER_TYPE_SOFTWARE: Die Ansicht wird in Software in eine Bitmap gerendert.

Wenn für eine Ansicht erforderlich, können wir sie deaktivieren, indem Sie yourViewObject.setLayerType (View.LAYER_TYPE_SOFTWARE, null) ;.

Hoffe das erklärt.

Verwandte Themen