2017-04-30 15 views
8

मैं अपने एंड्रॉइड ऐप में ओपनगल जोड़ने के लिए इस ट्यूटोरियल का अनुसरण कर रहा हूं। https://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html। सभी उदाहरणों में आकार MyGLRenderer कन्स्ट्रक्टर में बनाए जाते हैं लेकिन मैं जानना चाहता हूं कि रेंडरर बनने के बाद मैं ओपनग्ल आकार को गतिशील रूप से कैसे जोड़ सकता हूं। यह कैसे किया जा सकता है?गतिशील रूप से Opengl आकार जोड़ें

उत्तर

1

व्युत्पन्न त्रिकोण, ट्रैक्टर, सर्कल, आदि .. एक 'आकार' इंटरफ़ेस से draw() विधि को परिभाषित करता है। http://tutorials.jenkov.com/java/interfaces.html

फिर एक सूची बनाएं और आवश्यकतानुसार आकृतियों को इसमें से बाहर निकालें। http://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples

आपकी onDrawFrame(GL10 gl) विधि में, आकार सूची पर लूप।

for(Shape s : shapeList) s.draw(gl); 

इसके अलावा, शायद glTranslate कॉल

+0

क्या आप एक उदाहरण प्रदान कर सकते हैं? मुझे समझ में नहीं आता – amanda45

+0

@ जेम्स-पोग- मैं सूची कहां बना सकता हूं? – amanda45

3

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

कक्षा का उपयोग करने का लाभ यह है कि आप विधियों को प्रारंभ कर सकते हैं और इसे विस्तारित करने की क्षमता बनाए रखते हुए सब कुछ एक ही कक्षा में रख सकते हैं और अपनी वस्तुओं को अनुकूलित करने के लिए अधिक कक्षाएं (क्यूब, पिरामिड, आदि) बना सकते हैं।

के बाद आप वर्ग (ते) बनाते हैं, आप एक नई सूची या नक्शा बनाने:

public List<Shape> shapes = new ArrayList<>(); 
//add whatever shapes you want. Create them at runtime (generate) 
// or keep them static. It is up to you 

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

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