当前位置:首页 > 天道酬勤 > 正文内容

引擎的引申意义(怎样正确理解传播的概念)

张世龙2021年12月21日 14:08天道酬勤1420

在计算机图形中,交换链(swap chain )是一组虚拟帧缓冲区,由显卡和图形API用来稳定帧率和其他功能。 swapchain通常存在于图形内存中,但也可以存在于系统内存中。 如果不使用swapchain,可能会发生渲染箱。 许多图形api需要它的存在和使用,具有两个缓冲区的交换链是双缓冲区。

功能

每个交换链至少有两个缓冲区。 第一个帧缓冲器(也称为屏幕缓冲器)是出现在显卡输出中的缓冲区。 其余的缓冲区称为后缓冲区。 每次显示新帧时,交换链中的第一个后台缓冲器将代替屏幕缓冲器。 这称为“渲染”或“交换”。 上一个屏幕缓冲区和其他backbuffer (如果有)可以执行其他各种操作。 屏幕缓冲区可能会被简单地复盖,或者返回交换链的后面进行进一步处理。 要执行的操作由客户端APP决定,并依赖于API。

Direct3D

微软direct 3d实现了SwapChain类。 每个主机设备至少有一个分配的交换链,其他交换链可以在客户端APP应用程序中创建。 API有三种更换方法:的复制、处置和翻转。 如果将SwapChain设置为flip,则屏幕缓冲器将复制到最后一个后台缓冲器,所有现有后台缓冲器将在链中向前复制。 如果设置了副本,每个backbuffer都会向前复制,但屏幕缓冲器不会包装在最后一个缓冲区中,而是保持原样。 如果只有一个backbuffer,则Flip不起作用。 这是因为屏幕缓冲区在显示之前被复制到唯一的backbuffer。 在放下模式下,驱动程序选择最佳方法。

除了

与三缓冲区的对比

direct3d之外,“三重缓冲区”(triple buffer )是一种允许APP应用程序绘制最近更新的最小环形缓冲区的技术。 这样,无论APP绘制帧的速度或向显示器发送帧的速度如何,APP都可以持续渲染。 如果在将一个帧发送到显示器时完全渲染了两个或更多新帧,三重缓冲区可能会丢弃一个帧,从而使其不显示。 相反,由于Direct3D交换机链是严格的先进先出队列,因此即使更新的帧可用,也可以看到APP绘制的所有帧。 Direct3D没有实施最新的缓冲交换战略。 在微软的文档中,包含三个缓冲区的Direct3D交换链称为“三缓冲区”。 上述三重缓冲在游戏等交互目的上非常好,但三个以上缓冲的Direct3D交换链播放视频或解码各个帧所需的时间非常可变等数据

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26364.html

标签: direct3d
分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。