2010-06-18 16 views
11

के साथ वीडियो डिस्प्ले मैं ओपनजीएल के साथ सीधे उच्च रिज़ॉल्यूशन वीडियो प्रदर्शित करना चाहता हूं।ओपनजीएल

छवि डेटा जीपीयू पर संसाधित होने जा रहा है और मैं मानक बिटमैप आधारित विंडो में वीडियो दिखाने के लिए पीसी पर एक राउंड-ट्रिप से बचना चाहता हूं।
क्रॉस मंच अच्छा है, केवल Windows होगा ठीक (ताकि केवल NVIDIA होगा)

किसी को भी यह कर तरीकों के लिए कोई लिंक है?

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

उत्तर

10

ओपनजीएल 2.1 मानते हुए, एक बनावट में पिक्सेल डेटा स्ट्रीम करने के लिए GL_PIXEL_UNPACK_BUFFER प्रकार के बफर ऑब्जेक्ट का उपयोग करें। जब आप glMapBuffer, glMapBufferRange (OpenGL 3.2) का उपयोग करते हैं या glbufferData को सीधे कॉल करते हैं तो प्रतिलिपि बनाने के लिए डीएमए का उपयोग करने के लिए यह हर फ्रेम डेटा अपलोड करने से तेज़ है। कॉपी-ओवरहेड और मैपिंग ओवरहेड के बीच ट्रेडऑफ प्राप्त करने के लिए आप प्रत्येक बैच में कई फ़्रेम कॉपी भी कर सकते हैं। अंत में, वाईयूवी या वाईसीबीसीआर को आरजीबी में परिवर्तित करने के लिए एक शेडर बनाएं और बनावट को त्रिभुज स्ट्रिप के साथ प्रदर्शित करें।

+0

एक पूर्णस्क्रीन ट्रैक्टर पर त्रिकोण के लिए कोई कारण? –

+3

हां, quads हर सम्मान में चूसना और इस्तेमाल नहीं किया जाना चाहिए, बस भूल जाओ कि वे कभी अस्तित्व में थे। –

2

ओपनजीएल के साथ करने के लिए स्पष्ट बात यह है कि बिटमैप को बनावट के रूप में प्रदर्शित करना होगा।

+0

हां - मुझे बस आश्चर्य हुआ कि क्या प्रत्येक फ्रेम को एक पूर्ण स्क्रीन क्वाड पर कॉपी करने के बजाय कुछ फ्रेम विशिष्ट प्रदर्शन चालें हैं –

+0

@ मार्टिन: आमतौर पर नहीं - जब तक आप कार्ड पर सभी मेमोरी को शफ़ल रखते हैं स्वयं, लगभग कोई भी उचित वीडियो कार्ड बैंडविड्थ को अधिकतम रीफ्रेश दर पर स्क्रीन पर हर बिट को फिर से लिखने के लिए आसानी से प्रदान कर सकता है (विशेष रूप से अब, क्योंकि एलसीडी लगभग 60 हर्ट्ज से अधिक तेज़ नहीं होता है - यह उच्च अंत सीआरटी के साथ कठिन था जो 100 + हर्ट्ज ताज़ा करें)। –

+0

समस्या है - मुझे 120 हर्ट्ज पर 1080p करने की ज़रूरत है (और आदर्श रूप से उनमें से दो!) –

1

तो क्या आप अपने वीडियो को बनावट पर भेजना चाहते हैं और इसे टुकड़े टुकड़े के साथ संसाधित करना चाहते हैं? Here's एक छोटा ट्यूटोरियल कुछ ऐसा करने के लिए कैसे करें। यह सिर्फ एक साधारण ओपनजीएल 2.0 उदाहरण है जो 2 विंडो आकार बनावट बनाता है और उन्हें टुकड़े टुकड़े में मिला देता है। इसमें कोई वीडियो शामिल नहीं है लेकिन संशोधित करना मुश्किल नहीं होना चाहिए यदि आपके पास पहले से ही इसे डीकोड करने का साधन है।

0

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

आप http://www.barbato.us/category/programming-labs/

उपयोग करने के लिए बहुत आसान पर एपीआई की जाँच करें और कोड बहुत पठनीय बनाता है सकते हैं।

शुभकामनाएं !!!