EGL函数翻译–eglCreatePlatformWindowSurface
函数名
EGLSurface eglCreatePlatformWindowSurface(
EGLDisplay display,
EGLConfig config,
void * native_window,
EGLAttrib const * attrib_list);
参数描述
display
指定 EGL 显示连接。
config
指定 EGL 帧缓冲配置,该配置定义了表面可用的帧缓冲资源。
native_window
指定本地窗口。
attrib_list
指定窗口表面的属性列表。可以为 NULL 或空(第一个属性为 EGL_NONE)。
详细描述
eglCreatePlatformWindowSurface 创建一个屏幕上的 EGL 窗口表面并返回其句柄。使用兼容的 EGLConfig 创建的任何 EGL 上下文都可以用于渲染到此表面。
如果 eglCreatePlatformWindowSurface 未能创建窗口表面,则返回 EGL_NO_SURFACE。
native_window 必须属于与 display 相同的平台,EGL 认为返回的 EGLSurface 属于同一平台。定义 display 所属平台的 EGL 扩展还定义了 native_window 参数的要求。
表面属性是以属性-值对的列表形式指定的,并以 EGL_NONE 结束。接受的属性包括:
EGL_GL_COLORSPACE:
指定 OpenGL 和 OpenGL ES 在渲染到表面时使用的颜色空间。如果其值为 EGL_GL_COLORSPACE_SRGB,则假定为非线性、感知均匀的颜色空间,对应的GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 值为 GL_SRGB。如果其值为 EGL_GL_COLORSPACE_LINEAR,则假定为线性颜色空间,对应的 GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 值为 GL_LINEAR。EGL_GL_COLORSPACE 的默认值为 EGL_GL_COLORSPACE_LINEAR。
注意,EGL_GL_COLORSPACE 属性仅由支持 sRGB 帧缓冲的 OpenGL 和 OpenGL ES 上下文使用。EGL 本身不区分多种颜色空间模型。更多信息请参阅 OpenGL 4.6 和 OpenGL ES 3.2 规范中的 “sRGB 转换” 部分。
EGL_RENDER_BUFFER:
指定用于客户端 API 渲染到窗口的缓冲区。如果其值为 EGL_SINGLE_BUFFER,则客户端 API 应直接渲染到可见窗口中。如果其值为 EGL_BACK_BUFFER,则客户端 API 应渲染到后缓冲区。EGL_RENDER_BUFFER 的默认值为 EGL_BACK_BUFFER。
客户端 API 可能无法遵守请求的渲染缓冲区。要确定上下文实际渲染到的缓冲区,请调用 eglQueryContext。
EGL_VG_ALPHA_FORMAT:
指定 OpenVG 在渲染到表面时如何解释 alpha 值。如果其值为 EGL_VG_ALPHA_FORMAT_NONPRE,则 alpha 值不进行预乘。如果其值为 EGL_VG_ALPHA_FORMAT_PRE,则 alpha 值进行预乘。EGL_VG_ALPHA_FORMAT 的默认值为 EGL_VG_ALPHA_FORMAT_NONPRE。
EGL_VG_COLORSPACE:
指定 OpenVG 在渲染到表面时使用的颜色空间。如果其值为 EGL_VG_COLORSPACE_sRGB,则假定为非线性、感知均匀的颜色空间,对应的 VGImageFormat 为 VG_s* 格式。如果其值为 EGL_VG_COLORSPACE_LINEAR,则假定为线性颜色空间,对应的 VGImageFormat 为 VG_l* 格式。EGL_VG_COLORSPACE 的默认值为 EGL_VG_COLORSPACE_sRGB。
任何与 config 相关的 EGL 渲染上下文都可以用于渲染到该表面。使用 eglMakeCurrent 将 EGL 渲染上下文附加到表面。
使用 eglQuerySurface 检索 config 的 ID。
使用 eglDestroySurface 销毁表面。
注意事项
eglCreatePlatformWindowSurface 仅在 EGL 版本为 1.5 或更高时支持。
EGL_VG_ALPHA_FORMAT 和 EGL_VG_COLORSPACE 属性仅由 OpenVG 和 EGL 本身使用。
更多信息请参阅 OpenVG 1.0 规范的第 11.2 节。平台对 alpha 值的使用和解释超出了 EGL 的范围。然而,首选行为是平台在合成窗口表面时忽略 EGL_VG_ALPHA_FORMAT 的值。
错误码
如果 display 和 native_window 不属于同一平台,则会发生未定义行为。
如果表面创建失败,则返回 EGL_NO_SURFACE。
如果 display 不是 EGL 显示连接,则生成 EGL_BAD_DISPLAY。
如果 display 尚未初始化,则生成 EGL_NOT_INITIALIZED。
如果 config 不是有效的 EGL 帧缓冲配置,则生成 EGL_BAD_CONFIG。
如果 native_window 不是与 display 属于同一平台的有效本地窗口,则可能生成 EGL_BAD_NATIVE_WINDOW。
如果 attrib_list 包含无效的窗口属性,或者属性值未被识别或超出范围,则生成 EGL_BAD_ATTRIBUTE。
如果已经有与 native_window 相关联的 EGLSurface(由于之前的 eglCreatePlatformWindowSurface 调用),则生成 EGL_BAD_ALLOC。
如果实现无法为新的 EGL 窗口分配资源,则生成 EGL_BAD_ALLOC。
如果 native_window 的像素格式与 config 要求的颜色缓冲区格式、类型和大小不对应,则生成 EGL_BAD_MATCH。
如果 config 不支持渲染到窗口(EGL_SURFACE_TYPE 属性不包含 EGL_WINDOW_BIT),则生成 EGL_BAD_MATCH。
如果 config 不支持指定的 OpenVG alpha 格式属性(EGL_VG_ALPHA_FORMAT 的值为 EGL_VG_ALPHA_FORMAT_PRE,而 EGL_VG_ALPHA_FORMAT_PRE_BIT 未在 config 的 EGL_SURFACE_TYPE 属性中设置)或颜色空间属性(EGL_VG_COLORSPACE 的值为 EGL_VG_COLORSPACE_LINEAR,而 EGL_VG_COLORSPACE_LINEAR_BIT 未在 config 的 EGL_SURFACE_TYPE 属性中设置),则生成 EGL_BAD_MATCH。
英文连接
链接: https://registry.khronos.org/EGL/sdk/docs/man/