前几天突然想起新的DXSDK应该早出了,去微软网站一看,好么。。。2008 Dec版早出了,这次火星了,下载完后居然发现包坏掉了,于是重下。。。还是坏掉!第三次也不行,折腾了一下午,最后放弃了,还好貌似只有Sample的最后一点点没解压开,没什么大碍。
本来只是以为自己只是火星了而已,装好一看,完。。。彻底冥王星了,DX11的Preview版出了!真是又激动又懊悔,粗略看了看,新特性真是太令人激动了,主要有以下几点:
一、SM5.0 从类C变成类C++了,有类有继承有虚函数,太夸张了。。。
二、支持Shader动态Link,DX9里面就有个FragmentLinker,不太好用,DX10直接取消了,这次变本加厉的又回来了!
三、渲染的多线程支持,我重点来谈谈这个
DX11提供了一个新的接口:
ID3D11DeviceContext,取代了以前Device接口所有与渲染相关的功能,有两个类型:immediate和deferred,前者和现在的效果一样,收到渲染指令就立即执行,而后者则会将命令缓存起来,由用户决定何时执行。
在例子MultithreadedRendering11中,渲染了三面带反射的镜子和一个人物模型,Sample创建了四个Context,三个deferred用于镜子反射表面的渲染,一个immediate用于最终场景,Sample创建了三个线程,渲染帧开始时,首先并行的执行三个镜子反射的渲染,完成后,在主线程顺序执行三个Context,然后用immediate的Context渲染最终场景。
由这个例子,我们来展望一下美好的未来:所有的渲染表面都可以并行执行,比如水面、镜子、甚至ShadowMap,并行的进行场景剪裁,使得多核CPU的使用更有效率。
DX11预计在今年年底推出,于Windows7捆绑,到那时,四核CPU应该已经普及了吧。。。
相关文章
- 粤嵌教育:Java多线程——从操作系统的原理说起
- Java多线程03——线程安全和线程同步
- DataTable多线程操作报错情况
- C#实现聊天消息渲染、图文混排(支持Windows、Linux)
- C#多线程之基础篇2
- C++多线程的几个重要方法解析CreateEvent / SetEvent /ResetEvent/ 等
- java多线程系列(二)---对象变量并发访问
- java多线程系列(二)
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题