Fazla çizimi azalt

Bu sayfada, fazla çizimin ne olduğu, nasıl teşhis edileceği ve nasıl ortadan kaldırılacağı veya azaltılacağı açıklanmaktadır.

Bir uygulamanın aynı pikseli tek bir kare içinde birden fazla kez çizmesine fazla çizim denir. Genellikle gereksiz olan fazla çizimlerin ortadan kaldırılması önerilir. Aşırı çizim, kullanıcının ekranda gördüklerine katkıda bulunmayan pikselleri oluşturmak için GPU süresini boşa harcadığında performans sorunu haline gelir.

Fazla çizim hakkında

Aşırı çizim, sistemin tek bir oluşturma karesinde ekrandaki bir pikseli birden fazla kez çizmesi anlamına gelir. Örneğin, bir yığın kullanıcı arayüzü kartınız varsa her kart, altındaki kartın bir bölümünü gizler. Ancak sistemin, destedeki kartların gizli kısımlarını yine de çizmesi gerekir. Bunun nedeni, üst üste yerleştirilmiş kartların painter's algorithm'a (ressam algoritması) göre, yani arkadan öne doğru sırayla oluşturulmasıdır. Bu oluşturma sırası, sistemin yarı saydam nesnelere (ör. gölgeler) uygun alfa karıştırma uygulamasını sağlar.

Fazla çizim sorunlarını bulma

Platform, aşırı çizimin uygulamanızın performansını etkileyip etkilemediğini belirlemenize yardımcı olmak için aşağıdaki araçları sunar.

GPU fazla çizim hatasını ayıklama aracı

GPU Çizimini Hata Ayıklama aracı, uygulamanızın ekrandaki her pikseli 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ığı da o kadar artar.

Daha fazla bilgi için GPU aşırı çizimini görselleştirme başlıklı makaleyi inceleyin.

Profil GPU oluşturma aracı

GPU Oluşturma Profilini Çıkarma aracı, oluşturma işlem hattının her aşamasının tek bir kareyi görüntülemek için ne kadar sürdüğünü kaydırmalı bir histogram olarak gösterir. Her çubuğun turuncu renkle gösterilen İşlem bölümü, sistemin arabellekleri ne zaman değiştirdiğini gösterir. Bu metrik, fazla çizim hakkında önemli ipuçları sağlar.

Daha düşük performanslı GPU'larda, kullanılabilir doluluk oranı (GPU'nun çerçeve arabelleğini doldurabileceği hız) düşük olabilir. Bir kareyi çizmek için gereken piksel sayısı arttıkça GPU'nun yeni komutları işlemesi daha uzun sürebilir ve sistemin geri kalanından yetişene kadar beklemesini isteyebilir. İşlem çubuğu, GPU olabildiğince hızlı bir şekilde pikselleri çizmeye çalışırken bu ani yükselişi gösterir. Piksel sayısıyla ilgili olmayan sorunlar da bu metriğin artmasına neden olabilir. Örneğin, GPU fazla çizim hatasını ayıklama aracı ağır fazla çizim ve işlem artışları gösteriyorsa fazla çizimle ilgili bir sorun olabilir.

Daha fazla bilgi için Profil GPU oluşturma hızı başlıklı makaleyi inceleyin.

Fazla çizimi düzeltme

Aşırı çizimi azaltmak veya ortadan kaldırmak için aşağıdakileri yapabilirsiniz:

  • Düzenlerdeki gereksiz arka planları kaldırın.
  • Şeffaflığı azaltın.

Bu bölümde, her iki yaklaşım hakkında bilgi verilmektedir.

Düzenlerdeki gereksiz arka planları kaldırma

Varsayılan olarak düzenin arka planı yoktur. Bu nedenle, düzen doğrudan hiçbir şeyi oluşturmaz. Ancak düzenlerde arka plan olduğunda bu durum, fazla çizime neden olabilir.

Uygulamanın üzerine çizdiği her şey tarafından tamamen kaplandığı için görünür olmayan bir arka plan gibi gereksiz arka planları kaldırarak oluşturma performansını artırabilirsiniz. Örneğin, Box öğesi veya .background değiştiricisine sahip bir düzen, üst kapsayıcının arka planını tamamen kaplayabilir. Bu durumda üst öğenin çizim geçişi kullanıcı için tamamen görünmez hale gelir ancak GPU tarafından tam olarak işlenmeye devam eder.

Aşırı çizim yapmanızın nedenini öğrenmek için Layout Inspector aracındaki bileşen ağacına bakın. Kullanıcıya görünmeyen arka planları arayıp kaldırabilirsiniz. Ayrıca, arka plan rengi aynı olan birden fazla kapsayıcının bulunduğu yerlerde gereksiz arka planları kaldırabilirsiniz. Pencere arka planını uygulamanızın ana arka plan rengi olarak ayarlayın ve üzerindeki tüm kapsayıcıları tanımlanmış arka plan değerleri olmadan bırakın.

Şeffaflığı azaltma

Ekranda şeffaf piksellerin oluşturulması (alfa oluşturma olarak bilinir), aşırı çizime önemli ölçüde katkıda bulunur. Sistem, opak pikselleri mevcut çizilmiş piksellerin üzerine çizerek mevcut çizilmiş pikselleri tamamen gizlediğinde standart aşırı çizim oluşur. Şeffaf nesneler ise doğru karıştırma denkleminin oluşması için mevcut piksellerin önce çizilmesini gerektirir.

Şeffaf animasyonlar, karartma ve gölge gibi görsel efektler bir miktar şeffaflık içerir ve bu nedenle aşırı çizime önemli ölçüde katkıda bulunabilir. Bu durumlarda, oluşturduğunuz şeffaf nesnelerin sayısını azaltarak aşırı çizimi iyileştirebilirsiniz. Örneğin, Text composable'da siyah metin çizip modifier = Modifier.alpha(0.5f) kullanarak yarı saydam bir alfa değeri uygulayarak gri metin elde edebilirsiniz. Ancak, composable'ın metin rengini doğrudan opak gri olarak ayarlayarak aynı etkiyi daha iyi performansla elde edebilirsiniz: color = Color.Black.copy(alpha = 0.5f).

Şeffaflığın çizim hattı boyunca getirdiği performans maliyetleri hakkında daha fazla bilgi edinmek için Hidden Costs of Transparency (Şeffaflığın Gizli Maliyetleri) başlıklı videoyu izleyin.