2009-08-07 14 views
6

कुछ सहयोगियों के साथ चर्चा में हम सोच रहे थे कि एंड्रॉइड या आईफोन के लिए ओपनजीएल काम विकसित किया गया है या नहीं, यह देखते हुए कि दोनों spec का समर्थन करते हैं।एंड्रॉइड और आईफोन के लिए ओपनजीएल

या दो प्लेटफार्मों के बीच ओपनजीएल साझा करने की वास्तविकता क्विर्क, ट्वीक्स और जितनी आसान हो सके उतनी आसान नहीं है।

उत्तर

8

एक ओपनजीएल कार्यान्वयन में आम तौर पर दो भाग होते हैं: 1. प्लेटफ़ॉर्म विशिष्ट भाग। यह आमतौर पर सतहों को बनाने और प्रदर्शित करने से संबंधित कार्य करता है। 2. ओपनजीएल एपीआई। एंड्रॉइड, ओपनगलस 1.0 के मामले में ओपनजीएल के विशिष्ट कार्यान्वयन के लिए यह प्लेटफॉर्म सभी प्लेटफॉर्म पर समान है।

इसका क्या अर्थ है कि आपके ओपनजीएल कोड का बड़ा हिस्सा बंदरगाह के लिए आसान होना चाहिए।
सी में, आपके पास glLoadIdentity() हो सकता है;
एंड्रॉइड पर जावा में, gl.glLoadIdentity() की तरह कुछ;

तो अपने कोड के बड़े हिस्से के लिए आप काट और पेस्ट कर सकते हैं, और फिर 'ग्ल।' जैसे उपसर्गों को खोज और प्रतिस्थापित कर सकते हैं।

अब मजेदार भाग के लिए: आपको वास्तव में सावधान रहना होगा कि आप किस संस्करण के खिलाफ कोडिंग कर रहे हैं। डेस्कटॉप के लिए ओपनजीएल में एपीआई हैं जो OpenGLES में मौजूद नहीं हैं। प्रत्येक प्लेटफ़ॉर्म के लिए विशिष्ट कुछ ओपनजीएल डेटा प्रकार भी हैं। इसके अतिरिक्त, आपके पास सौदा करने के लिए 1.0 (उदा। एंड्रॉइड) 1.1 (उदा। आईफोन) 2.0 (जैसे आईफोन जीएस) है। एपीआई में अंतर अक्सर अतिरिक्त हार्डवेयर क्षमता के साथ करना पड़ता है, इसलिए ऐसा नहीं है कि आप 2.0/1.1 में 2.0 सुविधाओं का अनुकरण करने के लिए कुछ आसान रैपर कोड लिख सकते हैं।

+1

यह भी जोड़ना चाहिए कि एंड्रॉइड एंड्रॉइड के संस्करण के आधार पर एंड्रॉइड ओगल 1.1 और 2.0 का समर्थन कर सकता है। –

1

दोनों प्लेटफार्म ओपनजीएल ईएस का उपयोग करते हैं, लेकिन विकिपीडिया का दावा है कि एंड्रॉइड 1.0 का उपयोग करता है जबकि आईफोन 3gs link के लिए 1.1 (मूल और 3 जी) 2.0 का उपयोग करता है। ऐसा लगता है कि कम से कम कुछ प्रोग्राम 1.0 में शामिल एपीआई फ़ंक्शंस का उपयोग नहीं करेंगे, इसलिए 2 (अच्छी तरह से 3) के बीच पूर्ण संगतता नहीं होगी।

5

ओपन Android पर ES Khronos जावा GLES कल्पना JSR239 के अनुसार किया, और जीएल glinst.glBindBuffer (FloatBuffer.wrap (डेटा) ...) iPhone पर OpenGL ES शेयर जीएल का उपयोग किया जाता तरह कुछ में कॉल लपेटता है। ज फ़ाइलें और एक ही कॉल सिर्फ glBindBuffer तरह दिखेगा (डेटा ...)

कोड नहीं विनिमेय हो जाएगा और 1.0 1.1 और 2.0 के बीच मतभेद की पूरी गंदगी में कई quirks का कारण होगा, यहां तक ​​कि इससे पहले कि आप मिल एपिस।

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