मैंने इस विषय पर कई बार देखा है और इससे मुझे भ्रमित करना शुरू हो गया है। मुझे उम्मीद है कि कोई मुझे एक निश्चित उत्तर दे सकता है! :)ओपनजीएल ईएस 2.0 समर्थन?
मुझे लगता है कि ब्लंट होना चाहिए: एंड्रॉइड एमुलेटर ओपनजीएल ईएस 2.0 का समर्थन करता है? मैंने कुछ लोगों को यह कहते हुए देखा है "हाँ, लेकिन आपको कुछ सेटिंग्स बदलनी है।" और मैंने यह भी देखा है "नहीं, यह इसका समर्थन नहीं करता है, अवधि।" समस्या के प्रयास और सही करने के लिए मैंने जो किया है, यहां कुछ त्रुटि संदेश भी शामिल हैं।
पहले, मैं AndroidManifest.xml संशोधित निम्नलिखित कोड को रोकने के लिए: फिर
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
, जब मैं अपने GLSurfaceView का दृष्टांत करना चाहते हैं, मैं यह दृष्टांत के लिए कोड के इस क्रम का उपयोग करें:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
फिर, हर जगह मैंने देखा कि आपको एवीडी प्रबंधक में जाना होगा, एमुलेटर का चयन करें, "हार्डवेयर" पर जाएं, "जीपीयू इम्यूलेशन" जोड़ें और बूलियन को "हां" में सेट करें।
:
क्या अजीब बात यह है कि मैं अपने AVD प्रबंधक में एक और एमुलेटर जिनमें से मैं "हार्डवेयर" तालिका की क्या ज़रूरत है: हालांकि, यहां मैं क्या देखते हैं जब मैं मेरा देखो है
और बस आप को दिखाने के लिए मैं वास्तव में क्या कर रहा हूँ, यहाँ कुछ कोड है कि कुछ सामान मैं ओपन ES 2.0 में क्या करना चाहते हैं करता है (मैं मुख्य रूप से Android के अपने ट्यूटोरियल से यह मिल गया):
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
program = GLES20.glCreateProgram();
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);
GLES20.glLinkProgram(program);
मैं अपने कोड को ओपनजीएल ईएस 1.0 के साथ काम पर वापस नहीं बदलना चाहता क्योंकि इसमें बहुत सारे सिरदर्द की आवश्यकता होगी और यदि मैं इससे बच सकता हूं, तो मैं करूँगा।
अंत में, जब मैं अपना प्रोग्राम चलाने का प्रयास करता हूं, तो प्रोग्राम विंडो के साथ बंद हो जाता है: "दुर्भाग्य से, बंद हो गया है।" यह वही है LogCat ने मुझे बताया है:
12-05 06:16:27.165: E/AndroidRuntime(936): FATAL EXCEPTION: GLThread 81
12-05 06:16:27.165: E/AndroidRuntime(936): java.lang.IllegalArgumentException: No config chosen
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:874)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
मैं कहेंगे मैं कर रहा हूँ नहीं सब पर इस पर एक विशेषज्ञ हैं और इस ओपन के साथ पहला अनुभव है। अगर किसी के पास कोई फिक्स है कि मैं इसे ठीक करने के लिए क्या कर सकता हूं, तो मैं हमेशा आभारी रहूंगा। :) धन्यवाद!
कृपया ध्यान दें कि हार्डवेयर GPU त्वरण Android 4.0 और ऊपर के साथ AVDs पर ही काम करता है है। एंड्रॉइड 2.2 के साथ एवीडी में ओपनजीएल ईएस 2.0 – keaukraine
तेज नहीं होगा, मैं आज एंड्रॉइड डिवाइस पर इस कोड का परीक्षण करने की कोशिश करूंगा। मैं यह सुनिश्चित करना चाहता हूं कि यह कोड वास्तविक उपकरणों पर काम करेगा। – Petr
मैंने फ्लाई डिवाइस पर इस कोड का परीक्षण किया, और यह काम करता है। कोकोस 2 डी-एक्स फोरम के लोगों ने उल्लेख किया कि यह कोड केवल डिवाइस पर नहीं, बल्कि एमुलेटर पर चलाना चाहिए। देखें http://www.cocos2d-x.org/boards/6/topics/12563?r=19457#message-19457 – Petr