一:概述
当应用程序创建 OpenGL 上下文时,它通常需要申请帧缓冲(Framebuffer,即画布)。在 X11 体系下,应用程序不会直接向内核的 DRM 模块请求创建帧缓冲,而是通过 X 服务器进行申请。
虽然从技术上讲,应用程序可以直接使用 DRM 接口创建帧缓冲对象(BO),但为了将其与 X 窗口系统管理的窗口进行关联,应用程序仍然需要通过 GLX 或 EGL 进行间接交互,让 X 服务器管理这些缓冲区。这使得 X 服务器能够掌握窗口的帧缓冲信息,并在需要时将其内容显示到屏幕上。
由于帧缓冲是应用程序的“画布”,创建完成后,X 服务器会将相应的缓冲区对象(BO)信息返回给应用程序,以便 OpenGL 继续进行渲染操作。在现代 Linux 图形栈中,Wayland 取代 X 服务器时,客户端应用程序通常会直接使用 EGL 创建缓冲区,并通过 Wayland 协议与合成器(Compositor)交互,而不再依赖 X 服务器管理帧缓冲。
应用程序首先建立数学模型,并使用 OpenGL API 将模型的顶点数据写入 GPU 的顶点缓冲对象(VBO,Vertex Buffer Object)。随后,应用程序更新 GPU 状态