2012-05-22 17 views
6

मैं सी या सी ++ में कुछ 3 डी प्रोग्रामिंग के साथ शुरू करना चाहता हूं। मेरी समस्या यह है कि यह मैक ओएस के उद्देश्य उद्देश्य सी और कोको फ्रेमवर्क के लिए एकमात्र ट्यूटोरियल जैसा लगता है। मैं विंडोज उपयोगकर्ताओं के समान वातावरण प्राप्त करना चाहता हूं, कम या ज्यादा।मैं कोको से 'ब्रेक' कैसे कर सकता हूं और सी/सी ++ में मैक ओपनजीएल अनुप्रयोगों को विकसित कर सकता हूं?

यदि मैं एक टेक्स्ट एडिटर और जी ++ कंपाइलर का उपयोग करने का प्रयास करता हूं, तो मुझे हेडर याद आ रही है, लेकिन, अगर मैं एक्सकोड का उपयोग करने की कोशिश करता हूं, तो मुझे कोको के साथ घूमने के लिए मजबूर होना पड़ता है, जो मुझे निराशाजनक बनाता है। मुझे वास्तव में कोई कारण नहीं दिख रहा है कि ओपनजीएल/जीएलयूटी जो मैक पर पूर्व-स्थापित है, मुझे एक्सकोड का उपयोग करने के लिए मजबूर होना चाहिए, लेकिन ऐसा लगता है कि मुझे इसके बिना हेडर फाइल नहीं मिल सकती हैं।

मैं पूर्ण क्रॉस-प्लेटफार्म पोर्टेबिलिटी के साथ कुछ पुराने फैशन कोड लिखने के लिए सभी ऐप्पल 'डेवलपर अनुकूल' इंटरफेस कैसे प्राप्त कर सकता हूं?

+2

यदि आप एक्सकोड का उपयोग करना चाहते हैं तो आपको केवल उद्देश्य-सी-आधारित अनुप्रयोगों को लिखना नहीं है। उदाहरण के लिए, यह वर्णन करता है कि एक्सकोड में wxwidgets अनुप्रयोगों को कैसे करें: http://wiki.wxwidgets.org/Creating_Xcode_projects_for_wxWidgets_applications, जो क्रॉस-प्लेटफ़ॉर्म सी ++-आधारित अनुप्रयोग हैं। एक एपीआई के रूप में ओपनजीएल खुद ही सुंदर पोर्टेबल है। –

+1

यदि आप नए प्रोजेक्ट विज़ार्ड से कोको ऐप चुनते हैं तो आपको केवल कोको का उपयोग करने के लिए मजबूर होना पड़ता है। सी या सी ++ का चयन करें और आप नहीं करते हैं। ओपनजीएल एक क्रॉस-प्लेटफ़ॉर्म इंटरफ़ेस विकसित करने के लिए waayay overkill है। –

उत्तर

5

उद्देश्य-सी का कुछ भाग अनिवार्य है यदि आप ओएसएक्स/कोको के नवीनतम लाभों का उपयोग करना चाहते हैं। बंदरगाह के लिए सबसे आसान तरीका है MacOS के लिए एक मौजूदा एप्लिकेशन के पास निम्न होगा:

  1. ऑब्जेक्टिव-सी में "नंगे हड्डियों" nibless आवेदन लिखें। यह केवल एक ही AppDelegate वर्ग और मुख्य() फ़ंक्शन
  2. में एक छोटे से सेटअप अपने विंडो में कस्टम NSGLView वंशज जो आप AppDelegate के didFinishLaunching ईवेंट हैंडलर
  3. सेटअप CVDisplayLink और NSGLView में प्रतिपादन कॉलबैक में बनाने जोड़े होगा प्रारंभ
  4. CVDisplayLink के कॉलबैक

में अपने मौजूदा ओपन प्रतिपादन कोड दिलचस्प भाग के लिए अब का उपयोग करें: जहां यह सब पाने के लिए?

आश्चर्यजनक रूप से, एक अच्छा निबलेस एप्लिकेशन नमूना ओएसएक्स के क्यूईएमयू (हाँ, एमुलेटर) के बंदरगाह के लिए यूआई है। इसके अलावा ऐप्पल के आधिकारिक GLEssenstialPractices डेमो ओपनजीएल प्रतिपादन पाइपलाइन को स्थापित करने के लिए आवश्यक सभी जानकारी दिखाता है। बाकी सब आप पर निर्भर है।

सिस्टम-स्तर ओएसएक्स प्रोग्रामिंग के लिए विस्तृत और आधुनिक परिचय मार्क डेलरीम्प्ल द्वारा "उन्नत मैक ओएस एक्स प्रोग्रामिंग" पुस्तक में पाया जा सकता है। यह कई चीजों को बताता है और यह सब पढ़ने के बाद मैंने ओएस में अधिकांश डिज़ाइन फैसलों को समझ लिया है (यदि आप प्रदर्शन दृष्टिकोण से सोचते हैं तो यह वास्तव में सभी "गैर-मानक" चीजों को स्वीकार करता है)।

"निबलेस" प्रोग्रामिंग के माध्यम से प्राप्त करने के लिए मैं आपको इस पोस्ट की तरह ब्लॉग पोस्ट पढ़ने की सलाह दूंगा http://blog.kleymeyer.com/2008/05/creating-cocoa-applications-programatically-ie-nib-less/ Google खोज बहुत मदद करता है।

एक ही चाल CocoaTouch/iOS के लिए लागू करते हैं और ढेर सारे प्रश्न इतने पर उत्तर दिया, यह एक Cocoa touch/Xcode - generating NIB-less graphics context

2

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

लाइटहाउस 3 डी आपको पोर्टेबिलिटी और अपनी पहली परियोजना कैसे शुरू करने के बारे में कुछ सुझाव देता है। http://www.lighthouse3d.com/tutorials/glut-tutorial/initialization/

-1

मैं एक सॉफ्टवेयर परत (cocoglut नाम) द्वारा बनाए गए बुनियादी या आवश्यक भरमार के translatation की अनुमति देता है कोको के लिए कहता है।यह लाइब्रेरी खिड़कियां बनाने/नष्ट करने और सी/सी ++ एप्लिकेशन से कॉलबैक पंजीकृत करने की अनुमति देती है, केवल जीएलयूटी कॉल का उपयोग करके, निब फाइलों की आवश्यकता के बिना या एक्सकोड प्रोजेक्ट फाइलों के लिए (और कमांड लाइन से संकलित किया जा सकता है)। यह विकल्प पूर्ण रेटिना डिस्प्ले रिज़ॉल्यूशन का उपयोग करता है। स्रोत GitHub पर है।

+0

संपादन, नाथानियल के लिए बहुत बहुत धन्यवाद। – user5122888

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

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