EGL提供了两种方法来创建带有本地支持存储的EGL曲面,即eglCreateWindowSurface和egCreatePixmapSurface。两者都创建了EGL曲面,与本地图形层进行交互。(与不与本机图形层交互的pbuffer曲面相反。)
什么是像素映射好的窗口不是?(即为什么EGL要区分两种类型的曲面?)我很难理解其中的区别。
发布于 2014-01-22 12:53:16
EGL像素映射是用来反映由底层窗口系统支持的任何类似像素的概念。术语来源于X11。EGL规范说:
EGL定义了几种类型的绘图表面,统称为EGLSurfaces。其中包括用于屏幕上呈现的窗口;用于屏幕外呈现的pbuffers;以及用于屏幕外呈现为可通过本机API访问的缓冲区的像素映射。EGL窗口和像素映射绑定到本机窗口系统窗口和像素映射。
像素映射和窗口的主要区别是:
如果底层的窗口系统不支持像素映射,那么EGL像素映射就没有真正的用途(而且EGL实现可能不会公开它们)。它们的提供只是为了让您能够呈现给X11像素映射(或类似的东西),以防您出于某种原因需要这样做。
一个例子可能是:您希望使用GPU呈现一个3D对象,然后使用它作为X11游标。在这种情况下,您可以创建一个像素映射,创建一个EGL像素映射可绘制,绘制一些东西,然后使用XCreateCursorFromPixmap将您的像素映射转换为一个光标(这是EGL规范所指的那种“本地API”的例子)。可能存在比这更有用的例子。
发布于 2013-12-09 15:42:56
也许egl规格的这个部分有帮助:
EGL还支持渲染表面,其颜色缓冲区存储在本地像素映射中。像素映射不同于窗口,因为它们通常在屏幕外(不可见)图形或CPU内存中分配。像素映射不同于pbuffers,因为它们确实具有关联的本机像素映射和本机像素映射类型,并且可以使用客户端API以外的API呈现像素映射。
https://stackoverflow.com/questions/19668758
复制相似问题