का उपयोग करके रेंडरिंग मेरे पास एक एंड्रॉइड एप्लिकेशन है जो प्रतिपादन के लिए जीएलएस का उपयोग करता है। वर्तमान में सामान प्रस्तुत करने के लिए जावा का उपयोग करना, और प्रतिपादन ठीक है। एंड्रॉइड जावा एप्लिकेशन मेमोरी में सीमा के कारण मैं अपने जावा प्रतिपादन कोड में देशी प्रतिपादन को एकीकृत करने की योजना बना रहा हूं।एंड्रॉइड ओपनगलएस सी ++ और जावा
ऐसा करने के लिए मैंने मूल देशी जीएलएस ट्यूटोरियल्स का पालन किया। एकीकृत करने के बाद, जावा प्रतिपादन दिखाई नहीं दे रहा था, केवल सी ++ में प्रस्तुत की गई चीज़ों को देखा गया था।
कोड का सबसे सरल संस्करण है: https://github.com/khedd/JavaCppGLES जावा कोड त्रिकोण प्रदान करता है, सी ++ एक ट्रैक्टर प्रस्तुत करता है। अगर दोनों को केवल क्वाड कहा जाता है तो रेंडरर होता है।
मैं इस मुद्दे को कैसे हल कर सकता हूं? क्या मुझे सी ++ में सबकुछ बंद करना चाहिए?
संक्षेप में कोड।
MyGLRenderer(){
mTriangle = new Triangle();
mCppRenderer = new MyCppRenderer();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glClearColor(1.0f, 0.0f, 1.0f, 1.0f);
//init java triangle
mTriangle.init();
//init c quad
mCppRenderer.init(); //comment this line to make java triangle appear
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
mTriangle.draw();
mCppRenderer.draw();
}
आपने इसे "स्मृति कारणों" के लिए किया था? आप उम्मीद क्यों करते हैं कि यह कम स्मृति का उपयोग करेगा? साथ ही, आपके सी ++ और जावा ओपनजीएल कॉल अलग-अलग धागे पर हो रहे हैं, लेकिन, जावा और सी ++ के बीच आईटरोप के किसी भी कोड या विचार के बिना, सलाह देने के लिए यह बहुत कठिन होगा। – MuertoExcobito
यह कम स्मृति का उपयोग नहीं करेगा लेकिन मूल में मैं और अधिक जगह का उपयोग कर सकता हूं। इसके अलावा आप सही हैं मैं कल नमूना कोड प्रदान करने की कोशिश करूंगा। मुझे पूरा यकीन है कि वे जावा के ड्राफ्रेम कॉल के भीतर एक ही थ्रेड पर हैं। – Hakes