'u kullanmadan iPhone'da bir oyun döngüsünü nasıl yaparım Oyunumu iPhone'a temiz bir şekilde bağlamak için, NSTimer kullanmayan bir oyun döngüsü oluşturmaya çalışıyorum. NSTimer
Ben NSTimer kullanarak, sen gibi bir şeyle başında kurmak istiyorum bazı örnek kodda farkself.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES];
drawView benzer görünümde olacaktır burada:
- (void)drawView
{
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
mFooModel->render();
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
zaman Bu tekniği kullanarak mFooModel iyi, ama ben NSTimer çağrı drawView yerine 60 kez bir kez drawView çağırır kendi oyun döngü yapmak istiyorum. Şunlar gibi bir şey istiyorum:
while(gGameState != kShutDown)
{
[self drawView]
}
Ne yazık ki bunu yaptığımda, tek istediğim siyah bir ekran. Bu neden oluyor? Zaten burada tarif ettiğim şeyi uygulayabilir miyim?
NSTimer'den kaçınmak istemem nedeniyle oyun döngüsünde fizik ve AI güncellemeleri yapmak istiyorum. Bunu doğru bir şekilde yapabilmem için geçen süreyi takip etmek için kendi saatimi/zamanlayıcıyı kullanıyorum. Render mümkün olduğunca hızlı gerçekleşir. this article
Bu biraz tepkisel soru olduğu açıklandığı gibi ben
(eğer bütün gün kodlama oldum sonra, sıkışabilir ve cevap umuyoruz biri sabaha yoktur) bazı teknikleri kullanmayı deneyinŞerefe çocuklar.
Teşekkürler. Bu çok kullanışlı bir kod. – user156848
Bir saniyenin 1/45'inden daha fazla çalışmanız varsa (ya da daha fazla koşmak için runloop tezgahları), kekemelik, gecikmeli dokunma olayları ve diğer garip sorunlar yaşayacağınız konusunda uyardım. İyice test ettiğinizden emin olun. Bunun hesaba katılması için kod güncellenmesi mümkündür, ancak uygulamaya özel – rpetrich
Çalışma döngüsündeki tüm tahsis/dealloc performansı etkilemiyor mu? Döngünün dışına taşınmanın bir yolu var mı? – Andrew