Bu sayfada fazla çizimin ne olduğu, nasıl teşhis edileceği ve bu sorunu ortadan kaldırmanın veya azaltmanın yolları açıklanmaktadır.
Bir uygulamanın tek bir kare içinde aynı pikseli birden çok kez çizmesine fazla çizim denir. Fazla çizim genellikle gereksizdir ve ortadan kaldırmak en iyisidir. Fazla çizim, kullanıcının ekranda gördüklerine katkıda bulunmayan pikselleri oluşturmak için GPU zamanını boşa harcadığında bir performans sorunu haline gelir.
Fazla çizim hakkında
Fazla çizim, sistemin tek bir oluşturma karesinde ekrana birden fazla kez bir piksel çizmesini ifade eder. Örneğin, çok sayıda yığılmış kullanıcı arayüzü kartınız varsa her kart, altındaki kartın bir kısmını gizler.
Ancak, sistemin yine de yığındaki kartların gizli bölümlerini çizmesi gerekir. Bunun nedeni, yığılmış kartların ressamın algoritmasına göre, yani arkadan ön plana göre oluşturulmasıdır. Bu oluşturma sırası, sistemin gölgeler gibi yarı saydam nesnelere uygun alfa harmanlaması uygulamasını sağlar.
Fazla çizim sorunlarını bulma
Platform, fazla çekmenin uygulamanızın performansını etkileyip etkilemediğini belirlemenize yardımcı olmak için aşağıdaki araçları sunar.
GPU fazla çizim aracında hata ayıklama
GPU Fazla Çizim Aracında Hata Ayıklama aracı, uygulamanızın her bir pikseli ekranda kaç kez çizdiğini göstermek için renk kodlaması kullanır. Bu sayı ne kadar yüksek olursa, fazla çizimin uygulamanızın performansını etkileme olasılığı o kadar artar.
Daha fazla bilgi için GPU fazla çizimini görselleştirme bölümüne bakın.
Profil GPU oluşturma aracı
Profil GPU Oluşturma aracı, oluşturma ardışık düzeninin her aşamasının tek bir kareyi kaydırma histogramı olarak görüntülemek için geçen süreyi gösterir. Her çubuğun turuncu renkle belirtilen İşlem bölümü, sistemin arabellekleri ne zaman değiştirdiğini gösterir. Bu metrik, fazla çizim yapma hakkında önemli ipuçları sağlar.
Daha düşük performanslı GPU'larda mevcut doluluk oranı (GPU'nun kare arabelleğini doldurma hızı) düşük olabilir. Bir kare çizmek için gereken piksel sayısı arttıkça GPU'nun yeni komutları işlemesi ve sistemin geri kalanından bunu yakalayana kadar beklemesini istemesi daha uzun sürebilir. İşlem çubuğu, pikselleri mümkün olduğunca hızlı çizmeye çalışırken GPU'nun bunaltıcı hale gelmesiyle birlikte bu ani artışın yaşandığını gösterir. İşlenmemiş piksel sayıları dışındaki sorunlar da bu metriğin ani yükselişine neden olabilir. Örneğin, Hata Ayıklama GPU Fazla Çizim aracı yoğun fazla çizim ve İşlem artışları gösteriyorsa muhtemelen fazla çizimle ilgili bir sorun vardır.
Daha fazla bilgi için Profil GPU oluşturma hızı bölümüne bakın.
Fazla çizim sorununu düzelt
Fazla çizimi azaltmak veya ortadan kaldırmak için aşağıdakileri yapabilirsiniz:
- Düzenlerdeki gereksiz arka planları kaldırın.
- Görünüm hiyerarşisini düzleştirin.
- Şeffaflığı azaltın.
Bu bölümde, söz konusu yaklaşımların her biri hakkında bilgi verilmektedir.
Düzenlerdeki gereksiz arka planları kaldırın
Varsayılan olarak bir düzenin arka planı yoktur. Bu da, düzenin doğrudan kendi başına hiçbir şey oluşturmadığı anlamına gelir. Ancak, düzenlerin arka planı olduğunda fazla çizim yapılmasına yol açabilir.
Gereksiz arka planları kaldırarak oluşturma performansını artırabilirsiniz. Gereksiz arka planlar, uygulamanın üzerine çizdiği her şeyle tamamen kaplandığı için görünmeyebilir. Örneğin, sistem, bir ebeveynin arka planını, üzerine çocuk görünümleri çizerken tamamen kaplayabilir.
Neden fazla çizim yaptığınızı öğrenmek için Düzen İnceleyici aracındaki hiyerarşiye bakın. Kullanıcının göremediği arka planları arayabilir ve ortadan kaldırabilirsiniz. Ortak bir arka plan rengine sahip birçok kapsayıcının bulunduğu yerlerde gereksiz arka planları kaldırabilirsiniz. Pencere arka planını uygulamanızın ana arka plan rengine ayarlayabilir ve arka plan değeri tanımlanmadan üzerindeki tüm kapsayıcıları bırakabilirsiniz.
Görünüm hiyerarşisini düzleştirme
Modern düzenler, görünümleri yığıp katmanlayarak güzel tasarımlar oluşturmanıza yardımcı olur. Ancak bunu yapmak, özellikle her bir yığılmış görüntüleme nesnesinin opak olduğu ve ekrana hem görülen hem de görülmeyen piksellerin çizimi gerektiren durumlarda, fazla çizim yapılmasına yol açarak performansı düşürebilir.
Bu sorunla karşılaşırsanız çakışan kullanıcı arayüzü nesnelerinin sayısını azaltmak için görünüm hiyerarşinizi optimize ederek performansı artırabilirsiniz. Bunu nasıl yapacağınız hakkında daha fazla bilgi edinmek için Performans ve hiyerarşileri görüntüleme bölümüne bakın.
Şeffaflığı azaltın
Alfa oluşturma olarak bilinen ekranda şeffaf piksellerin oluşturulması, fazla çizim yapılmasına yol açan en önemli faktörlerden biridir. Standart fazla çizimin aksine (sistem, üzerine opak pikseller çizerek mevcut çizilmiş pikselleri tamamen gizlediğinde), şeffaf nesnelerin önce mevcut piksellerin çizilmesi gerekir. Böylece doğru harmanlama denklemi gerçekleşebilir.
Şeffaf animasyonlar, kararmalar ve gölgeler gibi görsel efektler bir miktar şeffaflık sağlar ve bu nedenle fazla çizime önemli ölçüde katkıda bulunabilir. Bu durumlarda, oluşturduğunuz şeffaf nesnelerin sayısını azaltarak fazla çizim yapma özelliğini iyileştirebilirsiniz. Örneğin, TextView
üzerinde yarı saydam alfa değeri ayarlanmış siyah bir metin çizerek gri metin elde edebilirsiniz. Ancak metni gri çizerek
aynı efekti daha iyi performansla da elde edebilirsiniz.
Şeffaflığın çizim hattının tamamında uyguladığı performans maliyetleri hakkında daha fazla bilgi edinmek için Gizli Şeffaflık Maliyetleri videosunu izleyin.