2013-01-12 13 views
6

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

मैंने अपने int सरणी को एक सहयोगी द्वारा निर्देशित बाइट सरणी में परिवर्तित कर दिया है, लेकिन अब मैं खो गया हूं कि मैं ओपनग्ल बनावट कैसे बना सकता हूं और शेडर को देखने और उपयोग करने के लिए अपने बाइट डेटा को इनपुट करता हूं।

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

मैं कुछ कोड का प्रयास किया। मैं एक GLES20.glTexImage2D बनाने की कोशिश कर समाप्त हो गया। मैंने सोचा कि मैं बस अपने बाइट सरणी में गुजर सकता हूं, लेकिन यह एक बफर लेता है ?? कृपया मुझे अपना काम पूरा करने के लिए आवश्यक सभी कदम दें।

बहुत बहुत धन्यवाद!

माइक

उत्तर

5

मुझे लगता है कि आपको निम्नलिखित करने की आवश्यकता है;

byte data[4 * 262144]; // your byte array, 4 * int count 
ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 262144); 
buffer.put(data); 
buffer.position(0); 

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, 
        GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer); 
+0

आप जानते हैं कि कैसे एक एंड्रॉयड NDK में यह कर सकता है? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixel-array-of-integer-colors-to-a-texture-using-the-android-nd – torger