2014-07-21 5 views
12

मुझे पता है कि एमुलेटर has supported OpenGL ES 2.0 as of SDK tools 17 and Android 4.0.3, लेकिन अप्रैल 2012क्या एंड्रॉइड एमुलेटर ओपनजीएल ईएस 3.0 का समर्थन करता है?

में वापस शुरू की गई थी एंड्रॉयड एमुलेटर समर्थन OpenGL ES 3.0, या हम अभी भी उस पर इंतजार कर रहे हैं करता है?
यदि नहीं, तो क्या कोई अन्य तृतीय-पक्ष एमुलेटर/सिम्युलेटर (उदा। जेनिमोशन) ओपनजीएल ES 3.0 का समर्थन करता है?

+0

यहां तक ​​कि OpenGL ES 2.0 समर्थन कुछ हद तक सीमित और एमुलेटर में छोटी गाड़ी है। लेकिन नेक्सस 4 ओपनजीएल ईएस 3.0 का समर्थन करता है। और इस्तेमाल किया N4 गंदगी सस्ते है। – keaukraine

+0

:) तो यह एक निश्चित "नहीं" है? –

+0

यदि आप प्रश्न का उत्तर देते हैं तो पूरी तरह से स्वीकार्य उत्तर। –

उत्तर

7

यहां तक ​​कि OpenGL ES 2.0 समर्थन कुछ हद तक सीमित और एमुलेटर में छोटी गाड़ी है। लेकिन उदाहरण के लिए नेक्सस 4 ओपनजीएल ईएस 3.0 का समर्थन करता है। और इस्तेमाल किया N4 गंदगी सस्ते है।

ईमानदारी से, मुझे एमुलेटर में ओपनजीएल ES 3.x समर्थन की उम्मीद नहीं है। यह एंड्रॉइड चश्मे का एक अनिवार्य हिस्सा नहीं है - यह एक वैकल्पिक सुविधा है जो उपस्थित हो सकती है और गायब हो सकती है। इसलिए मैं ओपनजीएल ईएस 3.x के परीक्षण के लिए भी असली हार्डवेयर से चिपकने की सलाह दूंगा। यदि आपको उन ऐप्स की विशेषताओं की जांच करने की आवश्यकता है जिन्हें ओपनजीएल ईएस 3.0 की आवश्यकता नहीं है, तो आप अनुकरणकर्ताओं के लिए जाने के लिए अच्छे हैं। लेकिन किसी ओपनजीएल ईएस (1.0 से 3.1 तक) का परीक्षण करने के लिए मैं दृढ़ता से वास्तविक उपकरणों पर वास्तविक उपकरणों का उपयोग करने की सलाह देता हूं - सबसे पहले, वास्तविक उपकरणों पर जीएल पर्यावरण स्थिर है (एम्यूलेटर पर इसमें सीमित सुविधाएं, छोटी गाड़ी और अस्थिर है, यहां तक ​​कि एमुलेटर भी क्रैश कर सकते हैं कभी-कभी), और दूसरी बात, आपको विभिन्न वास्तविक GPUs पर बहुत सारे OpenGL ड्राइवर/हार्डवेयर बग/सीमाएं मिल सकती हैं।

5

न तो एंड्रॉइड एमुलेटर और सिस्टम छवियां और न ही जेनमोशन वर्तमान में ओपनजीएल ईएस संस्करण 3.0 का समर्थन करता है।

मैं इस बारे में के रूप में नवीनतम (रेव 1) है कि वे समर्थन OpenGL ES संस्करण 2.0 और 3.0 के लिए नहीं एंड्रॉयड 5.1.1 (एपीआई 22) रिपोर्ट एआरएम और x86 सिस्टम छवियों।

इसी तरह, जेनिमोशन के नेक्सस 5 एंड्रॉइड 5.1.0 एपीआई 22 वर्चुअल डिवाइस केवल ओपनजीएल ईएस संस्करण 2.0 समर्थन की रिपोर्ट करता है।

आप भविष्य प्रणाली छवियों और emulators के अंतर्गत सहायता की जांच करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं:

package com.example.opengltest; 

import android.app.Activity; 
import android.app.ActivityManager; 
import android.content.Context; 
import android.content.pm.ConfigurationInfo; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

public class OpenGLESVersionActivity extends Activity { 

    private static final String TAG = "OpenGLESVersionActivity"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final ActivityManager activityManager = 
       (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
     final ConfigurationInfo configurationInfo = 
       activityManager.getDeviceConfigurationInfo(); 
     String versionText = "Device Supported OpenGL ES Version = " + configurationInfo.getGlEsVersion(); 
     Toast.makeText(this, versionText, Toast.LENGTH_LONG).show(); 
     Log.d(TAG, versionText); 
    } 

} 
+0

यह विधि अधिक विश्वसनीय है glGetString (GLES20.GL_VERSION) का उपयोग करने से? मैं उत्सुक हूं कि दोनों के बीच क्या अंतर है, क्योंकि glGetString चलाना आसान लगता है। –

+0

glGetString आसान है यदि आपके पास पहले से एक वैध OpenGL संदर्भ है (उदाहरण के लिए यदि आप अपने रेंडरर के ऑनसफेसक्रेटेड के भीतर से लॉग इन कर रहे हैं)। ऊपर दिए गए दृष्टिकोण को देखने वाला एकमात्र लाभ यह है कि इसे जीएलएसयूफेस व्यू और रेंडरर को काम करने की आवश्यकता नहीं है। –

+0

एंड्रॉइड प्रलेखन glGetString का उपयोग करने का सुझाव देता है: https://developer.android.com/guide/topics/graphics/opengl.html#version-check ध्यान दें कि, ईवेंट में SEEGLContextClientVersion GLSurfaceView पर लागू नहीं होता है, उदाहरण के लिए : myGLSurfaceView.setEGLContextClientVersion (2), glGetString कुछ ऐसा वापस कर सकता है: "ओपनजीएल ईएस-सीएम 1.1" जो हमारे उद्देश्यों के लिए थोड़ा भ्रामक हो सकता है। यह पोस्ट (हालांकि यह एनडीके से संबंधित है) एक ही मुद्दे का वर्णन करता है: http://stackoverflow.com/questions/25843368/glgetstringgl-version-returns-opengl-es-cm-1-1-but-my-phone- समर्थन-opengl –

3

मैं संस्करण glGetString(GLES20.GL_VERSION) चलाकर समर्थित एमुलेटर पाया। ऐसा प्रतीत होता है कि मैंने जिन अनुकरणकर्ताओं का परीक्षण किया है, वे ओपनजीएल ईएस 3.0 या उच्चतर का समर्थन नहीं करते हैं, लेकिन मैं यह नहीं मानना ​​चाहता कि वे रिपोर्टिंग क्या हैं वास्तव में समर्थन, इसलिए मैं कोई वचन नहीं दे रहा हूं कि यह शब्द अंतिम है

मेरी नेक्सस 5

OpenGL ES 3.0 [email protected] [email protected] ([email protected])

एंड्रॉयड एमुलेटर HAXM का उपयोग करते हुए

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)

Genymotion एमुलेटर

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)

6

नवीनतम एंड्रॉयड एम्यूलेटर अब OpenGL ES 3.0 का समर्थन करता। OpenGL ES 3.0 का उपयोग करने के लिए, अपने विकास मशीन एक मेजबान GPU ग्राफिक्स कार्ड माइक्रोसॉफ्ट विंडोज या लिनक्स पर ओपन 3.2 या उच्चतर का समर्थन करता है कि जरूरत है।

देखें: https://android-developers.googleblog.com/2017/05/android-studio-3-0-canary1.html

OpenGL ES 3.0 in Android Emulator

gles3jni sample app NDK से इसे आज़माने के लिए एक अच्छा विकल्प है।

java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG 

भी मेजबान पर पहली चलाने का प्रयास:

इसके साथ विफल रहता है वर्तमान में समर्थित मेजबान GPUs श्वेतसूचीबद्ध किए जा रहे

echo "GLESDynamicVersion = on" >> ~/.android/advancedFeatures.ini 
devs के रूप में

, और है कि यह ओवरराइड करता है, यह भी देखें: https://issuetracker.google.com/issues/68496715

+0

हाय जमाल, क्या आपने वास्तव में यह अपनी मशीन पर काम किया है? – aaaidan

+0

हां। अगर कोई मुद्दा है तो मुझे बताएं। आप यहां एक बग भी दर्ज कर सकते हैं: https://issuetracker.google.com/issues/new?component=192727 और हम एक गहरी नजर डाल सकते हैं। –

+0

बहुत बढ़िया! अब केवल वल्कन गायब है :-) https://stackoverflow.com/questions/42581120/how-to-create-and-run-an-example-vulkan-app-on-the-android-emulator –

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