Python 上的所有 GUI 工具包都是 C/C++ 代码的包装器。在 Java 上,有一些像 Swing 这样的“纯”Java 工具包,但它们依赖于 C 代码进行绘图和处理用户输入的最低级别。Java VM 中没有对图形之类的特殊支持。
至于 GUI 如何在最低级别呈现,这取决于。在 Windows 上,不允许用户模式软件直接访问视频硬件。最终,任何 C/C++ GUI 代码都必须通过 GDI 或 Direct3D 进行渲染。内核模式 GDI 代码能够通过写入帧缓冲区来完成所有的渲染,但也支持通过将操作传递给显示驱动程序来加速。另一方面,Direct3D 内核代码将几乎所有内容都传递给驱动程序,驱动程序又将所有内容传递给 GPU。几乎所有的内核模式代码都是用 C 编写的,而在 GPU 上运行的代码是手工编码的汇编代码和用高级着色语言编写的代码的混合体。
请注意,GPU 汇编语言与 Intel x86 汇编语言非常不同,并且在制造商和 GPU 代之间差异很大。
我不确定当前在 Linux 和其他 Unix 类型的操作系统上的做法是什么,但过去很常见的是让作为用户模式进程的 X 服务器直接访问帧缓冲区。X 服务器中的 C 代码最终负责渲染。现在,随着 GPU 加速变得更加普遍,这种情况可能至少有所改变。