c0de4fun,你好:
HAL和REF设备之间的区别:
HAL设备和REF设备是两种主要类型的Direct3D设备。
HAL
HAL是基于硬件支持的,而且它的速度是非常快的,但可能不是所有的都支持。使用这样的设备,在查询了设备的能力后,它可以做下面两件事情之一:
1、如果不是必要的功能,禁用这些不被这个设备所支持的功能。
2、如果缺少的功能是必需的,销毁设备并且退出。
REF
REF设备不使用硬件加速,所以速度很慢,但它以恰当的方式保证支持整套的Direct3D功能。
一般来说,你只需要使用HAL设备,除了:
1、如果你在玩一些先进的功能,你的显卡不支持(例如,最新的Shader东西),那么你可能需要使用REF。如果我是你,我会考虑投资一个新的图形卡;对于大部分你想使用它的东西,REF太慢了,它几乎…不,这真的很痛苦。
2、其他时候,你可能要使用REF如果HAL设备产生一些奇怪的结果
– 比如,你确保你的代码是正确的,但结果是不是你所期待的。REF设备保证正确的行为,所以你不妨在REF设备上测试你的应用程序,并且观察怪异的行为是否继续。如果不是这样,它意味着以下之一:
(一)你的应用程序是假设显卡支持的一些它实际上不支持的东西。
(二)这是一个驱动程序缺陷。如果仍然与REF设备不起作用,那么它是一个你的应用程序的缺陷。
(真的,它可能是一个REF缺陷,但是那是如此罕见以至于不那么值得关注。Direct3D的团队以一个不容易出现的错误的非常简单的方法实现REF光栅器,同时结果是缓慢的,也是可靠的)。
这是我参考的一篇英文博客翻译的,具体内容请参考链接:http://www.cnblogs.com/blackjack1984/articles/2153251.html
同时,我还搜集了一些关于你这个问题的一些有用链接:
http://www.gamedev.net/topic/309165-q-about-hal-vs-ref-device-about-the-d3d-graphics-pipeline/
http://www.graphicsgroups.com/15-directx-graphics/535750337b002a81.htm#.UiaEuCSwoid
Sunny Cao
<THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
Thanks
MSDN Community Support
Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.