Arabelleğe alınan kamera çerçeveleri

ARCore 1.17.0'a eklendi

Çoğu uygulamanın, oluşturma için yalnızca tek bir kamera çerçevesinin arabelleğe alınması gerekir. Ancak, ARCore, birden fazla kamera karesinin sabit boyutlu bir öğede arabelleğe alınmasını da destekler doku sırası oluşturun.

Çok iş parçacıklı oluşturma ardışık düzenine sahip uygulamalar, performansı iyileştirmek için arabelleğe alma özelliğini kullanabilir oluşturma performansı. Arabelleğe alma, uygulamaların kareleri daha hızlı ve kolay bir şekilde tutarlı kare hızı; yavaş kullanıcı arayüzü oluşturma.

Preconditions

Kamera görüntüsü arabelleğe alma özelliği, aşağıdaki koşullardan herhangi birinde etkinleştirilir:

  1. Uygulama tarafından etkinleştirildiğinde ArSession_setCameraTextureNames(ids) numaralı telefonu arayarak izin verir.

  2. Dahili arabelleğe alma gerektiren bir veya daha fazla ARCore özelliği olduğunda etkin olarak ayarlanmıştır. Şu anda bu özellikler arasında aşağıdakiler bulunmaktadır:

    • Artırılmış Resimler
    • Genişletilmiş Yüzler
  3. Aşağıdaki işlemler için dahili arabelleğe alma gerektiren ARCore destekli belirli cihazlarda veya düzgün çalışmayabilir.

Kare gecikmesinin etkin olup olmadığını belirle

Belirli bir cihazda ve AR oturumunda kare arabelleğe alma (ayrıca) (kare gecikmesi olarak bilinir) etkin değilse adb logcat çıkışını kullanın:

# Camera frame buffering is turned off when frame delay is zero.
adb logcat | grep 'Update Frame Delay'
 I native  : session.cc:3141 Update Frame Delay to 0 frames.
# Camera frame buffering is turned on when frame count is non-zero.
# Note: The size of the buffer can vary over time.
adb logcat | grep 'Update Frame Delay'
 I native  : session.cc:3141 Update Frame Delay to 6 frames.

 I native  : session.cc:3141 Update Frame Delay to 4 frames.

 I native  : session.cc:3141 Update Frame Delay to 2 frames.

Bellek

Arabelleğe alınan her ek kamera çerçevesi bellek kullanımını artırır. Örneğin, 1080p doku yaklaşık 6 MB bellek tüketir ( 1920 x 1080 x üç bayt RGB verisi çözünürlüğe sahip olmalıdır).

Performansla ilgili konular

Birden fazla kamera çerçevesi kullanılmasının ve çok iş parçacıklı oluşturma ardışık düzeninin kullanılması garanti edilmez. her durumda daha iyi performans gösterir. Aşağıdaki faktörler, gerçek dünya performansı:

  • Uygulama oluşturma ardışık düzeni

  • Uygulama iş parçacığı modeli

  • Cihazın CPU mimarisi

  • İşletim sisteminin planlama sistemi

Uygulamanız ek kamera çerçevelerinden yararlanamıyorsa performans avantajı elde ettik.

Arabelleğe almayı etkinleştir

ARCore'a gelen kamera karelerinin arabelleğe alınması için hangi dokuların kullanılacağını bildirmek için Bir veya daha fazla doku kimliğinden oluşan bir dizi sağlamak için ArSession_setCameraTextureNames(ids). Bu işlev yalnızca oturum oluşturulduktan sonra ve genellikle yalnızca oturum oluşturulduktan sonra çağrılır bir kez.

ARCore, her ArSession_update() çağrısı sırasında sıraya sokmak anlamına gelir. Uygulamanız yalnızca tek bir doku kimliği ayarlıyorsa her seferinde aynı dokunun üzerine yazılır.

İlişkilendirilen doku kimliğini belirlemek için ArFrame_getCameraTextureName() işlevini kullanın .