none
DX中的HAL和REF设备类型有什么区别 RRS feed

  • 问题

  • 我在网上查阅资料,了解到HAL是由硬件制造商实现的,是位于硬件上的。而REF设备类型仅仅用于测试阶段,速度很慢。 我想详细地知道这两者之间的区别是什么,REF设备类型为什么有用, 以及这两者和显卡驱动有什么关系。  也可以给我指明一些网上资料,或者相关书籍。 我发现网上这方面的资料十分稀少。
    2013年9月3日 10:02

答案

  • c0de4fun,你好:

    HALREF设备之间的区别:

    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.

    2013年9月5日 2:52
    版主