2012-01-26 13 views
6

तैनात नहीं कर सकता है तो यह एक डोजी है;
मुझे विंडोज 7 में जीएलएसएल 1.5 के साथ संस्करण 3.2 कोर में लिखा गया एक बहुत बड़ा ओपनजीएल समाधान मिला है। मैं जीएलईडब्ल्यू और जीएलएम का उपयोग सहायक पुस्तकालयों के रूप में कर रहा हूं। जब मैं एक खिड़की बनाने के लिए, मैं निम्नलिखित लाइनों का उपयोग कर रहा:जीएलएफडब्ल्यू 3.2

// Initialize main window 
glewExperimental = GL_TRUE; 
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // Use OpenGL Core v3.2 
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); 
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
if(!glfwOpenWindow(Game::WINDOW_X, Game::WINDOW_Y, 0, 0, 0, 0, 32, 0, GLFW_WINDOW)) 
{ ... 

अगर मैं तीन glfwOpenWindowHint कार्यों को छोड़ देते हैं, आवेदन glDrawArrays (GL_TRIANGLES, 0, m_numIndices) करने के लिए कॉल पर अपने वीडियो ड्राइवरों दुर्घटनाओं;

लेकिन यहां किकर है। जब मेरे समूह में कोई और समाधान को अद्यतन करने और चलाने का प्रयास करता है, तो उन्हें कोई ज्यामिति वाली खाली विंडो मिलती है। तीन लाइनों पर टिप्पणी करने से कार्यक्रम उनके लिए ठीक हो जाता है। 3.2कोर संकेत और बिना काम करने के बीच एक सुंदर भी विभाजित है। मैं एनवीडिया, एएमडी, डेस्कटॉप, या लैपटॉप के बीच कोई अंतर निर्धारित करने में सक्षम नहीं हूं।

सबसे अच्छा मुझे मिल सकता है glewExperimental = GL_TRUE जोड़ने का सुझाव था; क्योंकि ग्लेव को कोर के साथ समस्याएं कहा जाता है। इससे कोई फर्क नहीं पड़ता। समाधान कोड पोस्ट करने के लिए बहुत बड़ा है, लेकिन मैं आवश्यकतानुसार शेडर्स, कोडिंग कोड आदि डाल सकता हूं। इतना

धन्यवाद! यह अब कई दिनों से हमें मार रहा है।

+0

इसलिए, यह अंत में बाहर काम किया था पर काम करता है? – mlvljr

+1

नहीं। जीएलएफडब्ल्यू अब तक का सबसे आसान खिड़की समाधान है, लेकिन यह बिल्कुल विश्वसनीय नहीं है। अपने कंप्यूटर पर क्रॉसफायर को अक्षम करके मैं इसे अधिकतर समय तक चलाने के लिए प्राप्त कर सकता हूं। अभी भी हमारी प्रयोगशाला में एनवीडिया मशीनों पर नहीं चलेगा। मैंने आईआरसी पर जीएलएफडब्ल्यू लोगों से संपर्क किया, और उनके पास केवल एक विंडोज डेवलपर है। उसका जवाब था "मैं नहीं जानता।" मैंने एसडीएल में जाने का प्रयास किया, लेकिन यह हमारी मशीनों में से एक पर 3.X संदर्भ नहीं बनाएगा। अभी भी अविश्वसनीय रूप से जीएलएफडब्ल्यू का उपयोग कर। – AGuyInAPlace

+0

क्या आप एक उदाहरण से लिंक कर सकते हैं जो अविश्वसनीय रूप से व्यवहार करता है? यह सिर्फ है कि मैं 3650 कल (nightcracker के जवाब में संकेत के बाद) एक एएमडी Llano पर GLFW + GL3W की स्थापना की है, और जब तक अल्पविकसित उदाहरण 100% ठीक है, संभव ठोकरें खाते हुए चल अंक के बारे में पता करना चाहते हैं। – mlvljr

उत्तर

10

एक आगे-संगत GLFW खिड़की पूछकर देखें:

GLFW_OPENGL_FORWARD_COMPAT - निर्दिष्ट करें कि ओपन आगे की संगत होना contextshould (अर्थात विरासत कार्यक्षमता नामंज़ूर)। ओपनजीएल संस्करण 3.0 या उससे ऊपर का अनुरोध करते समय यह केवल तभी उपयोग किया जाना चाहिए।

और चुनें प्रोफ़ाइल संकेत सेट करने का प्रयास नहीं और जाने सिस्टम:

// Use OpenGL Core v3.2 
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); 
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); 
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 

इसके अलावा, यह सुनिश्चित करें कि आप वास्तव में एक संस्करण आप चाहते हैं:

int major, minor, rev; 

glfwGetGLVersion(&major, &minor, &rev); 

fprintf(stderr, "OpenGL version recieved: %d.%d.%d", major, minor, rev); 

यह सुनिश्चित नहीं है कि आप मैक के लिए भी दौड़ते हैं, लेकिन इसे वैसे भी पढ़ें:

A.4 ओपन 3.0+ पर ओपन 3.0 के लिए और इसके बाद के संस्करण Mac OS X 10.7, के साथ पेश किया गया था और मैक ओएस एक्स

समर्थन भी तो आगे-संगत ओपन 3.2 कोर प्रोफ़ाइल संदर्भों का समर्थन कर रहे हैं और वहाँ डीबग संदर्भों का अनुरोध करने के लिए कोई तंत्र नहीं है। मैक ओएस एक्स के पहले संस्करण अधिकांश ओपनजीएल संस्करण 2.1 पर समर्थन करते हैं।

इस वजह से

, मैक ओएस एक्स 10.7 पर, GLFW_OPENGL_VERSION_MAJOR और GLFW_OPENGL_VERSION_MINOR संकेत करता है, तो 3.2 ऊपर एक संस्करण दिया असफल हो जायेगी, GLFW_OPENGL_DEBUG_CONTEXT और GLFW_FORWARD_COMPAT संकेत नजरअंदाज कर दिया जाता है, और शून्य या GLFW_OPENGL_CORE_PROFILE के अलावा कुछ करने के लिए GLFW_OPENGL_PROFILE संकेत की स्थापना glfwOpenWindow असफल होने का कारण बन जाएगा।

इसके अलावा, मैक ओएस एक्स 10.6 और नीचे पर, GLFW_OPENGL_VERSION_MAJOR और GLFW_OPENGL_VERSION_MINOR संकेत करता है, तो 2 के ऊपर एक संस्करण दिया असफल हो जायेगी।1, GLFW_OPENGL_DEBUG_CONTEXT संकेत कोई प्रभाव नहीं पड़ेगा, और GLFW_OPENGL_PROFILE या GLFW_FORWARD_COMPAT की स्थापना एक गैर शून्य मान के लिए संकेत glfwOpenWindow विफल हो जाएगा।

+0

सहायक फ़ीड वापस! धन्यवाद! हम इसके अलावा मैक के लिए निर्माण कर रहे हैं, लेकिन उस सटीक कारण के लिए ओएसएक्स 10.7 के लिए शूटिंग। मैंने आपके संकेतों की कोशिश की और निम्नलिखित प्राप्त किया: मेरे सिस्टम पर, संस्करण 3.2.11318 परिणाम और ठीक काम करता है। अन्य कंप्यूटरों पर, संस्करण 3.2.0 परिणाम और कोई ज्यामिति खींची नहीं गई है। लाइनों को छोड़कर मुझे 4.2.11318 पर रखा जाता है, जिससे सामान्य ग्राफिक्स क्रैश होता है। उन्हें पूर्ण ज्यामिति के साथ 4.2.0 पर चलाता है, सब ठीक काम कर रहा है। अभी तक Google को नहीं मारा है, लेकिन संशोधन 11318 का महत्व क्या है? क्या यह अजीब व्यवहार के लिए ज़िम्मेदार है? – AGuyInAPlace

+0

@AGuyInaplace: मैं कोई ओपनजीएल विशेषज्ञ नहीं हूं इसलिए मुझे नहीं पता। कुछ सामान्य युक्ति यह सुनिश्चित करना है कि प्रत्येक क्लाइंट के ओपनजीएल ड्राइवर अद्यतित हैं। मुझे नहीं पता कि ओपनजीएल या जीएलएफडब्लू को यहां कौन दोषी ठहराया जाए, लेकिन आप जीएलएफडब्ल्यू देव के # एफआरडीडब्ल्यू पर फ्रीनोड पर कोशिश कर सकते हैं। – orlp

+0

हम सभी नवीनतम संस्करण चला रहे हैं, लेकिन यह एक उत्कृष्ट अगले चरण की तरह लगता है। सूचक के लिए धन्यवाद! – AGuyInAPlace

0

मैं एक ही मुद्दे में भाग गया। मैं अपने VBO के पहले एक VAO बनाने के लिए किया था और अब यह ओएस एक्स

GLuint vertex_array; 
glGenVertexArrays(1, &vertex_array); 
glBindVertexArray(vertex_array);