EGL函数翻译–eglCreatePbufferSurface
函数名
EGLSurface eglCreatePbufferSurface( EGLDisplay display,EGLConfig config,EGLint const * attrib_list);
参数描述
display
指定 EGL 显示连接。
config
指定用于该表面(PBuffer)的帧缓冲区的资源配置,
attrib_list
指定像素缓冲区表面的属性。可以为 NULL 或空(第一个属性为 EGL_NONE)。
详细描述
eglCreatePbufferSurface 创建一个离屏的像素缓冲区表面并返回其句柄。
如果 eglCreatePbufferSurface 无法创建像素缓冲区表面,则返回 EGL_NO_SURFACE。
表面属性通过属性-值对列表指定,以 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_HEIGHT
指定像素缓冲区表面的所需高度。默认值为 0。
EGL_LARGEST_PBUFFER
请求在分配失败时,分配最大可用的像素缓冲区表面。可以使用 eglQuerySurface 获取分配的像素缓冲区的尺寸。默认值为 EGL_FALSE。
EGL_MIPMAP_TEXTURE
指定是否为 mipmap 分配存储空间。如果属性值为 EGL_TRUE 且 EGL_TEXTURE_FORMAT 不是 EGL_NO_TEXTURE,则会为 mipmap 预留空间。默认值为 EGL_FALSE。
EGL_TEXTURE_FORMAT
指定当 pbuffer 绑定到纹理映射时创建的纹理的格式。可能的值为 EGL_NO_TEXTURE、EGL_TEXTURE_RGB 和 EGL_TEXTURE_RGBA。默认值为 EGL_NO_TEXTURE。
EGL_TEXTURE_TARGET
指定当 pbuffer 创建的纹理格式为 EGL_TEXTURE_RGB 或 EGL_TEXTURE_RGBA 时,创建的纹理的目标。可能的值为 EGL_NO_TEXTURE 或 EGL_TEXTURE_2D。默认值为 EGL_NO_TEXTURE。
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。
EGL_WIDTH
指定像素缓冲区表面的所需宽度。默认值为 0。
任何使用与 config 相关的 EGL 渲染上下文都可以用于渲染到该表面。使用 eglMakeCurrent 将 EGL 渲染上下文附加到该表面。
使用 eglQuerySurface 获取分配的像素缓冲区表面的尺寸或 config 的 ID。
使用 eglDestroySurface 销毁该表面。
注意
EGL_GL_COLORSPACE 属性和属性 EGL_RENDERABLE_TYPE 的值 EGL_OPENGL_ES3_BIT 仅在 EGL 版本为 1.5 或更高版本时支持。
属性 EGL_RENDERABLE_TYPE、EGL_VG_ALPHA_FORMAT 和 EGL_VG_COLORSPACE 以及相应的属性值仅在 EGL 版本为 1.2 或更高版本时支持。
如果 config 属性 EGL_TEXTURE_FORMAT 的值不是 EGL_NO_TEXTURE,则 pbuffer 的宽度和高度指定零级纹理图像的大小。
如果指定了 EGL_LARGEST_PBUFFER 且 pbuffer 将用作纹理(即 EGL_TEXTURE_TARGET 的值为 EGL_TEXTURE_2D,且 EGL_TEXTURE_FORMAT 的值为 EGL_TEXTURE_RGB 或 EGL_TEXTURE_RGBA),则将保留纵横比,并且新的宽度和高度将是纹理目标的有效尺寸(例如,如果底层的 OpenGL ES 实现不支持非 2 的幂纹理,则宽度和高度都将是 2 的幂)。
当将纹理渲染到 pbuffer 并切换要渲染的纹理图像(例如,从渲染一个 mipmap 级别切换到渲染另一个 mipmap 级别)时,深度缓冲区和模板缓冲区的内容可能不会被保留。
错误描述
如果上下文创建失败,则返回 EGL_NO_SURFACE。
如果 display 不是 EGL 显示连接,则生成 EGL_BAD_DISPLAY 错误。
如果 display 尚未初始化,则生成 EGL_NOT_INITIALIZED 错误。
如果 config 不是 EGL 帧缓冲区配置,则生成 EGL_BAD_CONFIG 错误。
如果 attrib_list 包含无效的像素缓冲区属性,或如果属性值无效或超出范围,则生成 EGL_BAD_ATTRIBUTE 错误。
如果 attrib_list 包含任何属性 EGL_MIPMAP_TEXTURE、EGL_TEXTURE_FORMAT 或 EGL_TEXTURE_TARGET,而 config 不支持 OpenGL ES 渲染(例如,EGL 版本为 1.2 或更高,且 config 的 EGL_RENDERABLE_TYPE 属性不包含 EGL_OPENGL_ES_BIT、EGL_OPENGL_ES2_BIT 或 EGL_OPENGL_ES3_BIT 之一),则生成 EGL_BAD_ATTRIBUTE 错误。
如果没有足够的资源来分配新的表面,则生成 EGL_BAD_ALLOC 错误。
如果 config 不支持渲染到像素缓冲区(EGL_SURFACE_TYPE 属性不包含 EGL_PBUFFER_BIT),则生成 EGL_BAD_MATCH 错误。
如果 EGL_TEXTURE_FORMAT 属性不是 EGL_NO_TEXTURE,且 EGL_WIDTH 和/或 EGL_HEIGHT 指定的尺寸无效(例如,纹理尺寸不是 2 的幂,而底层的 OpenGL ES 实现不支持非 2 的幂纹理),则生成 EGL_BAD_MATCH 错误。
如果 EGL_TEXTURE_FORMAT 属性为 EGL_NO_TEXTURE,且 EGL_TEXTURE_TARGET 为 EGL_NO_TEXTURE 以外的值;或者 EGL_TEXTURE_FORMAT 为 EGL_NO_TEXTURE 以外的值,且 EGL_TEXTURE_TARGET 为 EGL_NO_TEXTURE,则生成 EGL_BAD_MATCH 错误。
如果 config 不支持指定的 OpenVG alpha 格式属性(EGL_VG_ALPHA_FORMAT 的值为 EGL_VG_ALPHA_FORMAT_PRE,且 EGL_SURFACE_TYPE 属性中未设置 EGL_VG_ALPHA_FORMAT_PRE_BIT)或颜色空间属性(EGL_VG_COLORSPACE 的值为 EGL_VG_COLORSPACE_LINEAR,且 EGL_SURFACE_TYPE 属性中未设置 EGL_VG_COLORSPACE_LINEAR_IT),则生成 EGL_BAD_MATCH 错误。
英文连接
链接: https://registry.khronos.org/EGL/sdk/docs/man/