我想编译一个 Android OpenGL 控制台应用程序,您可以直接从控制台启动 Android x86 运行,或者从 Android x86 GUI 内的 Android 终端应用程序运行。
这个帖子 (如何在 Android NDK 中创建新的 NativeWindow? https://stackoverflow.com/questions/5375765/how-can-i-create-a-new-nativewindow-in-android-ndk)提出了类似的问题。然而,答案说要下载并构建整个 android 源代码,因为这里的测试(https://android.googlesource.com/platform/frameworks/base/+/refs/heads/gingerbread-release/opengl/tests https://android.googlesource.com/platform/frameworks/base/+/refs/heads/gingerbread-release/opengl/tests) 例如 (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/gingerbread-release/opengl/tests/gl_basic/gl_basic.cpp https://android.googlesource.com/platform/frameworks/base/+/refs/heads/gingerbread-release/opengl/tests/gl_basic/gl_basic.cpp) 具有诸如“#include ”之类的依赖关系
我想使用 NDK 理想地构建应用程序,但如果需要,我可以在 Ubuntu 上构建它。
gl_basic.cpp 会很棒,但我不想为了构建这样一个小程序而下载并构建整个 Android 源代码(gl_basic.cpp 只有 364 行代码!)
我尝试使用 ndk-build.cmd 构建 gl_basic.cpp,但找不到 FramebufferNativeWindow.h...然后,如果我继续将更多头文件下载到本地项目,我最终会遇到链接错误。我想知道是否有更简单的方法来使用 NDK 构建像 gl_basic.cpp (带有 main() 函数的 Android OpenGL 可执行文件)这样的东西。
PS 我知道编写 Android 应用程序的正常方法是创建 APK,但我不想这样做 - 我想要一个带有 main() 和 OpenGL 的独立 Linux 可执行文件,我可以从 Android 终端仿真器应用程序运行它在 Android 内部运行...基于 x86 的 Android(不是 ARM)。
另外让我补充一点,我知道您可以将“include $(BUILD_EXECUTABLE)”放入 Android.mk 文件中,将“APP_ABI := x86”放入 Application.mk 文件中。我使用 ndk-build.cmd 构建 Android 可执行文件没有问题,该可执行文件从 x86 Android 上的 Android 终端模拟器运行并使用 printf() 打印“hello world”。
我遇到的问题是使用 OpenGL 创建这样的可执行文件。我认为神奇的一部分是 FramebufferNativeWindow.h,但它也有自己的包含...我想知道我是否可以使用 ndk-build.cmd (甚至在 Ubuntu 上使用 make 和 gcc 构建类似于 gl_basic.cpp 的东西)将在 Android 终端模拟器中运行...但我不想下载并构建整个 Android 源代码树。
摘要:如何使用 NDK 中包含的标头和库创建本机窗口?我知道可以通过从 libui 调用 android_createDisplaySurface() 来完成。但是,libui 并未包含在 NDK 中。那么如何使用纯 C++(无 Java)代码从 NDK 创建本机窗口(供 EGL 和 OpenGL 使用)? eglCreateWindowSurface() 的第三个参数是 NativeWindowType,所以我需要以某种方式创建一个 NativeWindow。
摘要:我的最终目标是编写一个带有 main() 函数的 C++ 可执行文件,该函数可以绘制 OpenGL 三角形,并且可以在 Android x86 控制台模式上运行。没有Java。