GPU渲染和GDI

摘要:
要实现这样的逻辑,用GPU绘制3D图形和用GDI绘制2D图形的效率有多高。据传说,在Vista时代,硬件渲染是在GPU上完成的,并读取回CPU。GDI和软件渲染混合并复制到视频存储器显示器。在这种情况下,整个屏幕应保存在两个副本中,并相互同步。

   要实现这样一段逻辑,用GPU画3D图,用GDI画二维图元,怎么样效率高。相传Vista年代,是这样干的:

  1. 硬件渲染的东西在GPU上做完
  2. 读回CPU端
  3. 把GDI这些用软件渲染
  4. 两者混合
  5. 拷贝到显存显示

这样的话,相当于整个屏幕都要维持2份拷贝,并且要互相同步。早期的vista驱动上,D3D/OGL和GDI混合使用的话闪得要死或者慢的要死,就是这个原因。

于是新的wddm要求驱动提供overlay和blt,所以流程变得很简单高效:

  1. 硬件渲染的东西在GPU上做完
  2. 把GDI这些用软件渲染
  3. BitBlt到GPU端作为overlay

这样只需要在GPU端维护一份屏幕拷贝,CPU端只需要短暂地维护一个局部GDI的内容就可以了。

这也解释了为什么过去大型游戏在窗口模式下渲染比较慢,而全屏模式下比较快。全屏模式下,显卡是独占的,而且不需要与其他桌面程序(任务栏等 )和其他窗口坐混合,甚至桌面占用的内存也会被释放,记得曾经我的老爷机退出大型游戏时,窗口黑屏,接着慢慢刷出背景和桌面图标,大概就是这么个人道理吧。Win7 时代不一样了,GDI可以blit到显存,而Aero特效本身也是硬件加速的,所以全屏和窗口模式应该差别不大了。

免责声明:文章转载自《GPU渲染和GDI》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XMLHttpRequest对象中readyState与status的几种常见状态SAP流水号下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Uniapp 之小程序版本更新检查——uni.getUpdateManager()

在开发小程序的时候,版本更新在所难免。所以,我们希望每次打开的小程序的时候,都可以进行版本检测。如果有新版本,那么,就更新,并且让用户能够重启,并应用新版本。 实现 开门见山,uni-app官方网站给了我们实现方法。以下是代码示例。 const updateManager =uni.getUpdateManager(); updateManager.on...

(2)C#工具箱-公共控件2

1、MaskedTextBox 限制填写数据格式的文本框 2、MonthCalendar 用法和DateTimePicker相同 日历 3、NotifIcon (1)添加此控件后,此界面运行时会弹出用户自定义的图标 (2)还可以设置右击此图标后显示的菜单 拖入一个图标 设置 然后用NotifIcon控件的属性做关联 运行后 右键图标 (3)也可以执...

h5 plus/h5+规范使用,模块索引,教你如何去看h5+的手册

最近看了下h5+规范的官网,开始觉得晦涩难懂,确实很乱,不过这也是基于我不理解的情况,终于艰难读完了,现在来分享下心得吧,基本看完文章,按我的方法,应该可以直接上手项目。 我准备的工具 hbuilder编译器(打包用),逍遥安卓模拟器(测试安卓用)一个html 搞定,开工,为了讲解的更易于新手,咱们从简单的一个底部弹出的按钮这个demo为例子,先看下效果图...

《软件概要设计说明书》

软件概要设计说明书 1.引言 1.1编写目的 根据我们在上课找教室就的尴尬状况,我们团队决定开发课堂派派软件。每当去上课找教室时,会很找不到教室,导致迟到,或者走错教室,我顿感忧伤,实难想到跑了如此远的路,浪费如此多的时间,还影响到正常的学习,我的心被刺穿了,我想能不能有一款软件可以让我不再如此浪费宝贵时间,能不能有一款软件让我在百忙之中还可以查看到教室...

手机网页远程调试

在开发手机网页的时候,我们可能需要测试一下页面或者脚本(当然还有可恨的兼容性问题),这时可以通过pc端进行远程调试。目前,很多主流的浏览器都给开发者提供了这个功能。这里拿火狐来试一下(chrome在最后点inspect那里连不上,希望有人能告诉我)。 1.连接数据线开启手机usb调试,在你的电脑上安装好手机驱动,装好的话可以在设备管理器那里看到这个。我这里...

SQL SERVER的DTS功能

我用DTS把SQLSERVER的数据库和ACCESS数据库上载到AS/400的PF中,非常方便,速度也比较快,上万条记录不到一分钟就上载完了,汉字也没问题. 大多数组织都使用多种格式和多个位置来存储数据。为了支持决策、改善系统性能或对现有系统进行升级,经常必须将数据从一个数据存储位置移动到另一个存储位置。。这样,我们需要一套数据转换的工具,来完成这不同平台...