2011-12-24 14 views
11

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

क्या मेरा मतलब है कि मैं नहीं है इस तरह के GNOME, कोको, आदि मैं आमतौर पर कोड के लिए अजगर का उपयोग के रूप में किसी भी पहले से बनाए गए चित्रमय पुस्तकालय का उपयोग करने के साथ सी मॉड्यूल को एकीकृत करना चाहते हैं और मेरा कार्यक्रम अजगर का उपयोग करता है, लेकिन मैं यह भी कोड कर सकते हैं और है ।

मुझे पता है कि स्क्रीन हार्डवेयर तक पहुँचने सीधे अजगर की बहु ओर दूर ले जाता हूँ, लेकिन मैं सीखने की खातिर यह ध्यान न दें। तो: क्या पाइथन में सीधे हार्डवेयर तक पहुंचने का कोई तरीका है, और यदि हां, तो यह क्या है?

+7

कोई भी, यहां तक ​​कि नहीं राज्य के अत्याधुनिक वीडियो गेम (ज्यादातर समय, वैसे भी) चीजें हैं जो निम्न स्तर है। वह चालक काम है। लगभग सभी अनुप्रयोगों के लिए, यह पूरी तरह से अव्यवहारिक है: बेहद जटिल, पर्याप्त रूप से अलग हार्डवेयर में बंदरगाह के लिए असंभव है, और जब भी हार्डवेयर विक्रेता कुछ सुधारता है (जैसे पाइपलाइन बढ़ाता है) तोड़ने के लिए प्रवण होता है, और यह मेरे सिर के शीर्ष से बाहर है। उस से सीखने के लिए कुछ भी नहीं है, जब तक कि आप ड्राइवर लिखना नहीं चाहते हैं। हमारे पास एक कारण के लिए डायरेक्टएक्स, ओपनजीएल, आदि है। और आप उन (या कम से कम ओपनजीएल) को पाइथन से ठीक कर सकते हैं। – delnan

+6

@ डेलनान हाँ, लेकिन ओप को वास्तव में यह उचित ठहराना नहीं है कि वह क्यों सीखना चाहता है, अगर प्रश्न मान्य है। क्या होगा यदि वह ड्राइवर लिखना चाहता है? 'बेहद जटिल, पर्याप्त रूप से अलग हार्डवेयर में बंदरगाह के लिए असंभव मुश्किल है, और जब भी हार्डवेयर विक्रेता कुछ सुधारता है तो तोड़ने का प्रवण होता है' यह सब पिक्सल को चालू और बंद करने से कैसे संबंधित है? यही सवाल है, बाकी सब कुछ आपकी व्यापक सट्टा राय है। केवल एक पिक्सेल दिखाने के लिए एक शानदार सीखने का अनुभव है। – yannis

+3

आप सही हो सकते हैं। लेकिन मेरी धारणा यह है कि ओपी निम्न स्तर के ग्राफिक प्रोग्रामिंग का ग़लत प्रभाव डाल रहा है। – delnan

उत्तर

2

यह एक बढ़िया स्वयं सीखने पथ लगता है और मैं लायक मेरी दो सेंट जोड़ सकते हैं और आप GObject, काहिरा और pygame मॉड्यूल कुछ समय में देख पर विचार सुझाव है।

अजगर GObject मॉड्यूल अपने मौजूदा ब्याज की तुलना में एक उच्च स्तर पर हो सकता है, लेकिन यह काहिरा साथ पिक्सेल स्तर ड्राइंग के लिए सक्षम बनाता है (देखें home page) और साथ ही अजगर

का उपयोग कर पोर्टेबल जीयूआई क्षुधा के लिए एक सामान्य आधार प्रदान

pygame भी ग्राफिक्स ड्राइवरों के लिए पिक्सेल स्तर तरीकों के साथ ही पहुँच विधियों (उच्च स्तर पर) है - यहाँ एक त्वरित code example

7

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

मैं नहीं बल्कि लिनक्स या NT से डॉस कहना क्योंकि उन की न तो आप एक चालक लेखन के बिना वीडियो हार्डवेयर के लिए सीधी पहुँच दे देंगे। इसका मतलब है कि पूरे ड्राइवर एपीआई को सीखना है, और आपको बहुत सारे "जादू" का आह्वान करना होगा, जो बहुत स्पष्ट नहीं होगा क्योंकि विंडोज एनटी में एक वीडियो ड्राइवर लिखना काफी जटिल है।

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

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

1

यह बजाय अब एक पुराने धागा है, लेकिन मैं इस पर ठोकर खाई है, जबकि सोच वही प्रश्न।

मैं में कार्यक्रम के विधानसभा भाषा का प्रयोग किया। मेरे दिन में, स्क्रीन पर ड्राइंग बस (?) एक स्मृति स्थान में एक मूल्य पोक करने की बात थी। मान ने पिक्सेल को चालू या बंद कर दिया और इसके रंग को परिभाषित किया।

शब्द 'पोक' शब्द से बेसिक से आता है, असेंबलर नहीं।असेंबलर में, आपको डेटा रजिस्टर में एक मूल्य लिखना पड़ा था, फिर प्रोसेसर को बताएं कि डेटा को किसी अन्य कमांड का उपयोग करके और एड्रेस रजिस्टर निर्दिष्ट करना, आमतौर पर हेक्साडेसिमल फॉर्म में! और प्रत्येक अलग प्रोसेसर की अपनी असेंबली भाषा थी। लेकिन हेक कोड तेजी से था!

जैसे हार्डवेयर प्रगति हुई, मैंने पाया कि ग्राफिक्स हार्डवेयर प्रोग्रामिंग अधिक से अधिक जटिल हो गई है। बस पिक्सेल को परिभाषित करने की तुलना में इसके लिए बहुत कुछ है। ग्राफिक्स उपप्रणाली का अपना प्रोसेसर - या प्रोसेसर है - और यह है कि आपको बात करना सीखना है। प्रोसेसर बस मेमोरी स्थानों में सामान नहीं डालता है। (मुझे विश्वास है कि ग्राफिक्स चिप्स पर थोड़ी देर के लिए दुनिया में सबसे तेज़ सुपरकंप्यूटर होता था!) ​​'प्लोंक' रास्ते से मूलभूत आदेश नहीं है।

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

आशा इस मदद करता है किसी को, चीयर्स, एम