यदि उपयोग किया गया डिवाइस OpenGL ES 2.0 का समर्थन करता है तो मुझे गतिशील रूप से जांच करने की आवश्यकता है। मैं यह कैसे कर सकता हूं?क्या यह जांचने का कोई तरीका है कि एंड्रॉइड डिवाइस ओपनजीएल ईएस 2.0 का समर्थन करता है या नहीं?
उत्तर
हां।
final ActivityManager activityManager =
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo =
activityManager.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
अधिक जानकारी के लिए इस पढ़ें:: http://www.learnopengles.com/android-lesson-one-getting-started/
तुम भी उपकरणों कि जोड़कर बाजार में अपने अनुप्रयोग को देखने से 2.0 का समर्थन नहीं करते प्रतिबंधित करना चाहते हैं की आवश्यकता हो सकती निम्न कोड चाल करना होगा आपके मैनिफेस्ट के लिए निम्नलिखित:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
the doc of uses-feature
भी देखें।
getDeviceConfigurationInfo() एक कॉन्फ़िगरेशनइन्फो देता है, जो चश्मा के अनुसार है: 'जानकारी जो आप किसी एप्लिकेशन द्वारा घोषित हार्डवेयर कॉन्फ़िगरेशन वरीयताओं के बारे में पुनर्प्राप्त कर सकते हैं। यह AndroidManifest.xml के <उपयोग-कॉन्फ़िगरेशन> और <उपयोग-सुविधा> टैग से एकत्र की गई जानकारी से मेल खाता है। 'ऐसा लगता है कि डिवाइस के बारे में जानकारी होने के बजाए ये आपके डिवाइस में जोड़े गए डिवाइस की आवश्यकताएं हैं। – jeroent
@jeroent 'कॉन्फ़िगरेशनइन्फो' वर्ग अपनी चश्मे में बताता है लेकिन 'getSystemService' में 'ACTIVITY_SERVICE' संदर्भ का उपयोग करके वैश्विक सिस्टम स्थिति के साथ बातचीत के लिए 'गतिविधि प्रबंधक' पुनर्प्राप्त करता है। – Foggzie
क्षमा करें? और कैसे जांचें 3.0 –
निर्धारण ओपन एक्सटेंशन: ओपन के
क्रियान्वयन कि समर्थन कर रहे OpenGL ES एपीआई के लिए एक्सटेंशन के मामले में एंड्रॉयड डिवाइस के हिसाब से बदलती। इन एक्सटेंशन में बनावट संपीड़न शामिल है, लेकिन आम तौर पर ओपनजीएल फीचर सेट में अन्य एक्सटेंशन भी शामिल हैं।
निर्धारित करने के लिए क्या बनावट संपीड़न प्रारूपों, और अन्य ओपन एक्सटेंशन, किसी विशिष्ट डिवाइस पर समर्थित हैं:
निर्धारित करने के लिए क्या बनावट संपीड़न प्रारूपों का समर्थन कर रहे अपने लक्ष्य उपकरणों पर निम्न कोड चलाएँ:
String extensions = javax.microedition.khronos.opengles.GL10.glGetString(GL10.GL_EXTENSIONS);
चेतावनी: इस कॉल के परिणाम डिवाइस द्वारा भिन्न होते हैं! यह कॉल यह निर्धारित करने के लिए कि कौन से संपीड़न प्रकार सामान्य रूप से समर्थित हैं, आपको कई लक्ष्य उपकरणों पर यह कॉल चलाना होगा। डिवाइस पर ओपनजीएल एक्सटेंशन समर्थित हैं यह निर्धारित करने के लिए इस विधि के आउटपुट की समीक्षा करें।
यह विधि गठित है। यदि आप glGetString() का उपयोग करने जा रहे हैं तो आप इसे GL_EXTENSIONS के साथ नहीं बुलाएंगे, आप इसे GL_VERSION के साथ कॉल करेंगे और फिर बाद में स्ट्रिंग को पार्स करेंगे। कॉन्फ़िगरेशनइन्फो क्लास को इस समस्या को जल्दी और आसानी से हल करने के लिए डिज़ाइन किया गया है। – Foggzie
ओपनजीएल ईएस का कभी भी उपयोग नहीं किया गया, लेकिन देखा कि यह ओपनजीएल के समान glGetString
विधि है। यह चाल करना चाहिए:
http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetString.xml
केवल 2.0 के साथ उन उपकरणों तो प्रकट में करने के लिए, तरीके कि दूसरों का उल्लेख किया है में कोड में पता चल सके कि आप बाजार में यह restrct करना चाहते हैं के अलावा:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
आपको दोनों करना चाहिए, मैंने लोगों को सीधे अनुपयुक्त उपकरणों पर एपीके स्थापित किया है और अजीब अपवादों से निपटना पड़ा है।
private boolean detectOpenGLES20() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo info = am.getDeviceConfigurationInfo();
return (info.reqGlEsVersion >= 0x20000);
}
//in activity onCreate
if (!detectOpenGLES20()) {
throw new RuntimeException("Open GL ES 2.0 was not found on device");
}
इस कोड को ठीक काम कर रहा ..
// Check if the system supports OpenGL ES 2.0.
final ActivityManager activityManager = ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo = activityManager
.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
if (supportsEs2) {
Log.i("JO", "configurationInfo.reqGlEsVersion:"
+ configurationInfo.reqGlEsVersion + "supportsEs2:"
+ supportsEs2);
// Request an OpenGL ES 2.0 compatible context.
myGlsurfaceView.setEGLContextClientVersion(2);
final DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
// Set the renderer to our demo renderer, defined below.
myRenderer = new MyRenderer(this, myGlsurfaceView);
} else {
// This is where you could create an OpenGL ES 1.x compatible
// renderer if you wanted to support both ES 1 and ES 2.
return;
}
थोड़ी देर के लिए, मैं एक ही जवाब तलाश रहे हैं, भी: अब मैं एक क्रम फेंक देते हैं। लेकिन दुर्भाग्य से, मुझे इसके लिए उचित विवरण नहीं मिला। मुझे बस एक मिनट पहले एक रास्ता मिला, और मुझे लगता है कि मैं इसे सबके साथ साझा करना चाहता हूं।
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FeatureInfo[] list = this.getPackageManager()
.getSystemAvailableFeatures();
Toast.makeText(this,
"OpenGL ES Version: " + list[list.length - 1].getGlEsVersion(),
Toast.LENGTH_LONG).show();
}
अपने कोड में इस कोड का उपयोग कर सकते हैं:
int result;
ActivityManager activityManager =
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo configInfo = activityManager.getDeviceConfigurationInfo();
if (configInfo.reqGlEsVersion != ConfigurationInfo.GL_ES_VERSION_UNDEFINED) {
result= configInfo.reqGlEsVersion;
} else {
result= 1 << 16; // Lack of property means OpenGL ES version 1
}
Log.e("reqGlEsVersion", String.valueOf(result));
Log.e("getGlEsVersion", configInfo.getGlEsVersion());
इसे उत्तर के रूप में स्वीकार किया जाना चाहिए – Bunny
- 1. क्या एंड्रॉइड एमुलेटर ओपनजीएल ईएस 2.0 का समर्थन करता है?
- 2. ओपनजीएल ईएस 2.0 समर्थन?
- 3. एंड्रॉइड ओपनजीएल ईएस 2.0 एम्यूलेटर
- 4. क्या आईपैड या आईफोन ओपनजीएल ईएस 2.0 का समर्थन करता है?
- 5. क्या यह बताने का कोई तरीका है कि एक एंड्रॉइड डिवाइस केवल वाईफाई है या नहीं?
- 6. क्या यह जांचने का कोई तरीका है कि कोई चर जावास्क्रिप्ट में दिनांक है या नहीं?
- 7. एंड्रॉइड ओपनजीएल ईएस हर जगह समर्थन?
- 8. क्या टेदरिंग सक्रिय है या नहीं यह जांचने का कोई तरीका है?
- 9. क्या यह जांचने का कोई तरीका है कि अलार्म पहले से सेट है या नहीं?
- 10. क्या कोई ब्राउज़र जावास्क्रिप्ट का समर्थन करता है या नहीं, यह जांचने के लिए कोई जावास्क्रिप्ट तरीका है?
- 11. क्या यह जांचने का कोई तरीका है कि पॉइंटर खतरे में है या नहीं?
- 12. यह जांचने का सबसे अच्छा तरीका क्या है कि कोई S3 ऑब्जेक्ट मौजूद है या नहीं?
- 13. जेएस यह जांचने का कोई तरीका है कि कोई ईवेंट मौजूद है या नहीं?
- 14. यह जांचने का सबसे अच्छा तरीका है कि कोई सूची शून्य नहीं है या नहीं?
- 15. ओपनजीएल ईएस 2.0
- 16. क्या यह जांचने का कोई तरीका है कि निर्देशिका में इंगित प्रतीकात्मक लिंक हैं या नहीं?
- 17. ओपनजीएल ईएस 2.0
- 18. क्या कोई स्केलर स्ट्रिंग किया गया है या नहीं, यह जांचने का कोई तरीका है?
- 19. यह जांचने का सही तरीका है कि कोई फ़ॉर्म पहले से दिखाया गया है या नहीं?
- 20. क्या यह जांचने का कोई तरीका है कि जावा में दो ऑब्जेक्ट्स अलियाकृत हैं या नहीं?
- 21. एंड्रॉइड ओपनजीएल ईएस 2.0 स्क्रीन विश्व निर्देशांक
- 22. क्या कोई कॉलम शून्य है या नहीं, यह जांचने का कोई त्वरित तरीका है?
- 23. यह जांचने का कोई तरीका है कि XmlSchemaParticle एक खाली पट्टी है या नहीं?
- 24. ओपनजीएल ईएस 2.0
- 25. क्या यह निर्धारित करने का कोई तरीका है कि वर्तमान स्क्रीन स्पर्श का समर्थन करती है या नहीं?
- 26. ओपनजीएल ईएस 2.0
- 27. वेग: यह जांचने का कोई तरीका है कि चर परिभाषित किया गया है या नहीं
- 28. एमएसवीसी - यह जांचने का कोई तरीका है कि फ़ंक्शन वास्तव में रेखांकित है या नहीं?
- 29. क्या यह बताना संभव है कि ओपनजीएल संस्करण शेडर कोड के भीतर ओपनजीएल ईएस है या नहीं?
- 30. ओपनजीएल ईएस 2.0
GLES20 एपीआई स्तर 8 पर जोड़ा जाता है, नहीं यह बजाय इसके खिलाफ जांच करने के लिए पर्याप्त होना चाहिए? – harism
harism: यह सच नहीं है। मेरे पास एंड्रॉइड 2.2.1 के साथ एचटीसी वाइल्डफायर है। यह OpenGL ES 2.0 का समर्थन नहीं करता है। – petrnohejl