OpenGl का उपयोग C # के साथ कर रहे हैं? [बन्द है]


118

क्या C # के लिए मुक्त OpenGL समर्थन लाइब्रेरी है? यदि हां, तो मैं किसका उपयोग करूं और मुझे नमूना परियोजनाएं कहां मिलेंगी?

क्या C # OpenGL के लिए कक्षाएं प्रदान करता है?


मुझे पता है कि यह एक बहुत पुराना धागा है, लेकिन एकता आपके लिए ब्याज की हो सकती है
क्लैब 4545

जवाबों:


129

OpenTK ताओ एपीआई पर एक सुधार है, क्योंकि इसमें मुहावरेदार सी # शैली का उपयोग ओवरलोडिंग, जोरदार-टाइप किए गए एनम, अपवाद और मानक .NET प्रकारों के साथ किया जाता है:

GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);

ताओ के विपरीत जो केवल सी एपीआई को प्रतिबिंबित करता है:

Gl.glBegin(Gl.GL_POINTS);   // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0);     // explicit "f" qualifier

यह कठिन पोर्टिंग के लिए बनाता है लेकिन उपयोग करने के लिए अविश्वसनीय रूप से अच्छा है।

एक बोनस के रूप में यह फ़ॉन्ट रेंडरिंग, बनावट लोडिंग, इनपुट हैंडलिंग, ऑडियो, गणित प्रदान करता है ...

18 जनवरी 2016 को अपडेट करें : आज OpenTK अनुरक्षक ने अपने भविष्य की अनिश्चितता को छोड़ते हुए इस परियोजना से दूर हट गए । फोरम स्पैम से भरे हुए हैं। अनुचर मोनूगैम या SDL2 # में जाने की सलाह देता है।

30 जून 2020 तक अपडेट करें : OpenTK में अभी कुछ समय के लिए नए अनुरक्षक हैं और एक सक्रिय कलह समुदाय है। इसलिए किसी अन्य पुस्तकालय का उपयोग करने की पिछली सिफारिश जरूरी नहीं है।


5
मुझे नहीं लगता कि ये कार्य बहुत ही प्रतिनिधि हैं, क्योंकि वे सभी खोले गए और ओपनग्ल कोर प्रोफाइल से हटाए गए हैं।
अरन

6
सच है, उन फ़ंक्शन को कोर प्रोफ़ाइल से हटा दिया जाता है। लेकिन तर्क अभी भी मान्य हैं। "ओएफटीके ताओ एपीआई पर एक सुधार है, क्योंकि यह मुहावरेदार सी # शैली का उपयोग ओवरलोडिंग, जोरदार-टाइप किए गए एनम, अपवादों और मानक .NET प्रकारों के साथ करता है"
सय्युलत निज़ाम याहया

1
लिंक की गई वेबसाइट अब इस पोस्ट के लिए अमान्य है।
सन्नी चिल्ड्स

16

मुझे लगता है कि @korona का क्या मतलब था क्योंकि यह सिर्फ एक C API था, आप इसे C # से सीधे उपभोग कर सकते हैं, इस प्रकार की बहुत सारी टाइपिंग के साथ।

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);

दुर्भाग्यवश आपको अपने द्वारा कॉल किए जाने वाले प्रत्येक सिंगल ओपन कार्यक्रम के लिए ऐसा करने की आवश्यकता होगी, और मूल रूप से ताओ ने आपके लिए क्या किया है।


आप लिनक्स पर (मोनो के साथ) कैसे जाएंगे?
deceleratedcaviar

मूल रूप से बिल्कुल वैसा ही, मोनो-project.com/Interop_with_Native_Lbooks
जेफ मैक

15

ताओ एक अच्छा ढांचा माना जाता है।

उनकी साइट से:

.NET के लिए ताओ फ्रेमवर्क .NET और मोनो प्लेटफार्मों का उपयोग कर क्रॉस-प्लेटफ़ॉर्म मीडिया अनुप्रयोग विकास की सुविधा के लिए बाइंडिंग का एक संग्रह है।


1
ताओ के लिए नई वेबसाइट है: ताओ फ्रेमवर्क
थाइमिन

9

SharpGL एक ऐसी परियोजना है, जो आपको अपने Windows प्रपत्र या WPF अनुप्रयोगों में OpenGL का उपयोग करने देती है।


7

आप बिना रैपर के OpenGL का उपयोग कर सकते हैं और इसे C # में मूल रूप से उपयोग कर सकते हैं। जैसा कि जेफ मैक ने कहा, आपको DllImport के साथ सभी कार्यों को आयात करना होगा।

आपके द्वारा छोड़े गए किसी भी कार्य को खोलने से पहले उसका संदर्भ बनाना होगा। यह मुश्किल नहीं है, लेकिन कुछ अन्य नहीं-तो-सहज ज्ञान युक्त DllImports है कि किया जाना चाहिए।

मैंने VS2012 में एक उदाहरण C # प्रोजेक्ट बनाया है जिसमें विंडोज बॉक्स पर ओपनजीएल को चलाने के लिए लगभग न्यूनतम न्यूनतम आवश्यक है। यह केवल खिड़की के नीले रंग को पेंट करता है, लेकिन यह आपको शुरू करने के लिए पर्याप्त होना चाहिए। इसका उदाहरण http://www.glinos-labs.org/?q=programming-opengl-csharp पर मिल सकता है । के लिए देखो कोई आवरण तल पर उदाहरण।


5
आपका लिंक मर चुका है, कृपया आप अपनी परियोजना को साझा कर सकते हैं। धन्यवाद।
खतरनाक

7

मैं ताओ फ्रेमवर्क की भी सिफारिश करूंगा । लेकिन एक अतिरिक्त नोट:

इन ट्यूटोरियल पर एक नज़र डालें: http://www.taumuon.co.uk/jabuka/


मुझे इस बात का कोई अंदाजा नहीं है कि ताओ को क्या हुआ क्योंकि पेज काफी समय पहले नीचे चला गया था।
डोमिनिक के

ताओ के लिए नई वेबसाइट है: ताओ फ्रेमवर्क
थाइमिन

1
ताओ एक चलता हुआ लक्ष्य लगता है। मैंने लिंक को अपडेट किया है, क्योंकि यह भी मोनो से अब सोर्सफोर्ज में चला गया है।
ओलिवर

वाह, नवंबर 2005 ... क्या OpenGL ज्यादा नहीं बदलता है?
जॉचुल

1
@JonHarrop हाँ दिखता है वे अब एक रीडायरेक्ट वहाँ एक GitHub पृष्ठ का उपयोग कर सेट नहीं किया है की तरह opentk.github.io
Dreamwalker

4

आप इन समर्थन पुस्तकालयों को क्या करना चाहेंगे? बस C # से OpenGL का उपयोग करना काफी सरल है और इसके लिए किसी अतिरिक्त लाइब्रेरी की आवश्यकता नहीं है।


इन वर्गों को किस नामस्थान में पाया जा सकता है?
मेगाबाइट

4
OpenGL .NET का हिस्सा नहीं है, जैसा कि संस्करण 4.0
mafu

3
@MegaByte उन्हें प्लेटफॉर्म इनवोक के माध्यम से एक्सेस किया जाना चाहिए।
सीमित प्रायश्चित

2

के विषय में (कुछ ऐसा विषय जिसे मैं जानता हूं, लेकिन चूंकि यह पहले लाया गया था) XNA बनाम ओपनजीएल पसंद, XNA के बजाय ओपनजीएल (और ओपनजीएल के बजाय अन्य XNA में) के साथ जाने के लिए कई मामलों में फायदेमंद हो सकता है।

यदि आप मोनो का उपयोग करके लिनक्स या मैक पर एप्लिकेशन चलाने जा रहे हैं, तो ओपनगेल के साथ जाना एक अच्छा विकल्प हो सकता है। इसके अलावा, जो मुझे लगता है कि व्यापक रूप से ज्ञात नहीं है, अगर आपके पास ग्राहक हैं जो आपके एप्लिकेशन को Citrix वातावरण में चलाने जा रहे हैं, तो DirectX / Direct3D / XNA आर्थिक रूप से OpenGL के रूप में पसंद नहीं होगा। इसका कारण यह है कि OpenGL अनुप्रयोगों को सर्वर की कम संख्या पर सह-होस्ट किया जा सकता है (प्रदर्शन समस्याओं के कारण एकल सर्वर अनुप्रयोग इंस्टेंस की अनंत संख्या की मेजबानी नहीं कर सकता है) DirectX / XNA अनुप्रयोगों की तुलना में जो हार्डवेयर में चलाने के लिए समर्पित वर्चुअल सर्वर की मांग करता है त्वरित मोड। अन्य आवश्यकताएं समर्थित ग्राफिक्स कार्ड आदि की तरह मौजूद हैं, लेकिन मैं XNA बनाम ओपनजीएल मुद्दे पर रखूंगा। एक आईटी वास्तुकार, सॉफ्टवेयर डेवलपर आदि के रूप में इस पर OpenGL और DirectX / XNA के बीच चयन करने से पहले विचार करना होगा ...

एक ओर ध्यान दें कि WebGL OpenGL ES3 afaik पर आधारित है ...

एक और नोट के रूप में, ये केवल विचार नहीं हैं, लेकिन वे कुछ के लिए चुनाव को आसान बना सकते हैं ...


1

XNA 2.0 को न्यूनतम shader 1.1 कार्ड की आवश्यकता होती है। जबकि पुरानी तकनीक, हर किसी के पास नहीं है। कुछ नए लैपटॉप (इंटेल ग्राफिक्स के साथ हमारे अनुभव तोशिबा टैबलेट में) का कोई शेडर 1.1 सपोर्ट नहीं है। XNA बस इन मशीनों पर नहीं चलेगा।

यह हमारे लिए एक महत्वपूर्ण मुद्दा है और हम ताओ और ओपनजीएल में स्थानांतरित हो गए हैं। इसके अलावा ताओ के साथ हमारे पास ऑडियो और लुआ समर्थन के लिए बाइंडिंग है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.