2011-08-23 19 views
20

मैं क्या वास्तव में पृष्ठभूमि में होता है जब हम इस (छवि कृपया देखें) कर पता लगाने के लिएमिक्सिंग क्वार्ट्ज और ओपनजीएल?

enter image description here

आप छवि में देख सकते हैं मैं कुछ बटन जोड़ लिया है और इंटरफ़ेस से सामग्री देखें जाँच की है कोशिश कर रहा हूँ खिड़की के लिए निर्माता।

अब जैसा कि हम जानते हैं कि यह कोर एनीमेशन का उपयोग करेगा या कहेंगे परतें बनाएगा। (अगर मैं गलत हूं तो कृपया मुझे सही करें। अभी भी पढ़ाई कर रहे हैं ...)

मैं जानना चाहता हूं कि ये बटन कैसे खींचे जाते हैं?

मेरी धारणा तब होती है जब हम सामग्री दृश्य पर टिकटें करते हैं, तो इन बटनों को CGBitmapContextRef से खींचा जाता है और इससे निर्मित बिटमैप कोर एनिमेशन (ओपनजीएल) को सौंप दिया जाता है। लेकिन मैं अब तक इसे साबित करने में सक्षम नहीं हूं। मैं इसे कैसे साबित करूं? कोई उदाहरण या कुछ दृष्टिकोण विचार बहुत अच्छा होगा?

बात मुझे यकीन है कि CGBitmapContextRef से बनाए गए बटन हैं। लेकिन उन बटन छवियों का क्या होता है अज्ञात है।

कोई भी समझा सकता है कि यह एकीकरण कैसे संभव है? स्क्रीन पर ये छवि कैसे मिलती?

संपादित करें:

एक ही विषय पर कुछ और जानकारी जोड़ने के लिए, ओपन की परतों के लिए नीचे दी गई छवि देखें। मुझे लगता है कि मैं सामान्य ओपनजीएल फ्रेमवर्क परत को लक्षित कर रहा हूं। enter image description here

+6

हम नहीं जानते, और हम * जानना नहीं चाहते हैं। कोर एनीमेशन और दृश्य पदानुक्रम के बीच एकीकरण एक कार्यान्वयन विवरण है और यदि ऐप्पल इसे करने के बेहतर तरीके से सोचता है तो किसी भी समय बदल सकता है। :) –

+0

यह वास्तव में स्पष्ट नहीं है कि आप यहां क्या पूछ रहे हैं। "ये बटन कैसे खींचे जाते हैं?" वास्तव में अस्पष्ट है। यदि आप सिर्फ यह जानना चाहते हैं कि यह आंतरिक रूप से कैसे काम करता है, तो आप यहां नहीं पाएंगे, क्योंकि यह गुप्त ऐप्पल सॉस है। – benzado

+0

हां मैं कुछ आंतरिक विवरण ढूंढ रहा था। सब कुछ नहीं हो सकता .. लेकिन क्षेत्र के चारों ओर कुछ अच्छी चर्चा, कुछ विचार, कुछ सुराग रहस्य प्रकट कर सकते हैं। – MacGeek

उत्तर

0

बटन CGBitmapContextRef पर आकर्षित होते हैं।

कहना चलें, हम CGBitmapContextRef

CGContextRef CGBitmapContextCreate (
    void *data, 
    size_t width, 
    size_t height, 
    size_t bitsPerComponent, 
    size_t bytesPerRow, 
    CGColorSpaceRef colorspace, 
    CGBitmapInfo bitmapInfo 
); 

यहाँ void *data उपयोग कर बनाई गई आपत्ति की है, स्मृति में गंतव्य जहां ड्राइंग प्रदान करने की है करने के लिए एक सूचक है।

CGContext API का उपयोग data पर विभिन्न संचालन करने के लिए किया जा सकता है। इस प्रकार बटन और पृष्ठभूमि इसे आकर्षित किया जा सकता है।

एक बार किया गया तो हम CGContextRef को छोड़ सकते हैं लेकिन डेटा अभी भी स्मृति में है जिसे ओपनजीएलकॉन्टेक्स्ट (CGLContextObj) में पारित किया जा सकता है।

मुझे अभी भी पता नहीं है कि यह data से CGLContextObj पर कैसे अपलोड करता है। कुछ निजी एपीआई का उपयोग करना चाहिए।

1

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

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