EGL函数翻译--eglSwapBuffers

EGL函数翻译–eglSwapBuffers

函数名

EGLBoolean eglSwapBuffers(EGLDisplay display,
 						  EGLSurface surface);

参数描述

display
指定 EGL 显示连接。

surface
指定要交换缓冲区的 EGL 绘图表面。

详细描述

如果 surface 是具有后备缓冲的窗口表面,则颜色缓冲区会被复制(发布)到与该表面关联的本地窗口。如果 surface 是单缓冲窗口、图像或像素缓冲表面,则 eglSwapBuffers 没有效果。

在调用 eglSwapBuffers 之后,辅助缓冲区的内容总是未定义的。如果 surface 的 EGL_SWAP_BEHAVIOR 属性的值不是 EGL_BUFFER_PRESERVED,则颜色缓冲区的内容也未定义。可以使用 eglSurfaceAttrib 为某些表面设置 EGL_SWAP_BEHAVIOR 的值。EGL_SWAP_BEHAVIOR 仅适用于颜色缓冲区。EGL 无法指定或查询辅助缓冲区是否被保留,应用程序不应依赖于这种行为。

eglSwapBuffers 在交换缓冲区之前,会对绑定到 surface 的上下文执行隐式刷新操作(对 OpenGL ES 或 OpenGL 上下文为 glFlush,对 OpenVG 上下文为 vgFlush)。在调用 eglSwapBuffers 之后,可以立即在该上下文上发出后续的客户端 API 命令,但在缓冲区交换完成之前,这些命令不会执行。

本地窗口的调整大小

如果与 surface 对应的本地窗口在交换之前已经调整了大小,则 surface 必须调整大小以匹配。通常情况下,surface 会在本地窗口调整大小时由 EGL 实现进行调整。如果实现无法对客户端透明地执行此操作,则 eglSwapBuffers 必须检测到更改并在将像素复制到本地窗口之前调整 surface 的大小。如果 surface 因调整大小而缩小,则某些已渲染的像素会丢失。如果 surface 增大,则新分配的缓冲区内容是未定义的。此处描述的调整大小行为仅维护 EGL 表面和本地窗口的一致性;客户端仍然需要检测窗口大小的变化(使用平台特定的方式)并相应地更改视口和剪裁区域。

注意事项

属性 EGL_SWAP_BEHAVIOR 仅在 EGL 版本 1.2 或更高版本中支持。在早期版本中,行为就像属性存在一样,并且始终具有 EGL_BUFFER_DESTROYED 的值。
EGL 1.4 规范已更新,确认辅助缓冲区在交换后不一定会被保留,并且 EGL_SWAP_BEHAVIOR 属性仅适用于颜色缓冲区。此规范的更改是为了确认许多现有实现的行为,而不是为了导致任何现有实现中的行为更改。

错误描述

如果表面缓冲区交换失败,则返回 EGL_FALSE,否则返回 EGL_TRUE。

如果 display 不是 EGL 显示连接,则生成 EGL_BAD_DISPLAY。

如果 display 尚未初始化,则生成 EGL_NOT_INITIALIZED。

如果 surface 不是 EGL 绘图表面,则生成 EGL_BAD_SURFACE。

如果发生了电源管理事件,则生成 EGL_CONTEXT_LOST。应用程序必须销毁所有上下文并重新初始化 OpenGL ES 状态和对象以继续渲染。

英文连接

链接: https://registry.khronos.org/EGL/sdk/docs/man/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值