DXGI中的flip显示模型
从win8开始,就增加了flip显示模型,通过该显示模型,程序可以减少系统开销,同时增加性能。基于intel media
sdk解码,d3d11渲染,在我自己的电脑上通过对比,该模型确实可以明显降低CPU负载,渲染时间几乎忽略不计。不过坑爹的是,在部分独显不同电脑上,该模型并没有发挥出来该有的作用,反而增加GPU很大的负载,得不偿失。在d3d12中只支持flip model渲染,我想这些坑爹的电脑也就不支持d3d12渲染显示了,没想到这个flip model跟显卡类型,驱动等关系很大。下面简单说下flip model渲染。
桌面窗口管理器
桌面窗口管理器是Vista以后的系统中的一个新组件:Desktop Window Manager(DWM)。常见的任务栏窗口的实时缩略图效果,aero效果都是是DWM提供的。DWM提供了基于硬件加速的渲染。DWM出现后,应用程序的显示不再是直接画到屏幕上,而是送到显存中的一个离屏Surface。DWM将这些Surface合成一幅图像显示到屏幕之上。所以现在我们看到的显示器所有内容都是DWM处理过的。
DXGI flip model 与BitBlt model对比
二者主要区别是后台缓冲如何送到WDM。对于bitblt model,调用一次IDXGISwapChain1::Present1
,后台缓冲内容就被拷贝到DWM 中一个叫做redirection surface的地方。对于flip model,后台缓冲内容直接与DWM共享,少了拷贝操作,因此更高效。
如何使用
创建交换链时。DXGI_SWAP_CHAIN_DESC1结构体按如下要求填充:
1)SwapEffect:DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
2)BufferCount:2
3)Format:DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_B8G8R8A8_UNORM,DXGI_FORMAT_R8G8B8A8_UNORM之一;
4)SampleDesc.Count :1;
5)SampleDesc.Quality:0。
每一次调用Present1前,都要调用一次ID3D11DeviceContext::OMSetRenderTargets
,因为Present1后,系统会把RenderTargetView
解绑,所以每次都需要再调用OMSetRenderTargets
设置RenderTargetView
。
注意事项
1)一个窗口句柄只能绑定一个flip model交换链;
2)使用了flip model的句柄,就不能再使用其他api绘制了。在flip model中,只有flip model交换链传递到DWM中的Direct3D内容才可见,其他版本Direct3D 以及GDI内容更新将被忽略。
DXGI中的flip显示模型相关推荐
- Zk中组建显示模型mold都有哪些
Zk中组建显示模型mold都有哪些? zk大部份组建都有一个mold属性,此为显示模型,显示模型类似windows主题.网站主题等 例如组 tabbox组建,有default mold和手风琴acco ...
- 在C++中加载TorchScript模型
在C++中加载TorchScript模型 本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的 ...
- 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
起因 这是知识星球内的一个网友提出的,按理说ASP.NET MVC中一个视图只能绑定一个模型(Model),在视图顶部标识如下: @model IEnumerable<FineUICore.Ex ...
- 三种方式实现观察者模式 及 Spring中的事件编程模型
观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...
- python短期预测图_Python中利用长短期记忆模型LSTM进行时间序列预测分析
原文链接:http://tecdat.cn/?p=6663 此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗. 每日数据是通过总计每天提供的15分 ...
- html中内容超出显示省略号的方法
html中内容超出显示省略号的方法 本博客主要介绍 前端开发中文本过多,以省略号显示. 效果如图: 单行: <!--单行--> <p class=&q ...
- 理论与实践中的 C# 内存模型
转载自:https://msdn.microsoft.com/magazine/jj863136 这是该系列(包含两部分内容)的第一部分,这部分将以较长的篇幅介绍 C# 内存模型. 第一部分说明 C# ...
- linux 读取内存颗粒,Linux中的内存管理模型浅析
实际上这是一个内存方面的问题.要想研究这个问题,首先我们要将题目本身搞明白.由于我对Linux内核比较熟而对Windows的内存模型几乎毫不了解,因此在这篇文章中针对Linux环境对这个问题进行探讨. ...
- 【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型
同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深 ...
- Revit中绘图填充与模型填充的区别
一.Revit中绘图填充与模型填充的区别 在设完楼板的表现填充图案以后,在三潍视图中旋转模型,图案不跟随楼板旋转如图1所示.这种情况怎么解决? 遇到这种情况我们要知道绘图填充与模型填充的区别. (1) ...
最新文章
- python精简笔记(五)——函数式编程
- 自学python方法-零基础初学Python人工智能的四种学习方法
- 永动机之永动机的客观存在
- mysql性能优化教程_mysql性能优化教程
- MySQL修改字符集步骤(字段插入中文提示错误时解决办法)
- Java学习笔记(4)——枚举类型
- SQL Server系统数据库–主数据库
- 常见的立体匹配算法介绍
- c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
- 如何画分子结构的立体图
- java pdf转png格式_如何在Java中将PDF转换为PNG或JPG
- Python查询快递订单信息
- echarts3在Y轴上做基准线
- 博达路由器如何配置互联网ip_博达路由器操作命令
- mysql数据库练习作业
- 一种基于Tent混沌映射初始化种群的改进灰狼算法
- 续.第一次冲刺之后.
- sql 汉字按照首字母排序
- 机器学习—— SVM分类垃圾短信
- 在英特尔硬件上部署深度学习模型的无代码方法 OpenVINO 深度学习工作台的三部分系列文章 - CPU AI 第一部