2010-07-24 21 views
24

मैं एक्स के बिना लिनक्स में ओपनजीएल संदर्भ खोलना चाहता हूं। क्या ऐसा करने का कोई तरीका है?linux में X.org के बिना ओपनजीएल

मुझे पता है कि एकीकृत इंटेल ग्राफिक्स कार्ड हार्डवेयर के लिए यह संभव है, हालांकि ज्यादातर लोगों के पास उनके सिस्टम में एनवीडिया कार्ड हैं। मैं एक समाधान प्राप्त करना चाहता हूं जो एनवीडिया कार्ड के साथ काम करता है।

यदि एकीकृत इंटेल हार्डवेयर के माध्यम से कोई अन्य तरीका नहीं है, तो मुझे लगता है कि यह जानना ठीक होगा कि यह उन लोगों के साथ कैसे किया जाता है।

एक्स 11 प्रोटोकॉल और प्रोटोकॉल स्वयं बहुत बड़ा और जटिल है। माउस/कीबोर्ड/टैबलेट इनपुट मल्टीप्लेक्सिंग प्रदान करता है जो आधुनिक कार्यक्रमों के लिए बहुत कम है। मुझे लगता है कि यह सबसे खराब रोडब्लॉक है जो लिनक्स डेस्कटॉप को सुधारने से रोकता है, यही कारण है कि मैं विकल्पों की तलाश करता हूं।

+0

क्यों आप X11 के साथ सौदा करने की आवश्यकता है:

शायद एक अच्छा विचार है, आज के रूप में, वेलैंड कंपोज़िटर-drm.c कार्यान्वयन का पालन करना है? अधिकांश टूलकिट्स और पुस्तकालय (जैसे कि libSDL) आपके लिए सभी निम्न स्तर के goo का ख्याल रखता है। – nos

+1

@ एनओएस: libSDL उसी सीमा को गोद लेता है X11 लगाता है।उदाहरण के लिए: Wacom टैबलेट डिस्प्ले रेज़ोल्यूशन में सीमित हो जाता है, जबकि उस टैबलेट में डिस्प्ले की तुलना में दस गुना बड़ा रिज़ॉल्यूशन होता है! बड़े डीपीआई चूहों में ऐसी ही समस्याएं हैं जिन्हें मैंने सुना है। – Cheery

+0

@nos: इसके अलावा, मैं वास्तव में डेस्कटॉप वातावरण करना चाहता हूं। कार्यक्रम लिखने में रुचि नहीं है। मुझे लगता है कि एक्स 11 एक अतिरिक्त इंटरफ़ेस है जो डेस्कटॉप लक्ष्यों को लिखने में मेरे लक्ष्यों की सहायता नहीं करता है। यह मुझे बहुत कम उपयोगी सुविधाओं के बदले में एक बड़ा और अव्यवस्थित इंटरफेस देता है। – Cheery

उत्तर

26

अद्यतन (सितम्बर 17, 2017):

NVIDIA हाल ही में एक लेख detailing how to use OpenGL on headless systems, जो एक बहुत ही इसी तरह के प्रयोग मामला है सवाल का वर्णन करता है प्रकाशित किया।

सारांश में:

  • लिंक libOpenGL.so करने और libEGL.so बजाय libGL.so। (आपका लिंकर विकल्पों इसलिए EGL प्रारंभ करने में -lOpenGL -lEGL
  • कॉल eglGetDisplay होना चाहिए, तो eglInitialize
  • config विशेषता EGL_SURFACE_TYPEEGL_PBUFFER_BIT साथ पीछा के साथ कॉल eglChooseConfig
  • कॉल eglCreatePbufferSurface, तो eglBindApi(EGL_OPENGL_API);, तो eglCreateContext और eglMakeCurrent

उस बिंदु से, सामान्य रूप से अपना ओपनजीएल प्रतिपादन करें, और जहां भी आप चाहें अपनी पिक्सेल बफर सतह को विस्फोट कर सकते हैं। This supplementary article from NVIDIA में एक मूल उदाहरण और एकाधिक जीपीयू के लिए एक उदाहरण शामिल है। आवेदन आवश्यकताओं के मुताबिक पीबीफर सतह को खिड़की की सतह या पिक्समैप सतह से भी बदला जा सकता है।

मुझे अपने पिछले संपादन पर इस पर और अधिक शोध करने पर खेद नहीं है, लेकिन ओह ठीक है। बेहतर उत्तर बेहतर जवाब हैं।


2010 में मेरा जवाब, लिनक्स ग्राफिक्स स्पेस में कई प्रमुख शेकअप रहे हैं। तो, एक अद्यतन उत्तर:

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

आप ईजीएल को लक्षित करने के लिए अपना आवेदन लिख सकते हैं, और इसे खिड़की प्रबंधक या यहां तक ​​कि एक कंपोजिटर की उपस्थिति के बिना भी चलाया जा सकता है।ऐसा करने के लिए, आप सामान्य ग्लैक्स कॉल के बजाय eglGetDisplay, eglInitialize, और अंत में eglCreateContext और eglMakeCurrent पर कॉल करेंगे।

मुझे डिस्प्ले सर्वर के बिना काम करने के लिए विशिष्ट कोड पथ नहीं पता है, लेकिन ईजीएल एक्स 11 डिस्प्ले और वेलैंड डिस्प्ले दोनों स्वीकार करता है, और मुझे पता है कि ईजीएल के बिना किसी के संचालन के लिए संभव है। आप जीएल ईएस 1.1, ईएस 2.0, ईएस 3.0 (यदि आपके पास मेसा 9.1 या बाद में है), और ओपनजीएल 3.1 (मेसा 9.0 या बाद में) संदर्भ बना सकते हैं। मेसा (सितंबर 2013 तक) ने अभी तक ओपनजीएल 3.2 कोर लागू नहीं किया है।

विशेष रूप से, रास्पबेरी पीआई और एंड्रॉइड पर, ईजीएल और जीएल ईएस 2.0 (एंड्रॉइड < 3.0 पर 1.1) डिफ़ॉल्ट रूप से समर्थित हैं। रास्पबेरी पीआई पर, मुझे नहीं लगता कि वेलैंड अभी भी काम करता है (सितंबर 2013 तक), लेकिन आपको शामिल बाइनरी ड्राइवरों का उपयोग करके डिस्प्ले सर्वर के बिना ईजीएल मिलता है। यदि आपका रुचिकर है तो आपका ईजीएल कोड आईओएस को पोर्टेबल (न्यूनतम संशोधन के साथ) भी होना चाहिए।

मैं लिनक्स में बिना एक्स एक ओपन संदर्भ खोलने के लिए करना चाहते हैं:


नीचे पुरानी, ​​पहले से स्वीकार किए जाते हैं पोस्ट है। क्या ऐसा करने का कोई तरीका है?

मेरा मानना ​​है कि मेसा एक फ्रेमबफर लक्ष्य प्रदान करता है। यदि यह किसी भी हार्डवेयर त्वरण प्रदान करता है, तो यह केवल हार्डवेयर के साथ होगा जिसके लिए खुले स्रोत ड्राइवर हैं जिन्हें इस तरह के उपयोग का समर्थन करने के लिए अनुकूलित किया गया है।

गैलियम 3 डी भी अपरिपक्व है, और इसके लिए समर्थन रोडमैप पर भी है, जहां तक ​​मुझे पता है।

मैं एक समाधान प्राप्त करना चाहता हूं जो एनवीडिया कार्ड के साथ काम करता है।

कोई नहीं है। अवधि।

एनवीआईडीआईए केवल एक एक्स चालक प्रदान करता है, और नोव्यू प्रोजेक्ट अभी भी अपरिपक्व है, और आप जिस प्रकार के उपयोग की तलाश में हैं उसका समर्थन नहीं करते हैं, क्योंकि वे वर्तमान में केवल एक्स 11 ड्राइवर पर केंद्रित हैं।

+0

मुझे नहीं लगता कि यह एक अच्छा जवाब है, क्योंकि यह अब सत्य नहीं है और समाधान प्रदान नहीं करता है। वेस्टन/वेंडलैंड नोव्यू के साथ काम करता है, इसलिए एक्सवी के बिना एनवीआईडीआईए कार्ड के साथ ओपनग्ल काम करता है। और प्रयास करने वाली परियोजनाओं की अपरिपक्वता के बारे में टिप्पणियां जल्दी ही उम्र बढ़ने लगती हैं। – elmarco

+0

@ एल्मारको जब मैं आज के समय में हूं तो मैं अपना जवाब संशोधित करूंगा। आप सही हे; मेरा जवाब काफी पुराना है। लेकिन निष्पक्ष होने के लिए, मैंने 2010 के मध्य में इसे पोस्ट किया, जब वेलैंड अभी भी एक प्रोटोटाइप था। – greyfade

3

कहा जाता है में रुचि हो सकती।

1

आप देख सकते हैं कि एंड्रॉइड ने इस समस्या को कैसे हल किया है। एंड्रॉइड-x86 प्रोजेक्ट देखें।

एंड्रॉइड ईजीएल और ओपनल्स के साथ मेसा का उपयोग करता है। मोड सेटिंग और ग्राफिक आवंटन के लिए एंड्रॉइड का अपना सरल ग्रैलोक घटक है। इसके शीर्ष पर उनके पास SurfaceFlinger घटक है जो एक रचना इंजन है, जो त्वरण के लिए OpenGLES का उपयोग करता है।

नहीं देख सकता कि आप इन घटकों का समान तरीके से उपयोग क्यों नहीं कर सकते हैं और एंड्रॉइड गोंद कोड का पुन: उपयोग भी कर सकते हैं।

3

क्या आपने इस पृष्ठ को देखा है? http://virtuousgeek.org/blog/index.php/jbarnes/2011/10/31/writing_stanalone_programs_with_egl_and_

यह शायद थोड़ा पुराना है। मैंने अभी तक कोशिश नहीं की है, लेकिन मैं इस प्रकार के अधिक दस्तावेज़ीकरण की सराहना करता हूं। http://cgit.freedesktop.org/wayland/weston/tree/src/compositor-drm.c