Вопрос: Поддерживаются ли объекты OpenGL ES Vertex Array в любом Android-эмуляторе?


Я пытался запустить код, который использует VAO на C ++ с помощью Android NDK и работает на эмуляторе. Я ожидаю, что смогу использовать glDeleteVertexArraysOES, glGenVertexArraysOES, а также glBindVertexArrayOES,

Я обнаружил, что эмулятор не запускает код, даже когда я использую OpenGL ES 2 и динамически свяжу расширения с помощью этого решения: Поддерживаются ли объекты вершинного массива в Android OpenGL ES 2.0 с помощью расширений?

Я побежал glGetString(GL_EXTENSIONS) на эмуляторе Nexus 4, работающем на уровне API 19, и ускорении GPU и получил следующее:

GL_EXT_debug_marker
GL_OES_EGL_image
GL_OES_depth24
GL_OES_depth32
GL_OES_element_index_uint
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_compressed_paletted_texture
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth_texture
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_packed_depth_stencil
GL_OES_vertex_half_float

Я предполагаю, что мне нужно увидеть GL_OES_vertex_array_object для использования объектов массива вершин. Таким образом, похоже, что это не подходит для этого конкретного эмулятора.

Знаете ли вы, можно ли использовать объекты вершинного массива в OpenGL ES на любом существующем эмуляторе Android (третье лицо или иначе)? Если да, то как?


14


источник


Ответы:


Официально это предполагается поддерживать <d:gl-extensions> вставить devices.xml  под каталогом пользователя, но из того, что я могу сказать из оглядываться , эта функциональность в настоящее время не работает. Возможно, он работал некоторое время в прошлом, но если это так, то с последней датой он больше не работает с последними версиями NDK и Android Studio. (Значит, моя щедрость, если найдется какой-нибудь лучший ответ.)


1



Виртуальное устройство Nexus 5 Android 5.1.0 API 22 от Genymotion сообщает только OpenGL ES версии 2.0  поддержка.

Вы можете использовать приведенный ниже код, чтобы проверить поддержку в будущих изображениях системы и эмуляторы:

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);
    }

}

это из Поддерживает ли эмулятор Android OpenGL ES 3.0?


Необходимо изменить параметры в эмулятор  :

1) Вам нужно отредактировать изображение своего эмулятора, перейти в раздел «Оборудование» и добавить «Эмуляция графического процессора» и установить его значение «true».

2) В эмуляторе есть ошибка, так что эта строка: «final boolean supportsEs2 = configurationInfo.reqGlEsVersion> = 0 × 20000;» не работает. Он всегда будет возвращать false. Вы можете добавить «|| Build.FINGERPRINT.startsWith («generic») »или просто закомментируйте эти проверки и предположите, что OpenGL ES 2 поддерживается при запуске на эмуляторе.

3) если он сработал с «no config found», попробуйте добавить эту строку перед вызовом «setRenderer (...)»: «glSurfaceView.setEGLConfigChooser (8, 8, 8, 8, 16, 0);

Попробуй это.


0



Не уверен, насколько привязано ваше приложение к платформе Android, но, я думаю, вы можете адаптировать и протестировать ваш основной 3D-движок с помощью эмулятора Adreno, PowerVR или Mali SDK. Вдоль библиотек libEGL и libGLESv2 есть также несколько доступных инструментов для совместной работы, включая живую отладку для OpenGL-ES.

Изменить: VAO - это основные функции GLES 3.0. Эти функции являются псевдонимами для glDeleteVertexArrays, glGenVertexArrays и glBindVertexArray. Итак, если SDK предлагает поддержку GLES 3.0, он поддерживает OES_VERTEX_ARRAY_OBJECTS.

ВАЖНО: Убедитесь, что ваш ПК поддерживает OpenGL 3.x или выше, в соответствии с требованиями SDK.

Я разрабатываю эмулятор для Java API OpenGL-ES для Android, используя выше SDK libs. Он находится на очень ранней стадии и может не помочь вам сейчас, но он выполняет простые простые примеры. Одной из причин для разработки этого java-эмулятора является ограниченная поддержка GLES от эмуляторов ОС, таких как Genymotion и другие. Теперь я могу полагаться на собственный SDK от разработчиков GPU. https://github.com/AlessandroBorges/madri-gles


0



Поддерживаются ли объекты OpenGL ES Vertex Array в любом Android-эмуляторе? | Programmerz.ru