2011-03-17 6 views
7

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

उत्तर

8

जीडीआई, एक्स 11, ओपनजीएल ... एपीआई प्रस्तुत कर रहे हैं, यानी आप आम तौर पर छवि मैनिपुलेशन के लिए उनका उपयोग नहीं करते हैं (आप यह कर सकते हैं, लेकिन इसे कुछ सावधानियों की आवश्यकता है)।

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

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

अपने उपयोग परिदृश्य आप वर्तमान कंप्यूटर पर किसी भी प्रदर्शन समस्याओं में भाग नहीं लेंगे, ताकि मापदंड से अपने एपीआई नहीं चुनते में

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

+0

"जो अपने वर्तमान कार्यान्वयन में ओपन के शीर्ष पर बैठता है, लेकिन देशी GPU आ सकता है पर सीधे ऑपरेटिंग कार्यान्वयन" -> क्या आपको लगता है कि द्वारा मतलब है? – Calvin1602

+0

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

+0

क्या आप अपने उत्तर में ओपनसीवी, ओपनवीजी, और शायद ओपनसीएल मिश्रण नहीं कर रहे हैं? मैं काफी आप का पालन नहीं करता हूँ। – Calvin1602

4

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

दूसरी ओर, ओपन बहुत अच्छी तरह से कई मामलों में बेहतर हो सकता है। परतों संयोजन या का समायोजन रंग/संतृप्ति/चमक/एक GLSL शेडर में विपरीत परिमाण के कई आदेशों तेजी से (वास्तव में, काफी "तुरन्त") हो सकता है अगर वहाँ कंप्यूटर में एक यथोचित नया कार्ड है। एक "अस्पष्ट" कलम के साथ एक फ्रीड्रा पथ को स्ट्रोक करना (यानी अल्फा पारदर्शिता के साथ एक स्प्राइट मिश्रण करना) तेजी से परिमाण के आदेश होंगे। कुछ हद तक उचित आयाम वाली छवियों पर, अधिकांश फ़िल्टर कर्नेल रीयलटाइम के करीब चलना चाहिए। हार्डवेयर में bilinear फ़िल्टरिंग के साथ Rescaling।

इस तरह की बातें एक 512x512 छवि पर कोई फर्क नहीं, के रूप में काफी सब कुछ इस तरह के प्रस्तावों पर तात्कालिक है, लेकिन अपने डिजिटल कैमरे से एक ठेठ 4096x3072 (या बड़ी) छवि पर, यह बहुत ध्यान देने योग्य हो सकता है, खासकर यदि आप है 4-6 परतें

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