मूल एंड्रॉइड एप्लिकेशन में ओपनजीएल ईएस 2.0 शेडर बनाना निश्चित रूप से संभव है। मुख्य बात यह है कि उचित ओपनजीएल ईएस 2.0 संदर्भ का उपयोग करना है। मैंने अपने ऐप में कुछ ऐसा ही किया जो मूल रूप से प्रारंभिक ईजीएल संदर्भ में मूल भाग में था और उसके बाद केवल मूल कोड में शेडर्स (और उपयोग) बनाया गया था। जो मैंने किया है उसके आधार पर मैं मानता हूं कि आप जो करना चाहते हैं वह भी पूरी तरह से संभव है।
चूंकि मेरे पास जावा कोड में प्रवेश बिंदु था (नेटिव एविविटी तंत्र का उपयोग नहीं किया गया था) मुझे मूल कोड में ईजीएल सतह बनाने के लिए जावा से सी ++ में देशी विंडो हैंडल (EGLNativeWindowType
) पास करना पड़ा। हालांकि, चूंकि आप मूल एक्टिविटी उदाहरण को बस संशोधित करना चाहते हैं, तो आप नेटिव एक्टिविटी main.c
नमूना में प्रस्तुत ईजीएल सतह बनाने के लिए engine->app->window
का उपयोग कर सकते हैं।
ठीक है, मूल कोड में उचित OpenGL ES 2.0 संदर्भ कैसे बनाएं?मैंने अभी नेटिवएक्टिविटी नमूने में main.c
फ़ाइल में दो बदलाव किए हैं और इसे चेक किया है।
सबसे पहले, निम्नलिखित EGL
const EGLint attribs[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, //important
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_NONE
};
विशेषताओं eglChooseConfig(display, attribs, &config, 1, &numConfigs);
में इस्तेमाल किया।
दूसरे, बाद में संदर्भ बनाने में
const EGLint attrib_list [] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE};
इस्तेमाल किया context = eglCreateContext(display, config, NULL, attrib_list);
में मैं कोड के बाकी अपरिवर्तित छोड़ दिया है। मुझे यकीन है कि बनाने के लिए कुछ जानकारी मुद्रित कि ओपन ES 2.0 इस्तेमाल किया जा रहा है:
I/native-activity( 955): Details: [Version: OpenGL ES 2.0 1403843], [Vendor: Qualcomm], [Renderer: Adreno 205], [Extensions: GL_AMD_compressed_3DC_texture GL_AMD_compressed_ATC_texture ... ]
आशा है कि यह मदद करता है!
संभावित बेकार प्रश्न के लिए खेद है, लेकिन क्या आपने किसी भी तरह से ईजीएल में प्रवेश किया? मुझे लगता है कि ओपनजीएल इंजन आपके अनुरोध प्राप्त करने के लिए तैयार नहीं है (जो getShaderInfoiv कॉल की चुप विफलता को समझा सकता है)। मामले में, ओजीएल 2.0 लाइब्रेरी लोड की गई है? –
हाय, हाँ ईजीएल शुरू किया गया है –
देशी ओपनजीएल विकास में कोई अनुभव नहीं होने पर मेरा अनुमान होगा कि मूल गतिविधि उदाहरण के बाद आपको OpenGL ES 1.0 संदर्भ के साथ छोड़ दिया जाएगा। हैलो-ग्ल 2 उदाहरण ओपनजीएल ईएस 2.0 कॉन्फ़िगरेशन चुनने में जावा कोड के भीतर किया जाता है। – harism