사용한 장치가 OpenGL ES 2.0을 지원하는지 동적으로 확인해야합니다. 어떻게 할 수 있습니까?안드로이드 장치가 OpenGL ES 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()는 사양에 따라 '응용 프로그램에서 선언 한 하드웨어 구성 기본 설정에 대한 정보를 검색 할 수있는 ConfigurationInfo를 반환합니다. 이는 AndroidManifest.xml의
@jeroent 'ConfigurationInfo'클래스가 사양에 명시되어 있지만 'getSystemService'의 'ACTIVITY_SERVICE'컨텍스트를 사용하면 전역 시스템 상태와 상호 작용하기위한 'ActivityManager'가 검색됩니다. – Foggzie
실례합니다. 그리고 지원 여부를 확인하는 방법 3.0 –
결정 OpenGL을 확장 : OpenGL을
구현이 지원됩니다는 OpenGL ES API에 확장의 측면에서 안드로이드 장치에 따라 다릅니다. 이러한 확장에는 텍스처 압축이 포함되지만 일반적으로 OpenGL 기능 세트의 다른 확장도 포함됩니다.
은 특정 장치에 지원되는 텍스처 압축 포맷을 다른 OpenGL을 확장 확인하려면 다음
지원되는 텍스처 압축 포맷을 확인하려면 대상 장치에서 다음 코드를 실행
String extensions = javax.microedition.khronos.opengles.GL10.glGetString(GL10.GL_EXTENSIONS);
경고 :이 호출의 결과는 장치에 따라 다릅니다! 일반적으로 지원되는 압축 유형을 판별하려면 여러 대상 장치에서이 호출을 실행해야합니다. 이 메서드의 출력을 검토하여 장치에서 지원되는 OpenGL 확장명을 확인하십시오.
이 방법은 복잡합니다. GL_EXTENSIONS를 사용하여 glGetString()을 사용하려는 경우 GL_VERSION을 사용하여 호출 한 다음 나중에 문자열을 구문 분석합니다. ConfigurationInfo 클래스는이 문제를 빠르고 쉽게 해결하도록 설계되었습니다. – Foggzie
OpenGL ES는 사용하지 않았지만 OpenGL과 동일한 glGetString
메서드를 사용합니다. 이 트릭을 수행해야합니다
당신이 시장을 restrct하려면 다음 매니페스트 2.0 만 장치에, 다른 사람이 언급 한 방법으로 코드를 확인하는 것 외에도 http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetString.xml
:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
둘 다 수행해야합니다. 사람들에게 APK를 부적합한 장치에 직접 설치하고 이상한 예외를 처리해야했습니다. 도
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. 장치가 자동 초점을 지원하는지 확인하는 방법
- 3. HTC Magic Support OpenGl ES 2.0을 사용합니까?
- 4. GPU가없는 안드로이드 폰에서 OpenGL ES 2.0을 사용 하시겠습니까?
- 5. iPad 또는 iPhone이 OpenGL ES 2.0을 지원합니까?
- 6. OpenGL ES 2.0을 사용하여 광원을 어떻게 적용합니까?
- 7. Android에서 OpenGL ES 2.0을 사용하는 2D 그래픽
- 8. 안드로이드 OpenGL ES 법선
- 9. LibGDX - OpenGL ES 2.0을 사용하는 원근 카메라
- 10. Android Emulator는 OpenGL ES 2.0을 지원합니까?
- 11. OpenGL ES 2.0을 사용하여 객체를 어떻게 회전합니까?
- 12. Libgdx OpenGL ES 2.0을 사용하지 않음
- 13. AVD Android 4 : OpenGL ES 2.0 지원
- 14. 윈도우에서 OpenGL es 2.0을 개발하는 가장 좋은 방법을 찾고 있습니다.
- 15. OpenGL - 1.1에 비해 OpenGL ES 2.0을 배우는 것이 얼마나 어렵습니까?
- 16. OpenGL : 사용자가 glGenBuffers()를 지원하는지 확인하는 방법?
- 17. 는 OpenGL ES 안드로이드 혼란
- 18. OpenGL 또는 OpenGL ES
- 19. 안드로이드 OpenGL ES 범프 매핑
- 20. 안드로이드 OpenGL ES 2.0 텍스쳐
- 21. 안드로이드, OpenGL ES 1.0, 알파
- 22. 실제 핸드셋이 없으면 안드로이드 OpenGL 2.0을 테스트 할 수 있습니다.
- 23. 안드로이드에서 OpenGL ES 2.0을 사용하면 프레임 버퍼에서 렌더링 할 때 멀티 샘플링을 유지하는 방법이 있습니까?
- 24. 안드로이드 용 OpenGL ES, 모델링 가구
- 25. 브라우저가 기본적으로 MP3를 지원하는지 확인하는 자바 스크립트 방법이 있습니까?
- 26. OpenGL ES 2.0을 사용하는 iPhone/iPad의 콘쥬 게이트 그라디언트
- 27. OpenGL ES 2.0을 지원하는 Android 개발 플랫폼 : 구입처?
- 28. GL_Trianglestrip OpenGL ES 2.0을 사용하여 쿼드 요소를 그립니다.
- 29. OpenGL ES 1.1에서 OpenGL ES 2.0으로 전환
- 30. 안드로이드 장치가 꺼져 있는지 확인하는 방법
GLES20는 API 레벨 8에 추가되고, 그 대신에 확인하기에 충분하지 않겠습니까? – harism
harism : 그것은 사실이 아닙니다. Android 2.2.1과 함께 HTC Wildfire를 사용하고 있습니다. OpenGL ES 2.0을 지원하지 않습니다. – petrnohejl