पर जाने पर लगभग 15 गुना धीमी गति से चलता है। मैं मैक ओएसएक्स मंच के क्यूटी और ओपनजीएल (और क्यूटीओपेनजीएल) के उपयोग के लिए एक बहुत ही सरल अनुप्रयोग विकसित कर रहा हूं ताकि क्रॉसप्लेटफार्म आसान हो जाए।
एप्लिकेशन को वीडियो धाराओं की एक परिवर्तनीय संख्या प्राप्त होती है जिसे स्क्रीन पर प्रस्तुत किया जाना है। इन वीडियो धाराओं के प्रत्येक फ्रेम को 3 डी स्पेस में एक आयत मैप करने के लिए एक बनावट के रूप में उपयोग किया जाता है (एक वीडियोवॉल के समान ही)। प्राप्त करने, लॉक करने, वीडियो डेटा अपलोड करने, थ्रेड सिंक्रनाइज़ करने जैसी चीजों के अलावा ... मुझे लगता है कि यह स्पष्ट है कि यह एक बहुत ही सरल एप्लीकेशन है।उसी QtOpenGL कोड कार्बन (बनाम कोको)
तथ्य यह है कि 10.5 मैक में कोको आधारित क्यूटी 4.7 बाइनरी (डिफ़ॉल्ट वाले) का उपयोग करते समय सभी ठीक व्यवहार करते हैं। लेकिन मेरे कोड को सभी ओएसएक्स संस्करणों (और सहित) 10.4 से शुरू होने पर ठीक चलाना है। तो मैंने 10.4 मशीन में कोड की कोशिश की और यह शुरू होने पर ही दुर्घटनाग्रस्त हो गया। इंटरनेट पढ़ने के कुछ घंटों के बाद, मैंने पाया कि एक क्यूटी आवेदन के लिए 10.4 पर लक्षित किया जाना चाहिए, कार्बन क्यूटी आधारित का उपयोग किया जाना चाहिए। इसलिए मैंने पूरी परियोजना को नए ढांचे के साथ पुनर्निर्माण किया।
जब नई परिणामी बाइनरी चलती है, तो सभी इस तथ्य को छोड़कर अच्छी तरह से काम करते हैं कि एप्लिकेशन के एफपीएस लगभग 2 एफपीएस तक गिरते हैं !! और यह दोनों मशीनों पर समान व्यवहार करता है (10.5 कंप्यूटर में समझदारी से बेहतर विशेषताएं हैं) मैंने इस पर काम करने में काफी समय बिताया है लेकिन मैं समाधान तक नहीं पहुंच पाया है। कोई सुझाव? आवेदन और चीजों को मैं कोशिश की है
- कोड संशोधित नहीं किया गया के बारे में
अधिक जानकारी यह एक बैंडविड्थ नहीं है समस्या की सीमा (हालांकि मुझे पता है यह क्योंकि पहले कोड नहीं काम चाहिए)
- 2 वीडियो धाराओं नेटवर्क (स्थानीय)
- जब एक वीडियो स्ट्रीम आता है, एक संकेत emmited है और डेटा एक पर अपलोड किया जाएगा से आने ओपनजीएल बनावट (glTexSubImage2 डी)
- एक टाइमर रेंडर (पेंटजीएल) लगभग 20ms (~ 50 एफपीएस)
- पर प्रस्तुत करता है रेंडर कोड आयतों को आकर्षित करने के लिए बनावट (अद्यतन या नहीं) का उपयोग करता है।
- केवल एक वीडियो आने पर प्रतिपादन 2 (एसिंक्रोनस) वीडियो स्ट्रीम होने के कारण काम नहीं करेगा; स्क्रीन पर अधिक चीजों को आकर्षित करने के अलावा।
- केवल मूल ओपनजीएल कमांड का उपयोग किया जाता है (कोई पीबीओ, एफबीओ, वीबीओ, ...) केवल एक समस्याग्रस्त चीज शेडर्स का उपयोग हो सकती है (केवल क्यूटी 4.7 से उपलब्ध), लेकिन इसका कोड छोटा है।
- मैंने ओपनजीएलप्रोफाइलर और इंस्ट्रूमेंट्स का उपयोग किया है। कुछ भी विशेष/अजीब मनाया गया था।
कुछ बातें मैं संदेह (निष्कर्ष)
- यह स्पष्ट है यह एक हार्डवेयर मुद्दा नहीं है। वही कंप्यूटर अलग-अलग व्यवहार करता है
- यह मुझे सनसनी देता है कि यह एक थ्रेडिंग/लॉकिंग समस्या है, लेकिन क्यों?
- कार्बन 32 बिट्स है। 10.5 आवेदन 64 था। यह कार्बन में 64 बिट्स विकसित नहीं कर सकता है। 32 बिट्स संभावित कारण देने के लिए
- , मैंने 32 बिट्स के लिए पहली परियोजना का पुनर्निर्माण भी किया। यह आंशिक रूप से वही काम करता था।
- मैंने संदर्भ स्विचिंग के साथ कार्बन की समस्याओं (सामान्य से अधिक) के बारे में कुछ पढ़ा है।
- शायद ओपनजीएल कार्यान्वयन मल्टीथ्रेड है और कोड नहीं है? (या विपरीत?) इससे कई स्टालों का कारण बन सकता है।
- शायद कोको से अलग कार्बन हैंडल घटनाएं? (मेरा मतलब सिग्नल/इवेंट प्रेषण, मुख्य पाश ...)
ठीक है, यह मेरे वास्तविक सिरदर्द (इतने लंबे लेखन के लिए खेद है) ठीक है। कोई सुझाव, विचार .. बहुत सराहना की जाएगी।
अग्रिम में Thx।
http://www.carbondev.com/site/?page=64-bit+ कार्बन यह सहायक हो सकता है। ऐप्पल कार्बन को बनाए रखता है, लेकिन नई विशेषताएं नहीं जोड़ता है, इसलिए मुझे लगता है कि वे हुड के नीचे कुछ भी नहीं बदलेंगे। वे शायद कुछ भी अनुकूलित नहीं करेंगे, क्योंकि उनका मुख्य लक्ष्य पूरी तरह से अपने मंच पर ओब्जे-सी में जाना है –