Я новичок в 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 приводит к тому, что мой поток рендеринга получает исключение.
GLSurfaceView
, это будет код, в котором вы настраиваете свойRenderer
, возможно, в конструктореGLSurfaceView
. - person Reto Koradi   schedule 31.12.2014