अद्यतन (सितम्बर 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_TYPE
EGL_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 ड्राइवर पर केंद्रित हैं।
क्यों आप X11 के साथ सौदा करने की आवश्यकता है:
शायद एक अच्छा विचार है, आज के रूप में, वेलैंड कंपोज़िटर-drm.c कार्यान्वयन का पालन करना है? अधिकांश टूलकिट्स और पुस्तकालय (जैसे कि libSDL) आपके लिए सभी निम्न स्तर के goo का ख्याल रखता है। – nos
@ एनओएस: libSDL उसी सीमा को गोद लेता है X11 लगाता है।उदाहरण के लिए: Wacom टैबलेट डिस्प्ले रेज़ोल्यूशन में सीमित हो जाता है, जबकि उस टैबलेट में डिस्प्ले की तुलना में दस गुना बड़ा रिज़ॉल्यूशन होता है! बड़े डीपीआई चूहों में ऐसी ही समस्याएं हैं जिन्हें मैंने सुना है। – Cheery
@nos: इसके अलावा, मैं वास्तव में डेस्कटॉप वातावरण करना चाहता हूं। कार्यक्रम लिखने में रुचि नहीं है। मुझे लगता है कि एक्स 11 एक अतिरिक्त इंटरफ़ेस है जो डेस्कटॉप लक्ष्यों को लिखने में मेरे लक्ष्यों की सहायता नहीं करता है। यह मुझे बहुत कम उपयोगी सुविधाओं के बदले में एक बड़ा और अव्यवस्थित इंटरफेस देता है। – Cheery