2010-12-06 9 views
7

पर जाने पर लगभग 15 गुना धीमी गति से चलता है। मैं मैक ओएसएक्स मंच के क्यूटी और ओपनजीएल (और क्यूटीओपेनजीएल) के उपयोग के लिए एक बहुत ही सरल अनुप्रयोग विकसित कर रहा हूं ताकि क्रॉसप्लेटफार्म आसान हो जाए।
एप्लिकेशन को वीडियो धाराओं की एक परिवर्तनीय संख्या प्राप्त होती है जिसे स्क्रीन पर प्रस्तुत किया जाना है। इन वीडियो धाराओं के प्रत्येक फ्रेम को 3 डी स्पेस में एक आयत मैप करने के लिए एक बनावट के रूप में उपयोग किया जाता है (एक वीडियोवॉल के समान ही)। प्राप्त करने, लॉक करने, वीडियो डेटा अपलोड करने, थ्रेड सिंक्रनाइज़ करने जैसी चीजों के अलावा ... मुझे लगता है कि यह स्पष्ट है कि यह एक बहुत ही सरल एप्लीकेशन है।उसी QtOpenGL कोड कार्बन (बनाम कोको)

तथ्य यह है कि 10.5 मैक में कोको आधारित क्यूटी 4.7 बाइनरी (डिफ़ॉल्ट वाले) का उपयोग करते समय सभी ठीक व्यवहार करते हैं। लेकिन मेरे कोड को सभी ओएसएक्स संस्करणों (और सहित) 10.4 से शुरू होने पर ठीक चलाना है। तो मैंने 10.4 मशीन में कोड की कोशिश की और यह शुरू होने पर ही दुर्घटनाग्रस्त हो गया। इंटरनेट पढ़ने के कुछ घंटों के बाद, मैंने पाया कि एक क्यूटी आवेदन के लिए 10.4 पर लक्षित किया जाना चाहिए, कार्बन क्यूटी आधारित का उपयोग किया जाना चाहिए। इसलिए मैंने पूरी परियोजना को नए ढांचे के साथ पुनर्निर्माण किया।
जब नई परिणामी बाइनरी चलती है, तो सभी इस तथ्य को छोड़कर अच्छी तरह से काम करते हैं कि एप्लिकेशन के एफपीएस लगभग 2 एफपीएस तक गिरते हैं !! और यह दोनों मशीनों पर समान व्यवहार करता है (10.5 कंप्यूटर में समझदारी से बेहतर विशेषताएं हैं) मैंने इस पर काम करने में काफी समय बिताया है लेकिन मैं समाधान तक नहीं पहुंच पाया है। कोई सुझाव? आवेदन और चीजों को मैं कोशिश की है

जब आधारित
  • केवल दो (256x256 बनावट) कार्बन वीडियो आदेश को आश्वस्त करने में इस्तेमाल की गिरफ्तारी recompiling
    • कोड संशोधित नहीं किया गया के बारे में

      अधिक जानकारी यह एक बैंडविड्थ नहीं है समस्या की सीमा (हालांकि मुझे पता है यह क्योंकि पहले कोड नहीं काम चाहिए)

    • 2 वीडियो धाराओं नेटवर्क (स्थानीय)
    • जब एक वीडियो स्ट्रीम आता है, एक संकेत emmited है और डेटा एक पर अपलोड किया जाएगा से आने ओपनजीएल बनावट (glTexSubImage2 डी)
    • एक टाइमर रेंडर (पेंटजीएल) लगभग 20ms (~ 50 एफपीएस)
    • पर प्रस्तुत करता है रेंडर कोड आयतों को आकर्षित करने के लिए बनावट (अद्यतन या नहीं) का उपयोग करता है।
    • केवल एक वीडियो आने पर प्रतिपादन 2 (एसिंक्रोनस) वीडियो स्ट्रीम होने के कारण काम नहीं करेगा; स्क्रीन पर अधिक चीजों को आकर्षित करने के अलावा।
    • केवल मूल ओपनजीएल कमांड का उपयोग किया जाता है (कोई पीबीओ, एफबीओ, वीबीओ, ...) केवल एक समस्याग्रस्त चीज शेडर्स का उपयोग हो सकती है (केवल क्यूटी 4.7 से उपलब्ध), लेकिन इसका कोड छोटा है।
    • मैंने ओपनजीएलप्रोफाइलर और इंस्ट्रूमेंट्स का उपयोग किया है। कुछ भी विशेष/अजीब मनाया गया था।

    कुछ बातें मैं संदेह (निष्कर्ष)

    • यह स्पष्ट है यह एक हार्डवेयर मुद्दा नहीं है। वही कंप्यूटर अलग-अलग व्यवहार करता है
    • यह मुझे सनसनी देता है कि यह एक थ्रेडिंग/लॉकिंग समस्या है, लेकिन क्यों?
    • कार्बन 32 बिट्स है। 10.5 आवेदन 64 था। यह कार्बन में 64 बिट्स विकसित नहीं कर सकता है। 32 बिट्स संभावित कारण देने के लिए
    • , मैंने 32 बिट्स के लिए पहली परियोजना का पुनर्निर्माण भी किया। यह आंशिक रूप से वही काम करता था।
    • मैंने संदर्भ स्विचिंग के साथ कार्बन की समस्याओं (सामान्य से अधिक) के बारे में कुछ पढ़ा है।
    • शायद ओपनजीएल कार्यान्वयन मल्टीथ्रेड है और कोड नहीं है? (या विपरीत?) इससे कई स्टालों का कारण बन सकता है।
    • शायद कोको से अलग कार्बन हैंडल घटनाएं? (मेरा मतलब सिग्नल/इवेंट प्रेषण, मुख्य पाश ...)

    ठीक है, यह मेरे वास्तविक सिरदर्द (इतने लंबे लेखन के लिए खेद है) ठीक है। कोई सुझाव, विचार .. बहुत सराहना की जाएगी।

    अग्रिम में Thx।

  • +0

    http://www.carbondev.com/site/?page=64-bit+ कार्बन यह सहायक हो सकता है। ऐप्पल कार्बन को बनाए रखता है, लेकिन नई विशेषताएं नहीं जोड़ता है, इसलिए मुझे लगता है कि वे हुड के नीचे कुछ भी नहीं बदलेंगे। वे शायद कुछ भी अनुकूलित नहीं करेंगे, क्योंकि उनका मुख्य लक्ष्य पूरी तरह से अपने मंच पर ओब्जे-सी में जाना है –

    उत्तर

    1

    क्या मैं नैदानिक ​​प्रश्न पूछ सकता हूं? क्या आप यह सुनिश्चित कर सकते हैं कि यह सॉफ्टवेयर रेंडरर को पास नहीं किया जा रहा है?

    मुझे याद है कि जब 10.4 जारी किया गया था, तो क्वार्ट्ज चरम, क्वार्ट्ज और कार्बन के बारे में कुछ भ्रम था, जिनमें से कुछ अक्षम थे, और उनमें से कुछ पर डिफ़ॉल्ट रूप से हार्डवेयर रेंडरर्स अक्षम थे, जिसके लिए अंतिम उपयोगकर्ता द्वारा कॉन्फ़िगरेशन की आवश्यकता होती थी यह सही ढंग से काम कर रहा है। मुझे यकीन नहीं है कि यह जानकारी प्रासंगिक है, क्योंकि आप कहते हैं कि, 10.4 को लक्षित किया गया है, समस्या 10.4 और 10.5 दोनों पर प्रदर्शित होती है, हां?

    यह संभव है (हालांकि स्वीकार्य रूप से मैं यहां स्ट्रॉ पर पकड़ रहा हूं) कि 10.5 कार्बन में भी डिफ़ॉल्ट रूप से हार्डवेयर प्रस्तुतकर्ताओं का उपयोग नहीं करता है। मैं यह सोचना चाहता हूं कि ओएसएक्स सभी परिदृश्यों में सॉफ़्टवेयर प्रस्तुतकर्ताओं को हार्डवेयर प्रस्तुतकर्ता पसंद करता है, लेकिन यह देखने में थोड़ा समय लग सकता है कि आप पहले से ही अन्य विकल्पों को कैसे देख रहे हैं।

    शुभकामनाएं।

    0

    यदि आप क्यूटी का उपयोग कर रहे हैं, तो मुझे लगता है कि आपका कोड विंडोज या लिनक्स मंच पर काम करेगा। क्या आपने इन प्लेटफार्मों के तहत अपने आवेदन की कोशिश की है?

    यह तुरंत प्रकट होगा अगर यह क्यूटी या मैक ओएसएक्स संस्करण से आता है।

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