[NDK]从Opengles到Vulkan-基础篇(3)-交换链

交换链,在Opengles就是简单的一句话就能完成前后台显示的刷新和交换,并不需要特定的创建容器,很多细节,并不需要我们进行管理,当然定制性少自由度自然也就不高了。但对于我们真正去了解渲染流程,了解Vulkan交换链上的操作很是必要。

Opengles 交换链

Opengles的交换链的使用是要基于EGL环境上的。通过eglSwapBuffers来实现的。
以下是对egl上交换链上的解析, swapBuffers是要基于EGLDisplay和EGLSurface。

/**
 * 现在只使用单缓冲绘制
 */
void EGLCore::swapBuffer() {
    //双缓冲绘图,原来是检测出前台display和后台缓冲的差别的dirty区域,然后再区域替换buffer
    //1)首先计算非dirty区域,然后将非dirty区域数据从上一个buffer拷贝到当前buffer;
    //2)完成buffer内容的填充,然后将previousBuffer指向buffer,同时queue buffer。
    //3)Dequeue一块新的buffer,并等待fence。如果等待超时,就将buffer cancel掉。
    //4)按需重新计算buffer
    //5)Lock buffer,这样就实现page flip,也就是swapbuffer
    if (mDisplay != nullptr && mSurface != nullptr) {
        eglSwapBuffers(mDisplay, mSurface);
    }
}

Vulkan 交换链

Vulkan的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值