首页 > 解决方案 > 在没有虚拟设备的情况下测试我的 OpenGL ES 3.2 应用程序?

问题描述

我有一个完全通过这两个功能运行的 Android 应用程序:

extern "C"
{
    JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj,  jint width, jint height);
    JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj);
};

JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj,  jint width, jint height)
{
    setupGraphics(width, height);
}

JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj)
{
    renderFrame();
}

由我来执行什么setupGraphicsrenderFrame做什么。

一旦虚拟设备打开,我的电脑在使用 Android Studio 时会变得非常慢。首先,我想直接将我的应用程序作为 C++ 程序进行测试,而不需要目标设备。这样,我可以修复任何需要修复的东西,当我认为一切正常时,我可以在目标设备上再次对其进行测试。

问题:我不知道如何使用 OpenGL ES 3.2 库在 C++ 中创建渲染循环。那可能吗?还是我注定总是用虚拟设备测试我的 OpenGL ES 3.2 代码?

标签: androidc++android-studioopengl-es

解决方案


我使用PVRVFrame将 OpenGLES 代码路径添加到我的游戏的 Windows 版本中。我只到了 3.0,但我认为 3.2 支持就足够了。我发现 GLES 下的性能明显低于 DX11 或 Vulkan 代码路径,但我们相对要求较高的(移动端)游戏仍然可以在中级 PC 上玩。

教程现在有点老了,但可能有用 - 它提到了在 Windows 上运行 GLES 的一些其他选项(我只尝试过 PVRVFrame,所以我不知道它如何比较)。


推荐阅读