2011-10-20 15 views
6

GLKView yeniden boyutlandırıldığında, bu tamponların ve bu GLKView bağlamında gerçekleşen bazı sahne arkası işlemleri vardır. Bu sahne arkası işlemleri gerçekleştirmek için gereken süre boyunca, GLKView çizim doğru sonuçlar üretmiyor. Ben ekranda içeriğini var güncellemeniz gerektiğini her zaman, sadece o GLKView üzerinde -setNeedsDisplay çağrı yani benim senaryoda Bir GLKView'ın yeniden boyutlandırılması

, ben, etkin setNeedsDisplay olan bir GLKView var. Görüntüleri çizmek için GLKView kullanıyorum, bu yüzden farklı bir boyutta bir resim çizmem gerekirse, GLKView'un boyutunu da değiştirmem gerekiyor.

Sorun: GLKView'un boyutunu değiştirdiğimde ve bu görünümde setNeedsDisplay numaralı telefonu aradığımda, sonuç ekranda doğru değil. Bunun nedeni, GLKView'un yeni görüntüyü çizmeye çalışmadan önce yeni boyut değişikliği tarafından başlatılan perde arkası işlemleri sonlandırılmamasıdır.

Bunu, GLKView numaralı telefondan setNeedsDisplay yerine performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0 arayarak buna bir çalışma buldum. Bu temel olarak ana iş parçacığı, tüm sahne arkası openGL işlemlerinin setNeedsDisplay numaralı telefonu aramadan önce tamamlanmasını beklemeye zorlar. Bu her ne kadar iyi çalışıyor olsa da, daha iyi bir çözüm olup olmadığını merak ediyorum. Örneğin, devam etmeden önce iş parçacığının tüm openGL işlemlerinin tamamlanmasını beklemesi için bir openGL çağrısı var mı?

cevap

9

Çözüm, GLKView yeniden boyutlandırıldıktan sonra CIContext nesnesini sıfırlamaktı.
Herkese teşekkürler!

+2

Sana sarılabilirim – dxb

+0

Nasıl sıfırladınız? Onu sıfırdan mı yapıyorsun? Veya aramak için belirli bir yöntem var mı. – flainez

+1

Benim durumumda, yeniden boyutlandırıldıktan sonra 'CIContext' nesnesini şöyle ayarlıyordum:' ci_context = [CIContext contextWithEAGLContext: glkView.context] 've sonra' '[glkView display]' yi çağırıyordu. Bunun uzun zaman önce olduğunu ve bunun hakkında öğrenmeyi sürdürmediğimi unutmayın, bu yüzden doğru bir yaklaşım olduğunu düşünmeyin. – spybart

İlgili konular