का उपयोग किये बिना आईफोन पर गेम लूप कैसे बनाते हैं Iphone में अपने गेम को साफ़ रूप से पोर्ट करने के लिए, मैं एक गेम लूप बनाने की कोशिश कर रहा हूं जो एनएसटीमर का उपयोग नहीं करता है।आईएसटी पर एनएसटीमर
मैं कुछ नमूना कोड है कि, NSTimer का उपयोग कर अगर, आप इसे शुरुआत में की तरह सेट करेंगे ऊपर कुछ के साथ में देखा
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES];
जहां drawView कुछ ऐसा दिखाई देगा:
- (void)drawView
{
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
mFooModel->render();
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
जब इस तकनीक का उपयोग करके mFooModel ठीक प्रस्तुत करता है, लेकिन मैं इसके बजाय अपना खुद का गेम लूप बनाना चाहता हूं जो NSTimer कॉल ड्रॉ देखने के बजाय drawView को कॉल करता है, एक सेकंड 60 बार देखें। मुझे कुछ पसंद है:
while(gGameState != kShutDown)
{
[self drawView]
}
दुर्भाग्यवश जब मैं ऐसा करता हूं, तो मुझे बस एक ब्लैक स्क्रीन मिलती है। ऐसा क्यों होता है? क्या मैं वैसे भी लागू कर सकता हूं जो मैं यहां बता रहा हूं?
कारण मैं एनएसटीमर से बचना चाहता हूं क्योंकि मैं गेम लूप में भौतिकी और एआई अपडेट करना चाहता हूं। मैं अपने स्वयं के घड़ी/टाइमर का उपयोग उस समय की मात्रा को ट्रैक रखने के लिए करता हूं जो कि समाप्त हो गया है ताकि मैं इसे सही तरीके से कर सकूं। जितना तेज़ हो सके उतना तेज़ होता है। मैं this article
यह एक आवेगी सवाल का कुछ हद तक है में वर्णित के रूप कुछ तकनीकों का इस्तेमाल करने की कोशिश (एक के बाद आप पूरे दिन कोडिंग किया गया है, अटक जाते हैं, और आशा है कि इस सवाल का जवाब कर सुबह तक होती है)
चीयर्स लोग।
धन्यवाद। यह बहुत उपयोगी कोड है। – user156848
मैं चेतावनी देना भूल गया था कि यदि आपके पास एक सेकंड के 1/45 वें से अधिक काम है (या उस से अधिक के लिए रनलोप स्टालों) तो आप स्टटरिंग, देरी टच इवेंट और अन्य विषम मुद्दों को रोक देंगे। अच्छी तरह से परीक्षण करना सुनिश्चित करें। इसके लिए कोड को अपडेट करना संभव है, लेकिन एप्लिकेशन विशिष्ट – rpetrich
रन लूप में सभी आवंटन/dealloc प्रदर्शन को प्रभावित नहीं करता है? क्या लूप के बाहर सभी को स्थानांतरित करने का कोई तरीका है? – Andrew