2

我是安卓新手,想玩模拟器。

我想做的是创建自己的虚拟硬件,可以收集 OpenGL 命令并生成 OpenGL 图形。有人告诉我,为了做到这一点,我需要编写一个 linux 内核驱动程序来启用与硬件的通信。此外,我需要编写一个 Android 用户空间库来调用内核驱动程序。

首先,我计划制作一个非常简单的硬件,它只执行 1 或 2 个命令。

这里有人做过这样的事情吗?如果是这样,您是否有任何提示或可能的额外信息链接?对于任何反馈,我们都表示感谢。

4

2 回答 2

1

编写硬件仿真是一项棘手的任务,绝非易事。因此,如果您真的想这样做,我不会从头开始。在您的情况下,我首先从一些更简单的开始(因为许多库已经在客户机和主机端到位):通过 qemu 为普通 Linux 实现 OpenGL 直通。需要做些什么:

首先,您将一些虚拟 GPU 添加到 qemu 中,这还涉及添加一个使用 OpenGL 的新图形输出模块(目前 qemu 使用 SDL)。接下来,您在 Linux 内核中创建 DRI/DRM 驱动程序,它将在客户机上运行(Android 使用自己的图形系统,但学习 DRI/DRM 很好),以及在 Mesa 中。在主机端,您必须在 OpenGL 调用中翻译来自 qemu 的内容。由于主机端 GPU 正在完成所有艰苦的工作,因此您的 DRI/DRM 部分将非常少,只需构建一个 brigde。

于 2011-04-23T09:42:31.143 回答
0

Android SDK 23 自带的模拟器已经运行了 OpenGL,你可以用官方的MoreTeapots例子试试这个:https ://github.com/googlesamples/android-ndk/tree/a5fdebebdb27ea29cb8a96e08e1ed8c796fa52db/MoreTeapots

我很确定它是硬件加速的,因为所有这些多边形都以 60 FPS 的速度渲染。

Studio 的 AVD 创建 GUI 有一个硬件加速选项,它应该控制以下选项:

==> config.ini <==
hw.gpu.enabled=yes
hw.gpu.mode=auto

==> hardware-qemu.ini <==
hw.gpu.enabled = true
hw.gpu.mode = host
hw.gpu.blacklisted = no

~/.android/avd/Nexus_One_API_24.a/.

于 2016-06-26T14:17:42.350 回答