OpenGL 3 на Galaxy S4 Android 4.4.2

Я новичок в Android-разработке, поэтому могу что-то упустить. Насколько я понимаю, Samsung Galaxy S4 под управлением Android 4.4.2 должен поддерживать OpenGL ES 3. Однако, когда я вызываю glGetString(GL_VERSION) (после получения контекста OpenGL ES 2.0), я получаю OpenGL ES 2.0 build 1.10@235947.. Я бы ожидал получить строку OpenGL ES 3.0, если бы она поддерживалась.

Если я попытаюсь принудительно получить контекст OpenGL ES 3.0, моему потоку рендеринга будет предоставлено исключение, а сообщение журнала будет throwEglException tid=1477 createContext failed: .

Действительно странно то, что если я использую контекст 2.0, вызовы openGL ES 3.0 работают нормально (например, буферы массива), я просто получаю сообщения журнала о том, что вызов not implemented. !!??

Мой AndroidManifest.xml имеет:

<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="19" />
<uses-feature android:glEsVersion="0x00030000" android:required="true" />

Есть ли что-то, что я не устанавливаю, чтобы получить OpenGL 3.0? Android 4.4.2 на Galaxy S4 (Verizon BTW) на самом деле не поддерживает OpenGL ES 3?

Вот моя настройка рендерера в моем конструкторе GLSurfaceView:

public BasicGLSurfaceview(Context context) {
    super(context);
    setEGLContextClientVersion(2);
    MyRenderer renderer = new MyRenderer(context);
    setRenderer(renderer);
    ...

Если я передам 3 в setEGLContextClientVersion() вместо 2, моему потоку рендеринга будет предоставлено исключение «createContext failed:». Я также создал свою собственную фабрику контекстов и использовал setEGLContextFactory(), но результаты те же. Запрос версии выше 2 приводит к тому, что мой поток рендеринга получает исключение.


person mitchpb    schedule 31.12.2014    source источник
comment
Пробовали ли вы образец NDK gles3jni? android.googlesource.com/platform /разработка/+/мастер/ndk/   -  person Kazuki Sakamoto    schedule 31.12.2014
comment
Можете ли вы показать код, в котором вы создаете свой контекст? Если вы используете GLSurfaceView, это будет код, в котором вы настраиваете свой Renderer, возможно, в конструкторе GLSurfaceView.   -  person Reto Koradi    schedule 31.12.2014
comment
Я пробовал NDK gles3jni. Он просто останавливается.   -  person mitchpb    schedule 02.01.2015
comment
Вот мой код настройки рендерера из моего GLSurfaceView: public BasicGLSurfaceview(Context context) { super(context); setEGLContextClientVersion(2); Средство визуализации MyRenderer = новый MyRenderer (контекст); // setEGLContextFactory(new MyGLSurfaceView.DefaultContextFactory()); setRenderer (рендерер);   -  person mitchpb    schedule 02.01.2015
comment
Мне кажется, что ваше устройство не поддерживает ES 3.0 с имеющейся у вас сборкой Android.   -  person Reto Koradi    schedule 04.01.2015


Ответы (1)


Samsung Galaxy S4 поставлялся с двумя разными процессорами, в зависимости от страны. Версия GT-I9505 с процессором Snapdragon поддерживает OpenGL ES 3 под Android версии 4.3 или более поздней, а версия GT-I9500 с процессором Exynos — нет.

См.: Статья в Википедии См.: Статья SAMMOBILE< /а>

person Mike Brodie    schedule 15.04.2015