任何人都能解释一下EGL是什么以及它的作用是什么?
如何在Linux上使用EGL和OpenGL-ES?
EGL是硬件和操作系统之间的一层吗?
我想使用没有X的OpenGL渲染,谷歌我发现它:http://dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual-console/那里说它是可能的.我应该使用DRM和EGL.EGL可以创建opengl上下文但需要NativeWindow.DRM可能会提供给我NativeWindow,不是吗?我应该使用KMS吗?我知道我必须拥有开源视频驱动程序.我想要完全OpenGL上下文,但不是OpenGL ES(Linux).也许,有人知道教程或示例代码?
EGL 看起来像是有史以来记录最差的 Khronos 项目,我确实找不到有关该项目的任何具体信息,但它看起来很有前途,最后有一个 GLUT/FreeGlut 的标准化替代方案。
我的观点是,假设我想要在 linux 桌面上的窗口中或没有窗口(没有装饰)的应用程序中使用 EGL 上下文,作为程序员,我应该向谁咨询以获得该 EGL 上下文?例如,如果我使用 QT,那么 QT 是否应该实现 EGL?奥格?我?
我将 EGL 与 Xlib 和 OpenGL 一起使用。当我直接在窗户上画画时,一切都很好。现在我试图使用像素图作为 EGL 表面,但 OpenGL 根本没有改变它。
我使用 OpenGL 用蓝色清洁背景。这是我得到的:
这是证明问题的最小示例(绘制这个垃圾)。
更新:我添加了错误检查并发现eglCopyBuffers产生EGL_BAD_NATIVE_PIXMAP. 文档告诉这可能在两种情况下发生:如果实现不支持本机像素图或本机像素图参数无效。他们俩似乎都不太可能。如果我可以毫无错误地创建像素图表面,我相信实现支持本机像素图。如果我可以使用本机方法在像素图上绘制,例如XFillRectangle我相信像素图是有效的。
更新:我在带有 Ubuntu Gnome 的笔记本电脑上运行它。它有两个显卡:Intel HD Graphics 5500(driver=i915) 和 Nvidia GeForce 920m(driver=nvidia)。es2_info 输出的主线(完整版):
EGL_VERSION: 1.4
EGL_VENDOR: NVIDIA
EGL_CLIENT_APIS: OpenGL_ES OpenGL
GL_VERSION: OpenGL ES 3.2 NVIDIA 375.66
GL_RENDERER: GeForce 920M/PCIe/SSE2
代码:
EGL_VERSION: 1.4
EGL_VENDOR: NVIDIA
EGL_CLIENT_APIS: OpenGL_ES OpenGL
GL_VERSION: OpenGL ES 3.2 NVIDIA 375.66
GL_RENDERER: GeForce 920M/PCIe/SSE2