Donanım hızlandırma

Bazı uygulamalarda grafik performansını iyileştirmek için OpenGL ES 1.1 donanım hızlandırmayı kullanabilirsiniz. Oyunlar ve görüntüleme nesnelerinin animasyonunun yapıldığı diğer uygulamalar donanım hızlandırma özelliğinden faydalanabilir. Donanım hızlandırmayı kullanan uygulamalar bazı grafik işlemlerini işlemciden iPhone GPU'ya yükleyerek performansı büyük ölçüde arttırabilir.

GPU'yu kullanmak için bir uygulama tasarlarken, içeriğin etkili bir şekilde GPU hızlandırmalı olduğundan emin olmak için kuralları takip etmek önemlidir.

Donanım hızlandırmayı kullanmak için, Flash Professional CS5'teki iPhone Ayarları iletişim kutusunun Genel sekmesinde Görüntü Oluşturma'yı GPU'ya ayarlayın. Uygulama açıklayıcı dosyasında renderMode öğesini gpu olarak da ayarlayabilirsiniz:

<initialWindow> 
    <renderMode>gpu</renderMode> 
    ...

Flash Professional CS5'te iPhone uygulama özelliklerini ayarlama ve Uygulama açıklayıcı dosyasında iPhone uygulama özelliklerini ayarlama bölümlerine bakın.

İçerikleri seyrek olarak değişirse donanım hızlandırmada hızlı bir şekilde oluşturulabilecek dört görüntüleme nesnesi sınıfı vardır:

  • Bitmap nesneleri

  • cacheAsBitmap özelliğinin true olarak ayarlandığı ve isteğe bağlı olarak cacheAsBitmapMatrix özelliği ayarlı olan 2B Görüntüleme nesneleri (aşağıya bakın)

  • 3B Görüntüleme nesneleri (örn. z özelliği ayarlı)

  • Tek bir tek renkli dörtgen dolguya ve ekrandaki piksellerle hizalanan kenarlara sahip ekran nesneleri.

Vektöre dayalı nesneler üstlerinde veya altlarında başka bir hareketli grafik hareket ettiğinde yeniden oluşur. Bu nedenle, bir animasyonun perde arkası veya ön planı olarak görev yapan her nesne aynı zamanda bu kategorilerden birine ait olmalıdır.

cacheAsBitmap öğeleri true olarak ayarlanmış ekran nesneleri için, cacheAsBitmapMatrix öğesini ayarlamak GPU'nun matris dönüşümü sonucu ortaya çıkan bitmap'i kullanmasına neden olur. Nesne döndürülse veya ölçeklense bile GPU bitmap temsilini kullanır. GPU bu bitmap'i, işlemcinin bir vektöre dayalı nesneyi yeniden çizmesinden çok daha hızlı bir şekilde oluşturur ve hareketlendirir.

cacheAsBitmap özelliğini tek başına true olarak ayarlamak görüntü nesnesinin (ve alt öğelerinin) önbelleğe alınmasına neden olur. Yeni bölgeler ortaya çıktığında veya tüm birleşik grafik çevrildiğinde görüntüleme nesnesi yeniden çizilmez.

Bir ekran nesnesinin cacheAsBitmapMatrix özelliği ayarlandığında uygulama, ekran nesnesi görünür olmadığında bile ekran nesnesinin bir temsilini oluşturabilir. Uygulama, bir sonraki karenin başlangıcında ekran nesnesinin önbelleğe alınmış temsilini oluşturur. Ardından ekran nesnesini sahne alanına eklediğinizde, uygulama bunu hızlı bir şekilde oluşturur. Ayrıca, uygulama hızlı bir şekilde nesneyi hareketlendirebilir, döndürebilir veya ölçekleyebilir. Döndürülen veya ölçeklenen nesneler için, cacheAsBitmap özelliğini, cacheAsBitmapMatrix özelliğini de ayarlamadan ayarlamayın.

Ayrıca uygulama bitmap olarak önbelleğe alınan bir nesnede hızlı bir şekilde alfa dönüşümleri gerçekleştirebilir. Ancak, donanım hızlandırmalı alfa dönüşümleri için yalnızca 0 ve 1.0 arasındaki alpha değerleri desteklenir. Bu 0 ila 256 arasındaki bir colorTransform.alphaMultiplier ayarına karşılık gelir.

Metin alanları gibi sık bir şekilde güncellenen nesnelerin cacheAsBitmap özelliğini true olarak ayarlamayın.

Sık bir şekilde değişen grafik içeriğine sahip görüntüleme nesneleri genellikle GPU oluşturma için zayıf adaylardır. Bu özellikle daha az güce sahip GPU'ları olan eski aygıtlar için geçerlidir. Grafikleri GPU'ya yüklemenin neden olduğu ek yük İşlemci görüntü oluşturmasını daha iyi bir seçenek haline getirebilir.

Üst nesneyle daha ilgili olan alt görüntüleme nesnelerini içeren görüntüleme nesnelerini yeniden yapılandırın. Alt görüntüleme nesneleriyle üst görüntüleme nesnelerinin aynı seviyeye gelmelerini sağlamak için değiştirin. Bu hepsinin kendi bitmap temsiline sahip olacağını garantiler. Ayrıca, her görüntüleme nesnesi, GPU'ya yeni grafiklerin yüklenmesine gerek kalmadan diğerlerine göre hareket edebilir.

Alt öğe ekran nesnelerinin hareketli olmadığı en yüksek ekran listesi seviyesinde cacheAsBitmap özelliğini true olarak ayarlayın. Diğer bir deyişle, özelliği hareketli parça içermeyen ekran nesnesi kaplarına ayarlayın. Alt öğe ekran nesnelerine ayarlamayın. Diğer hareketli ekran nesnelerini içeren hareketli grafikler için ayarlamayın .

Bir görüntüleme nesnesinin z özelliğini ayarladığınızda, uygulama her zaman önbelleğe alınmış bir bitmap temsili kullanır. Ayrıca bir görüntüleme nesnesinin z özelliğini ayarladıktan sonra uygulama, siz nesneyi döndürseniz veya ölçekleseniz bile önbelleğe alınmış bitmap temsilini kullanır. Uygulama ayarlanmış bir z özelliği olan görüntüleme nesneleri için cacheAsBitmapMatrix özelliğini kullanmaz. Üç boyutlu görüntüleme nesnesi özelliklerini, rotationX , rotationY , rotationZ , ve transform.matrix3D özellikleri de dahil olmak üzere ayarladığınızda aynı kurallar geçerlidir.

Görüntüleme nesnesi kabı içeriğini donanım hızlandırma için kullanacaksanız, scrollRect veya mask özelliklerini ayarlamayın. Bu özellikleri ayarlamak, görüntüleme nesnesi kabının ve alt nesnelerinin donanım hızlandırmasını devre dışı bırakır. mask özelliğini ayarlamaya bir alternatif olarak, maskelenen display nesnesinin üzerinde bir maske görüntüleme nesnesi katmanlayın.

Donanım hızlandırma için kullanılabilecek görüntüleme nesnelerinin boyutlarının sınırları vardır. Daha eski aygıtlarda, sınır hem genişlik hem yükseklikte 1024 piksel veya daha azdır. Daha yeni aygıtlarda, sınır 2048 piksel veya daha azdır. Bir aygıtın performansını ölçmek için GPU görüntü oluşturma teşhis aracını kullanabilirsiniz.

GPU, bitmap görüntülerini saklamak için iPhone RAM'ini de kullanır. En az bitmap görüntülerinin boyutu kadar bellek kullanır.

GPU, bitmap görüntüsünün her boyutu için 2'nin katlarında bellek ayırma kullanır. Örneğin, GPU 512 x 1024 veya 8 x 32 boyutlarında bellek ayırabilir. Böylelikle 9 x 15 piksel görüntü, bellekte, 16 x 16 piksel görüntü kadar yer kaplar. Önbelleğe alınmış görüntüleme nesneleri için, her yönde 2'nin katlarına yakın (ancak daha fazla değil) boyut kullanmak isteyebilirsiniz. Örneğin, 33 x 17 piksel yerine 32 x 16 piksel görüntüleme nesnesi kullanmak daha verimlidir.

Öteki platformlar için (masaüstü vb.) boyutlandırılmış varlıkları daha küçük olarak ölçeklendirmek için yeniden boyutlandırılmış bir Sahne Alanı'na bağlı kalmayın. Bunun yerine cacheAsBitmapMatrix özelliğini kullanın veya varlıkları iPhone için yayınlamadan önce yeniden boyutlandırın. 3B nesneler yüzey görüntülerini ön belleğe alırken cacheAsBitmapMatrix özelliğini yok sayar. Bu nedenle görüntü nesneleri 3B yüzeyde oluşturulacaksa, bunları yayınlamadan önce yeniden boyutlandırmak daha iyidir.

Donanım hızlandırma ve RAM kullanımı arasında bir denge bulunmaktadır. Bellek doldukça iPhone işletim sistemi, çalışmakta olan diğer yerel iPhone uygulamalarını bellek boşaltmaları için uyarır. Bu uygulamalar uyarıyı işler ve belleği boşaltmaya başlarken, işlemci döngüleri için uygulamanızın önüne geçmeye çalışabilir. Bu durum uygulamanızın performansını bir an için düşürebilir. Uygulamanızı, çalışan işlemleriniz için göreceli olarak daha az bellek bulunduracaklarından, eski aygıtlarda test etmeyi unutmayın.

iPhone'da uygulamada hata ayıklarken, GPU oluşturma tanılama özelliğini etkinleştirebilirsiniz. Bu özellik uygulamanızın GPU oluşturmayı nasıl kullandığını gözlemlemenize yardımcı olur. Daha fazla bilgi için Bir iPhone uygulamasında hata ayıklama bölümünde “GPU görüntü oluşturma tanılama ile hata ayıklama” kısmına bakın.

cacheAsBitmapMatrix özelliğini kullanmayla ilgili daha fazla bilgi için bkz. Mobil AIR uygulamalarına özgü ActionScript API'leri bölümünde “DisplayObject.cacheAsBitmapMatrix”.