2012-11-06 12 views
5

मैं ओपनजीएल 1.0 का उपयोग कर एंड्रॉइड के लिए एक वीडियो गेम में काम कर रहा हूं। http://www.javacodegeeks.com/2011/06/android-game-development-tutorials.htmlएंड्रॉइड जिंजरब्रेड में ओपनजीएल खराब प्रदर्शन

मैं अपने वर्तमान मोबाइल में एक छोटे से प्रदर्शन है कि बहुत अच्छी तरह से काम करता है और तरल पदार्थ (30 एफपीएस तक सीमित) बनाया है: एचटीसी सेंसेशन (एंड्रॉयड 4.0.3 आइस क्रीम सैंडविच)

मैं इस ट्यूटोरियल का पालन किया।

इसके अलावा, मैं अगले परिणामों के साथ मेरे दोस्त के मोबाइल पर किसी में मेरे खेल का परीक्षण किया:

  • Galaxy S2 = सही! (30 एफपीएस)
  • गैलेक्सी नोट = सही! (30 एफपीएस)
  • एचटीसी वन एस = सही! (30 एफपीएस)
  • सोनी एक्सपीरिया टिपो = सही! (30fps)
  • सैमसंग गैलेक्सी ऐस GT-S5830 = बहुत बुरा प्रदर्शन> _ < '(< 10fps और दो मोबाइल फोन में परीक्षण)

आप एक्सपीरिया टिपो और सैमसंग ऐस के बीच चश्मा की तुलना आप देख सकते हैं कि वे लगभग एक ही मोबाइल हैं।

Xperia Tipo:

  • 320 x 480 संकल्प
  • 512MB RAM
  • क्वालकॉम MSM7227A 800 मेगाहर्ट्ज, GPU Adreno 200

SAMSUNG GALAXY ऐस:

  • 320 x 480 संकल्प
  • 278MB रैम
  • क्वालकॉम MSM7227 800 मेगाहर्ट्ज, GPU Adreno 200

ठीक है, रैम 200MB से अधिक उपभोग नहीं करता है अलग अलग है, लेकिन मेरे खेल बहुत सरल है,! लेकिन प्रदर्शन पूरी तरह से अलग है। कोई मतलब नहीं!

हालांकि ... केवल एक चीज अलग है! सैमसंग गैलेक्सी ऐस एंड्रॉइड 2.3.एक्स (जिंजरब्रेड) का उपयोग करता है और एक्सपीरिया टिपो एंड्रॉइड 4.0.3 (आईसीएस) का उपयोग करता है।

तो, मेरा भाषण लक्ष्यीकरण कर रहा है कि समस्या एंड्रॉइड 2.3.एक्स के साथ है - जिंजरब्रेड या गैलेक्सी ऐस एक कचरा मोबाइल है।

लेकिन ... मैंने अपने दोस्तों को एंडइंजिन उदाहरण स्थापित करने और इसका परीक्षण करने के लिए मजबूर किया, जिसके परिणामस्वरूप नेक्सस कण प्रणाली परीक्षण बहुत अच्छी तरह से और तरल पदार्थ काम करता है।

मैं पूरी तरह से खो गया हूँ! प्रदर्शन में यह अलग क्यों है? मैं क्या गलत कर रहा हूँ?

कुछ अतिरिक्त जानकारी:

  1. मुझे लगता है कि ट्यूटोरियल से सभी चरणों का पालन करें।
  2. मैं जीएल 10 (ओपनजीएल 1.0) का उपयोग करता हूं।
  3. कोई शेडर्स नहीं।
  4. खोए गए एफपीएस के लिए कोई डेल्टा समय नहीं (मुझे नहीं लगता कि यह समस्या मेरी समस्या को हल करने जा रही है)।
  5. कोई मूल कोड, सिर्फ जावा।
  6. सिस्टमक्लॉक.अपिटिममिलिस() और नींद() एफपीएस को नियंत्रित करने के लिए।
  7. मीडियाप्लेयर एक MIDI गीत (कोई और आवाज नहीं) खेलने के लिए।
  8. बहुत सारे अल्फा के साथ बनावट (2 डी गेम, sprites के लिए neccesary है)।
  9. minSdkVersion = 8

आप अधिक जानकारी की जरूरत है, कृपया मुझे बताओ।

+0

कुछ सुझाव: शायद जीसी जंगली जा रहा है? जब तक समस्या गायब न हो जाए तब तक अपना ऐप पट्टी करने का प्रयास करें। अपने ऐप को प्रोफाइल करने का प्रयास करें। –

+0

ठीक है मुझे लगता है कि 200 एमबी छोटा नहीं है। आप शुरुआत में राम क्षमता का पता लगाने की कोशिश कर सकते हैं, फिर आवश्यक होने पर बिटमैप आकार को आधे से कम कर दें। वैसे भी इसने ऐस पर मेरी समस्या का हल नहीं किया। ऐसा लगता है कि एसेस के बारे में एक विशेष समस्या है। –

उत्तर

0

रैम बाधा हो सकती है। आप जानते हैं कि एंड्रॉइड छवियों को बहुत अच्छी तरह से संभाल नहीं करता है। क्या आप अपने बिटमैप्स रीसाइक्लिंग कर रहे हैं? आप OpenGL ES 2.0 का उपयोग क्यों नहीं करते? मैं बिना किसी समस्या के सैमसंग गैलेक्सी ऐस और एलजी पी 500 (जिंजरब्रेड के साथ दोनों) में गेम और परीक्षण विकसित कर रहा हूं। मैं लगभग 50 एफपीएस प्राप्त कर सकता हूं।

0
  1. UI थ्रेड में Thread.sleep का कभी भी उपयोग न करें, यह बहुत बुरा है।

  2. statics का उपयोग करें; यह एक बुरा ओओपी अभ्यास है, लेकिन यहां उपयोगी है।

  3. उपयोग vertex-buffer objects

  4. onSurfaceChanged में प्रारंभ और लाने स्थानों (glget***location) यहाँ भी।

  5. यह आपकी गलती हमेशा नहीं है क्योंकि फ्रायओ पर, कचरा कलेक्टर खराब है और फिर जिंजरब्रेड पर, the touch drivers fire way too many events (एंड्रॉइड ऐप्स के लिए Google I_O 2011_ मेमोरी प्रबंधन)। तो, धीरे-धीरे अपने ऐप/गेम के लिए अन्य इनपुट विधियों पर स्विच करें जो एंड्रॉइड गति और स्थिति सेंसर जैसे स्पर्श का उपयोग नहीं करते हैं

+0

यह एक उद्धरण है? स्रोत? – sschrass

+0

क्योंकि मैंने इसका अनुभव किया और नींद का उपयोग करने से बचने, और vbos पर स्विच करने से इसे हल करने के लिए चला गया – GLES

संबंधित मुद्दे