सबसे पहले पाया जा सकता है, तो आप की जाँच करनी चाहिए और कितना समय देखने अपने कोड बनाम खर्च किया जाता है। वास्तव में फ्रेम को चित्रित करने में कितना समय व्यतीत होता है। आपके पास कुछ बग या गड़बड़ हो सकती है जो इसे धीरे-धीरे चलाती है।
आपको अपनी स्क्रीन खींचने के लिए 98ms के बाद बेहतर प्रदर्शन करने में सक्षम होना चाहिए। वे गेम लाइब्रेरी शायद वही ग्राफिक्स कॉल का उपयोग करेंगे जो आप करेंगे। लेकिन आपके द्वारा उपयोग किए जाने वाले कंटेनर का एक बड़ा प्रभाव हो सकता है कि कितनी तेजी से चीजें खींची जाती हैं। मुझे कुछ महीने पहले कुछ डबल buffered ग्राफिक्स कोड पर काम करना याद है, और बैक बफर कैसे बनाया गया था प्रदर्शन में एक बड़ा अंतर बना दिया।
विशेष रूप से, सुनिश्चित करें कि आप केवल या कम से कम जब केवल आपके कैनवास का आकार बदलते हैं तो पृष्ठभूमि छवि बनाएं। मेरी ड्रा कोड में मैं यह कर:
//create a graphics backplane
if(backplane == null || !backplaneSize.equals(this.getSize())){
backplane = this.createImage((int)this.getSize().getWidth(), (int)this.getSize().getHeight());
backplaneSize = this.getSize();
}
तो वापस विमान केवल अगर यह नया है, या घटक का आकार बदलने यदि बनाया जाता है। इसमें विशाल गति पर प्रभाव है।
मैं जेडीके 1.0 के बाद जावा में ग्राफिक्स प्रोग्रामिंग कर रहा हूं। असल में मैंने इस बफरस्ट्रेटी चीज़ के बारे में कभी नहीं सुना होगा। हे।
मुझे मूल जावा ग्राफिक्स कॉल के साथ अच्छी फ्रेम दर प्राप्त करने में कभी भी कोई परेशानी नहीं हुई है। यह देखने के लिए एक और चीज यह सुनिश्चित कर रही है कि स्विंग आपके लिए आपके घटक की पृष्ठभूमि को साफ़ करने की कोशिश नहीं कर रही है। यह मंदी का एक और स्रोत हो सकता है।
स्रोत
2009-12-12 15:54:27
क्या आप अपना कुछ चित्र कोड पोस्ट कर सकते हैं? और घड़ी/टाइमर तर्क? – basszero
घड़ी/टाइमर तर्क बस System.currentTimeMillis() के माध्यम से प्राप्त दो लंबे मानों का अंतर है।मुझे पता है कि इस तरह के समय को मापने के लिए यह एक अच्छा दृष्टिकोण नहीं है, लेकिन मैं बस इतना अनुमान लगाता था कि यह कितना समय लगता है। पेंटिंग कोड बस कैनवास पर एक स्थिर छवि खींचता है। तो यह सिर्फ g.drawImage (img, 0, 0, null) है जहां g BufferStrategy चर के माध्यम से प्राप्त किया जाता है। –