2009-10-24 26 views
9

का उपयोग कर एक पोर्टेबल जावा एप्लिकेशन लिखना मैं एक जावा 3 डी गेम लिखने की योजना बना रहा हूं जो पीसी और एंड्रॉइड दोनों पर काम करेगा। दुर्भाग्यवश ऐसा लगता है कि दोनों प्लेटफार्मों के लिए कोई आम ओपनजीएल एपीआई नहीं है।जॉग और एंड्रॉइड ओपनजीएल

क्या एपीआई महत्वपूर्ण रूप से भिन्न है? क्या कोई तरीका है कि मैं दोनों संस्करणों में एक ही 3 डी कोड का उपयोग कर सकता हूं? क्या यह एक अच्छा विचार है?

+0

अच्छा सवाल - मोबाइल प्लेटफार्मों पर पोर्टेबिलिटी अभी भी एक वास्तविकता नहीं है। – whatnick

+0

क्यूटी का उपयोग करने का प्रयास करें। यह क्रॉस-प्लेटफॉर्म और विंडोज, मैक ओएसएक्स, लिनक्स, आईओएस, एंड्रॉइड, ब्लैकबेरी, विंडोज आरटी, और (जल्द ही) विंडोज फोन में काम करता है।यह सभी प्लेटफ़ॉर्म पर संगत ओपनजीएल फ़ंक्शंस का न्यूनतम सेट प्रदान करता है, लेकिन आप प्रत्येक प्लेटफॉर्म पर विशिष्ट ओपनजीएल फ़ंक्शंस का भी उपयोग कर सकते हैं (उदा। डेस्कटॉप पर पूर्ण ओपनजीएल)। – trusktr

उत्तर

10

एंड्रॉइड ओपनजीएल ईएस 1.0 का समर्थन करता है जो ओपनजीएल 1.3 के साथ ओवरलैप करता है, इसलिए यह संभव होना चाहिए, लेकिन यह रनटाइम पर जार फ़ाइलों को बस इतना आसान नहीं है।

दोनों प्लेटफॉर्म पर जितना संभव हो सके एप्लिकेशन का पुन: उपयोग करने का प्रयास करना एक अच्छा विचार है। वैसे भी ओपनजीएल ईएस समर्थन की आवश्यकता नहीं है, भले ही आप ओपनजीएल जैसे बाह्य निर्भरताओं से आपके शेष कोड को अलग करने के लिए आम तौर पर अच्छा अभ्यास करें। आप कभी भी नहीं जानते कि आप कौन सी एपीआई/मंच भविष्य में अपने आवेदन को बंद करना चाहते हैं।

2 विकल्प उपलब्ध हैं।

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

ओपनजीएल ईएस और ओपनजीएल के समान ही बनाए रखने के लिए आवश्यक प्रयास बहुत समान नहीं होना चाहिए जो आपको सामान्य कार्यों तक चिपकाने के लिए बहुत अधिक नहीं होना चाहिए।

दूसरा विकल्प Jogl2 को आजमाने और उपयोग करने के लिए है जिसका प्रोफाइल के लिए समर्थन है। ये आपको बिल्कुल वही प्रदान करने लगते हैं जो आपको चाहिए लेकिन Jogl2 अभी भी बीटा में है।

नीचे यह पेज प्रोफाइल के बारे में एक छोटे से बात करती है: http://kenai.com/projects/jogl/pages/FAQ

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

प्रोफ़ाइल के बारे में अधिक जानकारी के लिए आप यह http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained पढ़ना चाहेंगे।

+0

बहुत अच्छी तरह से शोध जवाब। वर्ल्डविंड नामक एक अच्छा ओएस जॉगएल एप्लिकेशन है, जिसे मैं काम करता हूं और मैं इसे एंड्रॉइड पर चलाने के लिए भुगतान करता हूं। – whatnick

1

वास्तव में जावा 3 डी और एंड्रॉइड ओपनजी एपीआई के बीच काफी अंतर है। पहला java3d 3 डी पर एक उच्च स्तरीय abstraction है। और यहां तक ​​कि अगर आप जॉगएल की तरह कुछ इस्तेमाल करना चाहते थे तो एपीआई में कुछ अंतर आएंगे। आपकी सबसे अच्छी शर्त कोड बेस में वास्तव में 3 डी ड्राइंग कार्यान्वयन को इंगित करना होगा, आप शेष तर्क साझा कर सकते हैं, लेकिन उसके बाद ओपनएल/3 डी ड्राइंग को संभालने के लिए प्लेटफॉर्म विशिष्ट कोड है।

4

परियोजना समाप्त हो गई है। यह पता चला कि एपीआई कुछ हद तक अलग है, लेकिन कार्यात्मक रूप से एक साझा हिस्सा है। हमने एक साधारण प्रीप्रोसेसर लिखना समाप्त कर दिया जो जॉग कोड को ईएस संस्करण में परिवर्तित कर दिया, और ग्रहण के साथ रूपांतरण स्वचालित कर दिया।

+2

क्या आप प्रीप्रोसेसर साझा करेंगे? – Rom1

+0

कृपया प्रीप्रोसेसर साझा करें। मुझे एक ही समस्या का सामना करना पड़ रहा है – jmishra

+2

यह सुनिश्चित नहीं है कि यह मदद करता है, तो आप शायद जीसीसी के सीपीपी का उपयोग कर प्राप्त कर सकते हैं। वैसे भी, यहां हमारी परियोजना (नेटैक 3 डी) है: http://students.mimuw.edu.pl/~pm262952/netacka/ यहां प्रीप्रोसेसर (पायथन में) है: http://pastebin.com/iPjDHiTR और एक उदाहरण स्रोत फ़ाइल: http://pastebin.com/vwHGcyC0 – hmp

1

चूंकि JOGL-ES को कई साल पहले JOGL 2.x में विलय कर दिया गया था, अब आप डेस्कटॉप और मोबाइल वातावरण (एंड्रॉइड) दोनों में JOGL का उपयोग कर सकते हैं।

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