2011-08-15 6 views
6

मैं कम से कम कोड के साथ विंडोलेस ओपनजीएल संदर्भ कैसे प्रारंभ कर सकता हूं?न्यूनतम विंडोलेस ओपनजीएल संदर्भ प्रारंभ

मैंने here पढ़ा है कि आप विंडो रहित संदर्भ बनाने के लिए wglCreateContextAttribsARB का उपयोग कर सकते हैं, हालांकि यह स्पष्ट नहीं करता है कि कैसे?

उत्तर

5
लिंक से

:

ऑफ स्क्रीन प्रतिपादन के लिए एक खिड़की के बिना एक संदर्भ, बना रहा है। यह वास्तव में काम नहीं कर सकता है।

वह दूसरी वाक्य महत्वपूर्ण है। WGL_ARB_create_context specification से:

4) वहाँ एक ही समय में यह बाध्यकारी एक खिड़की प्रणाली drawable के बिना एक संदर्भ वर्तमान बनाने के लिए एक तरह से किया जाना चाहिए?

RESOLVED: हाँ, लेकिन केवल ओपनजीएल 3.0 और बाद में। इसका परिणाम संदर्भ में एक अवैध डिफ़ॉल्ट फ्रेमबफर के साथ होता है, जिसका अर्थ ओपनजीएल 3.0 विनिर्देश में परिभाषित है।

नोट: विंडोज पर जाहिर है, opengl32.dll drawable तर्क के उपयोग के चालक के नाम स्थान की पहचान करने के लिए बनाता है, तो हम यह आस-पास काम करने में सक्षम नहीं हो सकता है।

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

लेकिन जैसा ऊपर बताया गया है, यह वास्तव में काम नहीं कर सकता है। आप यह देखने के लिए कोशिश कर सकते हैं कि क्या होता है, लेकिन मुझे मेरी उम्मीद नहीं मिलती।

+0

उत्तर के लिए धन्यवाद। फिर खिड़की रहित संदर्भ बनाने का सबसे सरल तरीका क्या है? – ronag

+0

एक और प्रयास स्क्रीन डीसी का उपयोग होगा (NULL से * GetDC * दिनचर्या तक)। – Luca

+1

@ लुका: आपको रूट/स्क्रीन विंडो के PIXELFORMATDESCRIPTOR को सेट नहीं करना चाहिए! और एक ओपनजीएल संदर्भ को आकर्षित करने योग्य एक पिक्सेलफॉर्मेट होना चाहिए। इसलिए आपका सुझाव बहुत बुरी सलाह है। – datenwolf

2

प्रतिपादन गुप्त लागू करने के लिए हमेशा की तरह है:

  1. कार्यों प्राप्त एक PBuffer
  2. बनाने के लिए विस्तार के लिए पहुँच प्राप्त करने के एक डमी खिड़की + ओपन संदर्भ बनाएँ एक PBuffer डीसी
  3. PBuffer
  4. पर एक ओपनजीएल संदर्भ बनाएं डमी विंडो

एक और विकल्प फ़्रेमबफर ऑब्जेक्ट्स (एफबीओ) का उपयोग कर रहा है जिसके द्वारा आप एक नियमित ओपनजीएल विंडो बनाते हैं, लेकिन मुख्य फ्रेमबफर को प्रस्तुत करने के बजाय आप फ्रेमबफर ऑब्जेक्ट बफर को प्रस्तुत करते हैं, ओपनजीएल विंडो को अदृश्य बना दिया जाता है।

+1

एक शुरुआत के लिए एक कोड स्निपेट होना संभव होगा? – user377178

-1

एक और सामान:

HDC hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL); 

लेकिन ReleaseDC साथ it.DeleteDC करता है काम नहीं।

+0

"काम नहीं करता" से आपका क्या मतलब है? 'रिलीज डीसी' और 'डिलीट डीसी' एक दूसरे के लिए समकक्ष नहीं हैं, वे पूरी तरह से अलग-अलग उद्देश्यों की सेवा करते हैं। – BDL

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