Opengl es 为Android Emulator创建虚拟硬件、内核和qemu,以生成OpenGL图形

Opengl es 为Android Emulator创建虚拟硬件、内核和qemu,以生成OpenGL图形,opengl-es,android-emulator,linux-kernel,qemu,Opengl Es,Android Emulator,Linux Kernel,Qemu,我是android新手,希望能玩一下模拟器 我想做的是创建我自己的虚拟硬件,它可以收集OpenGL命令并生成OpenGL图形。 有人告诉我,为了做到这一点,我需要编写一个linux内核驱动程序来启用与硬件的通信。此外,我还需要编写一个Android用户空间库来调用内核驱动程序 首先,我计划制作一个非常简单的硬件,只执行,比如说1或2个命令 这里有人做过这样的事吗?如果有的话,你有任何提示或其他信息的链接吗? 任何反馈都将不胜感激。编写硬件仿真是一项棘手的任务,绝非易事。所以如果你真的想这么做,我

我是android新手,希望能玩一下模拟器

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

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

这里有人做过这样的事吗?如果有的话,你有任何提示或其他信息的链接吗?
任何反馈都将不胜感激。

编写硬件仿真是一项棘手的任务,绝非易事。所以如果你真的想这么做,我不会从头开始。在您的例子中,我首先从一些更简单的开始(因为许多库已经在来宾和主机端就位):通过qemu为普通Linux实现OpenGL传递。需要什么:


首先,将一些虚拟GPU添加到qemu中,这还包括添加一个使用OpenGL的新图形输出模块(到目前为止,qemu使用SDL)。接下来,您将在Linux内核中创建DRI/DRM驱动程序,该驱动程序将在来宾系统上运行(Android使用自己的图形系统,但对于学习DRI/DRM来说是可以的),也可以在Mesa中运行。在主机端,您必须在OpenGL调用中转换来自qemu的内容。由于主机端GPU正在做所有的艰苦工作,您的DRI/DRM部分将非常简单,只需构建一个brigde。

Android SDK 23附带的模拟器已经运行OpenGL,您可以使用官方的
Moretapots
示例来尝试这一点:

我很确定它是硬件加速的,因为所有这些多边形都以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

==>config.ini hardware-qemu.ini您忘记警告qemu内部几乎没有文档。OP可能需要阅读并完全理解图形子系统代码,以便开始新的设计。