2010-07-06 11 views
9

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

उत्तर

10

ओएस एक्स पर ओपनजीएल के बीच सबसे बड़ा अंतर, बाकी सब कुछ की तुलना में हेडर फाइलों का स्थान है। ओएस एक्स पर:

#include <OpenGL/gl.h> 
#include <OpenGL/glu.h> 
#include <GLUT/glut.h> 

आप ऑब्जेक्टिव-सी/कोको से दूर रहने की और भरमार आप SDL जो एक क्रॉस मंच गेमिंग पुस्तकालय (खिड़कियां, 2 डी ग्राफिक्स, ध्वनि, इनपुट, आदि) है की कोशिश कर सकते हैं।

संपादित करें: संकलक झंडे, जो mipadi तैनात, अर्थात् के बारे में भूल:

-framework OpenGL 
+1

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

+0

ऐसा लगता है कि मैं एसडीएल मार्ग के साथ जा रहा हूं। मैं जो खोज रहा हूं उसे ठीक से नहीं लग रहा है। –

+1

अच्छी तरह से कोको मैक ओएस एक्स विकास के लिए एपीआई है, इसलिए मुझे यकीन नहीं है कि यह "automagic" कैसे है। आप ओएस एक्स में एक विंडो बनाने के लिए कोको का उपयोग करते हैं जैसे कि आप विंडोज़ में विंडो बनाने के लिए विंडोज एपीआई का उपयोग करते हैं। –

1

जब मैक ओएस एक्स पर ओपन का उपयोग कर, दो बातों का ध्यान में रखा जाना चाहिए:

एक, आप ओपन ढांचे से जोड़ने के लिए की है।

$ gcc -framework OpenGL -o my_opengl_program my_opengl_program.c 

आप Xcode उपयोग कर रहे हैं (ध्यान दें कि यह झंडा केवल ओएस एक्स पर काम करता है)

, तो आप सिर्फ OpenGL.framework को जोड़ सकते हैं: Xcode के बाहर, आप लिंकर को -framework ध्वज पारित कर सकते हैं आपके जुड़े ढांचे।

दो, आप अपने ओपनजीएल शीर्षकों के सामने OpenGL/> उपसर्ग करते हैं।

#include <OpenGL/gl.h> 

अन्यथा, ओपन मैक ओएस एक्स पर साथ प्रोग्रामिंग बहुत ज्यादा एक ही है: उदाहरण के लिए, gl.h, उपयोग शामिल करने के लिए।

+0

मुझे नहीं लगता कि आप इस प्रश्न की भावना को समझते हैं। मुझे पूरा यकीन है कि, उपर्युक्त करने के बाद, मैं wglCreateContext को कॉल नहीं करूँगा। जो मैं खोज रहा हूं वह या तो खिड़की बनाने और ओजीएल संदर्भ को जोड़ने के लिए कंकाल कोड या कुछ छद्म कोड है जो प्रक्रिया को बताता है। –

+0

यह देखकर कि कैसे 'wglCreateContext' विंडोज के लिए विशिष्ट है (जहां तक ​​मुझे पता है), तो नहीं, आप मैक ओएस एक्स पर इसका उपयोग नहीं करेंगे। हालांकि, आप ओपनजीएल प्रोग्राम लिखने के लिए * ओपनजीएल फ़ंक्शंस का उपयोग कर सकते हैं ओएस एक्स – mipadi

+0

पर, मुझे पता है कि ओपनजीएल फ़ंक्शन नहीं बदलते हैं। यह मूल प्रश्न नहीं था, लेकिन आपके द्वारा दी गई कुछ जानकारी निश्चित रूप से प्रासंगिक है, इसलिए इसके लिए धन्यवाद। –

1

चूंकि आप मैक पर प्रोग्रामिंग कर रहे हैं, इसलिए आप किसी भी भाषा का उपयोग कर सकते हैं जिसे आप परिचित हैं। एक्सकोड सी ++ संकलन का समर्थन करता है, इसलिए यदि आप विंडोज़ पर ओपनजीएल से परिचित हैं, तो यह एक सीधी आगे संक्रमण है, हालांकि आपको ओएसएक्स विंडो (कोको सबसे अधिक संभावना) बनाने के लिए उचित तरीकों का उपयोग करने की आवश्यकता होगी।

यदि पायथन आपका थांग है, तो PyOpenGL एक पाइथन है जो ओपनजीएल को बाध्यकारी है जो क्रॉस प्लेटफॉर्म है।

+0

आप सीधे विंडोज़ के साथ काम/काम करने के लिए ओपनजीएल प्राइमेटिव का उपयोग कर सकते हैं (कोको प्रति से गुजरने की कोई ज़रूरत नहीं है)। – mipadi

0

गैर उद्देश्य सी पुस्तकालय AGL है।

5

यह प्रश्न इंटरनेट समय में बेहद पुराना है, लेकिन सबसे सरल तरीका ... उद्देश्य-सी में अपने पैरों को डब करना है ... क्षमा करें।

मेरे इस आ की सामान्य तरीके से इस प्रकार है:

  • आप सी ++, कोई समस्या नहीं में अपने सभी मूल प्रोग्रामिंग कर रख सकते हैं।
  • एक्सकोड में एक नया "कोको एप्लिकेशन" बनाएं।
  • इंटरफ़ेस बिल्डर (जहां आप अपनी .xib फ़ाइल संपादित करते हैं) में, ऑब्जेक्ट ब्राउज़र में NSOpenGLView ऑब्जेक्ट ढूंढें, और इसे अपनी विंडो पर स्मैक करें।
  • यह बिट महत्वपूर्ण: ऑब्जेक्ट इंस्पेक्टर में उप-वर्ग को अपने स्वयं के उप-वर्ग (जिसे अभी भी बनाने की आवश्यकता है) में बदल दें।आप इसे अपनी पसंद के कुछ भी नाम दे सकते हैं, उदाहरण के लिए MyRenderer या कुछ।
  • हिट [cmd] + [n] और एक नया उद्देश्य-सी कक्षा बनाएं, MyRendere आर।
  • महत्वपूर्ण! MyRenderer.m से MyRenderer.mm में एक्सटेंशन बदलें। इस तरह, एक्सकोड जानता है कि इसे उद्देश्य-सी के बजाय उद्देश्य-सी ++ के लिए संकलित करना होगा।
  • MyRenderer.mm में, कम से कमNSOpenGLView के निम्न विधियों को ओवरराइड करें।
    • - (void) awakeFromNib: यहां अपनी कक्षा प्रारंभ करें। ओपनजीएल को यहां प्रारंभ न करें, या आपका प्रोग्राम क्रैश हो जाएगा।
    • : यहां अपनी ड्राइंग सामग्री करें।
    • - (void) prepareOpenGL: यहां ओपनजीएल शुरू करें।
    • - (void) reshape:(NSRect)bounds: जब दृश्य का आकार बदल जाता है।

अच्छी खबर यह है कि आप स्वतंत्र रूप से मिश्रण कर सकते हैं MyRenderer.mm अंदर सी ++ कार्य करता है और कक्षाओं है। आप उद्देश्य-सी #import निर्देशों के साथ सी ++ #include निर्देशों का भी उपयोग कर सकते हैं। आप बिना किसी समस्या के drawRect के अंदर सी ++ कर सकते हैं।

बुरी खबर यह है कि NSOpenGLViewप्रत्येक x मिलीसेकंड दृश्य को दोबारा नहीं हटाता है। यह आवश्यक होने पर यह केवल दृश्य को फिर से खींचा जाएगा। इसके लिए आपको कोको के NSTimer कक्षा का उपयोग करना होगा।

संपादित करें: अतिरिक्त नोट: drawRect विधि में, glFlush() के साथ-साथ [[self openGLContext] flushBuffer] पर कॉल करना सुनिश्चित करें। किसी कारण से, केवल [[self openGLContext] flushBuffer] पर कॉल करना मेरे लिए दृश्य पर कुछ भी नहीं खींचता है।

2

मैं इस वेबसाइट का उपयोग विंडो, मैक और लिनक्स के लिए मेरे प्रोजेक्ट के संदर्भ के रूप में कर रहा हूं। http://ysflight.in.coocan.jp/programming/fssimplewindow/e.html

लेखक अच्छे उदाहरणों का समूह लिखने में कामयाब रहे जो आपको सभी प्लेटफार्मों में अपनी परियोजना के साथ जाने में मदद करता है।

अंत बिंदु यह है कि, आपको अपनी विंडो निर्माण के लिए उद्देश्य-सी का उपयोग करना होगा और आप C++ का उपयोग कर अपने शेष कोड को प्रोग्राम कर सकते हैं।