EGL函数翻译--eglCreatePlatformWindowSurface

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/

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值