2011-07-10 14 views
13

मैं OpenCL साथ कुछ गणना pixelart करते हैं और सीपीयू roundtripping के बिना प्रदर्शन पर सीधे इस प्रदर्शित करने के लिए wan't। मैं ओपन के साथ OpenCL के अंतर का उपयोग करें और GPU की बनावट-बैंकों को लिख सकते हैं और ओपन के साथ बनावट प्रदर्शित कर सकता है। मैं सोच रहा था क्या यह करने के लिए सबसे अच्छा तरीका हो सकता है, के बाद से मैं किसी भी 3 डी सामान, बस 2 डी pixelart जरूरत नहीं है।ओपनजीएल के साथ स्क्रीन पर ओपनसीएल गणना पिक्सेल कैसे आकर्षित करें?

उत्तर

13

सबसे अच्छा तरीका है अपने OpenCL कार्यान्वयन यह समर्थन करता है तो, OpenCL/ओपन इंटरॉप उपयोग करने के लिए किया जाएगा। यह ओपनसीएल को कुछ ओपनजीएल ऑब्जेक्ट्स (बफर ऑब्जेक्ट्स और टेक्सचर/रेंडरबफर) तक पहुंचने की अनुमति देता है। आप डिफ़ॉल्ट ओपनजीएल फ्रेमबफर (यानी डिस्प्ले) तक सीधे पहुंच नहीं पाएंगे, लेकिन आप framebuffer object पर बाध्य छवि तक पहुंच पाएंगे। वहां से, आप ओपनजीएल में, डिफ़ॉल्ट फ्रेमबफर पर फ्रेमबफर ब्लिट कर सकते हैं। कुछ भी CPU स्मृति को छूएगा।

हालांकि विवरण जानने के लिए आपको CL/GL interop पर विनिर्देशों को देखना होगा। मूल विचार यह है कि आप OpenGL में एक रेंडरबफर बनाते हैं (जिसे आप एक एफबीओ से बांधते हैं)। फिर आप उस रेंडरबफर को ओपनसीएल पर बंद कर देते हैं, और रेंडरबफर में अपनी गणना करते हैं। एक बार यह पूरा होने के बाद, आप रेंडरबफर से डेटा को डिफ़ॉल्ट फ्रेमबफर में कॉपी करने के लिए glBlitFramebuffer निष्पादित करते हैं, फिर इसे प्रदर्शित करने के लिए बफर को स्वैप करें।

+1

अच्छा एक। मुझे इस विधि को पता है, लेकिन मुझे सीएल और जीएल इंटरऑप प्राप्ति के साथ कुछ समस्याएं हैं। http://stackoverflow.com/questions/8789662/interoperability-texture-access-block: आप कृपया यहां अपनी समस्या देख सकते हैं? – itun

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