什么是EGL以及如何使用它?

16

有人能解释一下EGL是什么以及它的作用吗?

我如何在Linux上使用EGL与OpenGL-ES?

EGL是硬件和操作系统之间的一层吗?

2个回答

16

EGL是一个与窗口系统无关的API,它相当于GLX和WGL API,分别用于在X和Microsoft Windows中支持OpenGL。它是Khronos渲染API(如OpenGL ES或OpenVG)与底层本地平台窗口系统之间的接口。它处理图形上下文管理、表面/缓冲区绑定和渲染同步,并使用其他Khronos API实现高性能、加速、混合模式2D和3D渲染。

EGL Architecture

有一个名为EGL的Mesa实现,在Mesa EGL Wiki中有涉及。实际上,你不能使用 XEGL / EGL

如果你在Linux上运行且不需要X,则可以查看Wayland,它是构建在MESA之上的替代服务器。


1
好吧,还有Wayland……如果我没记错的话,你可以在其下使用EGL(它本身也使用它)。Mesa中确实包含EGL,但我不确定你可以用它做什么,而且我认为许多发行版没有将其打开(如果我没记错,Wayland现在使用它,以前没有)。请参见http://www.mesa3d.org/egl.html,尽管那可能已经过时了,从那里看来,如果你的显卡有gallium驱动程序,EGL就可以工作。 - Spudd86
1
XEGL与您是否可以在应用程序中使用EGL无关,XEGL是将Xorg服务器放在EGL之上,而不支持在X下使用EGL。 - Spudd86
@spudd86 感谢提供 Mesa 链接 - 我会添加的。我会澄清一下关于 XEGL 的描述。 - Richard Harrison
Wayland是X11的替代品,但它不是一个服务器。Wayland是由合成器(如sway、mutter等)实现的协议。客户端应用程序可以通过使用Wayland协议与合成器通信。就是这样。 - Umur Gedik

0

我认为最好阅读权威参考资料,例如this,我不觉得改写有价值。

那篇文章中似乎提到了一些Linux的实现。你不能指望别人在这里给你提供详细的教程。相反,尝试使用这些参考资料,在遇到困难时提出具体问题。

也许你可以将EGL视为一种专用的图形“操作系统”,但个人认为它只是另一个抽象图形的API。


1
EGL基本上是一个“可移植”的API,其目标与GLX和WGL相同,提供创建OpenGL(实际上是OpenGLES)上下文所需的内容(以及一些相关的东西,如本地像素映射等)。 - Spudd86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接