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

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

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

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

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

Другие решения

Виртуальное устройство Genymotion Nexus 5 Android 5.1.0 API 22 сообщает только об 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 supportEs2 = configurationInfo.reqGlEsVersion> = 0 × 20000;» не работает. Он всегда вернет false. Вы можете добавить «|| Build.FINGERPRINT.startsWith («generic») »или просто закомментируйте эти проверки и предположите, что OpenGL ES 2 поддерживается при работе на эмуляторе.

3) если произойдет сбой с «не найден конфиг», попробуйте добавить эту строку перед вызовом «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.

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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector