2013-02-26 166 views
8

मै मैक पर काम कर रहा हूं, मुझे फ्रीग्लट संकलित और स्थापित किया गया है, लेकिन मुझे इसके साथ ओपनजीएल 3.2 संदर्भ नहीं मिल रहा है। हालांकि, मैं जीएलएफडब्ल्यू का उपयोग करते समय इसे बिना किसी समस्या के प्राप्त कर सकता हूं। तो GLFW में, इस कोड को पूरी तरह से ठीक काम करता है:जीएलएफडब्ल्यू ओपनजीएल 3.2 संदर्भ खोलता है लेकिन फ्रीग्लूट नहीं कर सकता - क्यों?

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); 
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); 
    glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
    glfwOpenWindow(500, 500, 8, 8, 8, 8, 24, 8, GLFW_WINDOW) 

लेकिन FreeGlut साथ, इस कोड में विफल रहता है (glutCreateWindow पर):

glutInitContextVersion (3, 2); 
glutInitContextProfile(GLUT_CORE_PROFILE); 
glutInitWindowSize (width, height); 
glutInitWindowPosition (300, 200); 
int window = glutCreateWindow (argv[0]); 

त्रुटि इसके साथ विफल रहता है:

X Error of failed request: BadRequest (invalid request code or no such operation) 
    Major opcode of failed request: 34 (X_UngrabKey) 
    Serial number of failed request: 29 
    Current serial number in output stream: 29 

मैं मैकोज़ एक्स 10.8 माउंटेन शेर पर इंटेल एचडी 4000 ग्राफिक्स के साथ चल रहा हूं, जिसने X11art को अपने एक्स 11 सर्वर के रूप में स्थापित किया है, और संकलित और स्रोतों से फ्रीग्लूट 2.8 स्थापित किया है।

क्या किसी को पता है कि समस्या क्या हो सकती है?

+0

सटीक समस्या होने पर मैं XQuartz (opt/x11/lib opt/x11/include) में शामिल फ्रीग्लुट का उपयोग कर रहा हूं। क्या आपने इस मुद्दे को हल किया? – Christoph

+0

यहां एक ही समस्या - क्या आप समस्या को हल करने में सक्षम थे? –

+0

क्या आप में से कोई भी समस्या हल कर चुका है? मुझे एक ही समस्या है।मैं XQuartz – ammar26

उत्तर

1

10.8 और 10.7 जीएल 3.2 में उपलब्ध है यदि आप जीएल संदर्भ स्थापित करते समय स्पष्ट रूप से इसके लिए कॉल करते हैं। ऐप्पल ने इसे "लीगेसी प्रोफाइल" से अलग करने के लिए "कोर प्रोफाइल" कहा है जो जीएल 2.1 है।

मैं ओएसएक्स पर शराब के साथ इस मुद्दे में भाग गया, यह ओपनजीएल 3.2 का समर्थन नहीं करता है। मेरी समझ यह है कि एक्स 11 सर्वर (या तो ऐप्पल एक्स 11 या एक्सक्वर्टज़) वर्तमान में 3.2 समर्थन को लागू नहीं करता है, न ही इसे सक्षम करने के लिए कहीं भी फ्लिप करने के लिए एक स्विच है। यह अनुकूलता चिंताओं के लिए हो सकता है के बाद से 3.2 प्रोफाइल कुछ existing GL applications

This post suggests (या शायद एप्पल के GLUT.framework क्या अब भी कोई ऐसी बात है) टूट जाएगा GLFW का उपयोग कर

This page पर OSX जीएल ढेर बताते हैं और 2.1 की पुष्टि करता है जीएलएक्स के साथ मुद्दा।

+0

प्राप्त करने के लिए कोई भाग्य नहीं है, मुझे खेद है, लेकिन यह नहीं देखते कि यह मेरे प्रश्न से कैसे संबंधित है। जैसा कि मैंने दिखाया है - यह जीएलएफडब्ल्यू के साथ काम करता है, जो मेरे सिस्टम पर एक्सक्वर्टज़ के शीर्ष पर चलता है, इसलिए यह निश्चित रूप से 3.2 संदर्भों का समर्थन करता है। – gambiting

+0

मुझे खेद है, लेकिन यह नहीं देखते कि यह मेरे प्रश्न से कैसे संबंधित है। जैसा कि मैंने कहा है - ओपनजीएल 3.2 जीएलएफडब्ल्यू के साथ काम करता है, जो मेरे सिस्टम पर एक्सक्वर्टज़ के शीर्ष पर चलता है, इसलिए यह निश्चित रूप से 3.2 संदर्भों का समर्थन करता है। मेरा एकमात्र मुद्दा यह है कि मैं फ्रीग्लूट का उपयोग करना चाहता हूं, क्योंकि यह अधिक सुविधाजनक है। लेकिन अगर यह संभव नहीं है, तो मैं जीएलएफडब्ल्यू का उपयोग कर विकसित करूंगा। लेकिन कृपया मुझे मत बताएं 3.2 संदर्भ प्राप्त करना असंभव है, क्योंकि मुझे पहले से ही एक मिल गया है। – gambiting

+1

glfw में भी [कोको और कार्बन पोर्ट] है (http://sourceforge.net/p/glfw/svn/1617/tree/trunk/lib/), क्या आप निश्चित हैं कि यह XQuartz के शीर्ष पर चल रहा है? – wally

0

फ्रीग्लग एसजीआई ग्लूट टूलकिट का एक विस्तारित कार्यान्वयन है, और (अप्रचलित हार्डवेयर के आसपास कुछ अपवादों के साथ) एक ही कार्य लागू करता है।

दुर्भाग्य से, इसमें कई सुविधाएं शामिल हैं जो कड़ाई से कोर/फॉरवर्ड संगत कार्यान्वयन में टूट जाएंगी।

आमतौर पर, यदि आप किसी संस्करण या प्रोफ़ाइल को निर्दिष्ट किए बिना किसी संदर्भ का अनुरोध करते हैं, तो आपको सबसे अच्छा मिलेगा कि ड्राइवर और जीएल टूलकिट का संयोजन ऑफ़र कर सकता है, जो मुख्य रूप से कोर प्रोफाइल की बजाय संगतता प्रोफ़ाइल है।

ध्यान दें कि एक संगतता प्रोफ़ाइल का उपयोग करके आप खोने वाली एकमात्र चीज बहिष्कृत कार्यों के लिए जांच की जाती है। सभी नए कोर फ़ंक्शन को बिना किसी समस्या के काम करना चाहिए।

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

0

आपको ध्वज शामिल करने की आवश्यकता है। आमतौर पर संस्करण के तहत। इसे इस तरह कुछ दिखना चाहिए:

glutInitContextFlag(GLUT_FOWARD_COMPATIBLE);