में उन्हें सही तरीके से उपयोग कैसे करें मैं एक गेम इंजन पर काम कर रहा हूं और यह काफी विकसित हुआ है। चूंकि इंजन को मैक पर भी काम करने की ज़रूरत है, मैं अभी भी ओपनजीएल 3.2 और जीएलएसएल 1.2 का उपयोग कर रहा हूं :-( मैं जीएलईडब्लू का उपयोग करता हूं जो मुझे लगता है कि मेरे लिए विस्तार के मुद्दों को हल करेगा।ओपनजीएल एक्सटेंशन, सी और glsl
संपादित करें: इस बीच, प्रश्न का हिस्सा है जवाब - बगल में स्थित संपादित पर पर पढ़ें:
मैं हमेशा shaders विंडोज और मैक दोनों पर काम करने के लिए सक्षम था, कभी कभी मैं #extension GL_EXT_gpu_shader4 तरह GLSL कोड में एक पंक्ति जोड़ना होगा: इसे बनाने के लिए सक्षम मैक पर काम करें। ऐसा लगता है कि मेरा विंडोज संस्करण एक ही शेडर को संकलित करते समय चेतावनी देगा, लेकिन यह काम करेगा।
लेकिन तब से मैंने ज्यामिति शेडर्स का उपयोग शुरू किया, मेरा दुःस्वप्न शुरू हो गया है। किसी कारण से, मैक मुझे #extension GL_EXT_gpu_shader4 का उपयोग करने की अपेक्षा करता है: सक्षम करें जबकि विंडोज़ मुझे #extension GL_EXT_geometry_shader4 का उपयोग करने की अपेक्षा करता है: सक्षम करें। यह एक मंच स्वतंत्र शेडर बनाने के लिए यह कम स्पष्ट बनाता है।
इसके अलावा, और यह और भी अधिक कष्टप्रद है: Windows संस्करण मुझे उपयोग करना चाहता है: glTransformFeedbackVaryings और मुझे लगता है कि होता है कि Glew इसे करने के लिए मैक उपलब्ध बनाने हैं लेकिन वहाँ मैं स्पष्ट रूप से glTransformFeedbackVaryingsEXT उपयोग करने की आवश्यकता जो नहीं होगा विंडोज संस्करण पर काम करते हैं। तो मुझे आवश्यकतानुसार उपयोग करने के लिए APPLE के लिए #ifdef की आवश्यकता है। glBeginTransformFeedback और glBeginTransformFeedbackEXT के साथ समान समस्या।
लेकिन दोनों glProgramParameteriEXT स्वीकार करते हैं, वहाँ मैं distiction की जरूरत नहीं है ...
मैं समझता हूँ कि यह केवल बदलने राय है कि मैं इस समस्या हो रहा है के साथ है, लेकिन ... क्या यह सब है के बारे में?
मैंने सोचा कि मुझे समझ में आया कि ओपनजीएल एक्सटेंशन कैसे काम करते थे, लेकिन मैं उस समझ को खोना शुरू कर रहा हूं।
यह एक बिंदु पर जा रहा है जहां मुझे लगता है कि जब मैं किसी अन्य विंडोज सिस्टम या किसी अन्य मैक सिस्टम या किसी अन्य लिनक्स सिस्टम पर कोड चलाता हूं, तो मुझे नई समस्याएं होती हैं क्योंकि विभिन्न ग्राफिक्स एडेप्टर या कुछ हैं।
क्या कोई इसे समझने में मेरी सहायता कर सकता है? मैंने एक्सटेंशन के बारे में ओपनजीएल मैनुअल पढ़ा है, इसलिए मुझे कुछ स्पष्ट याद आ रही है। मैं कैसे सुनिश्चित कर सकता हूं कि मेरा कोड हमेशा काम करेगा?
संपादित करें: मैक संस्करण से पूरी तरह से Glew को दूर करने और पूरी तरह से मैक के लिए अपने ओपन 3.2 कार्यान्वयन का उपयोग करके, सभी namings सामान्य हैं और मैं पूरी तरह निकाल सकता #extension GL_EXT_gpu_shader4: मेरे shaders से सक्षम करें। एकमात्र चीज जो मुझे अब चिंता करती है वह है कि ज्यामिति शेडर्स के लिए, मुझे फ़ंक्शन glProgramParameteri की आवश्यकता है जो मौजूद नहीं है, लेकिन glProgramParameteriEXT करता है। किसी कारण से, यह फ़ंक्शन विंडोज पर भी काम करता है। क्यूं कर? क्या मैं निश्चित हो सकता हूं कि यह सभी सिस्टम/हार्डवेयर पर काम करेगा?
एप्पल आमतौर पर है थोड़ा पीछे, तो आप केवल आधिकारिक समर्थित संस्करण की जांच कर सकते हैं। [यह] (http://stackoverflow.com/questions/15101939/glsl-vertex-shader-crashes-computer) आपके प्रश्न से ठीक पहले पोस्ट किया गया था। –
एचएम, मुझे नहीं लगता कि पोस्ट मेरी मदद करता है। मैं ओएसएक्स शेर 10.7.5 पर विकास कर रहा हूं और यह एक एएमडी ग्राफिक्स एडाप्टर है। लेकिन अगर मैं आपको सही ढंग से समझता हूं, तो समस्याएं ऐप्पल के खराब कार्यान्वयन से संबंधित हैं? भाप पर उन सभी खेलों को कैसे पोर्ट किया और काम करते हैं? – scippie
मैकोज़क्स पर उपलब्ध मूल ओपनजीएल 3.2 का उपयोग क्यों नहीं कर रहे हैं। –