Direct3D基础——Direct3D概述
概述
Direct3D是一套底層圖形API,借助該API我們可以利用硬件加速功能來實現3D場景的繪制,Direct3D可以視為應用程序和底層設備的交互。下圖展示了Direct3D和硬件之間的交互關系:
圖中Direct3D部分是一套已經定義好的,由Direct3D提供給應用程序和開發人員的接口函數,這些接口代表了當前Direct3D支持的所有功能。
注意:有些功能Direct3D支持,但是硬件設備卻未必支持。
在上述的圖中,Direct3D和硬件設備之間有一個環節:HAL(硬件抽象層),因為市面上的圖形卡的種類太多了,Direct3D無法直接和硬件設備進行交互,例如:同樣的一個清屏操作,不同的圖形卡之間的操作可能大不一樣。所以Direct3D就需要設備的制造商來實現一個HAL。
HAL是一個指示設備完成某些操作的設備相關的代碼集,簡單地說:HAL是代碼集
基于HAL,Direct3D就可以不必關心底層硬件,其規范的指定便可以獨立于硬件設備。
總結:設備制造商將自己硬件所支持的所支持的全部功能,都是實現到HAL里面。那些Direct3D支持但是設備不支持的功能就無法在HAL中實現。也就是說:調用一個沒有在HAL中實現的Direct3D函數,就會調用失敗(除非他是一種頂點處理運算,并且用戶已經指定了軟件頂點運算處理方式,這點暫時我也不太明白,有時間請教大神之后,再來補充吧)。
所以當你使用僅僅為少數的硬件實現的Direct3D功能的時候,務必要驗證自己的硬件是否支持該功能。
REF設備
有時候Direct3D提供的而某些功能,本地的硬件不支持,但是還需要去使用這些功能,為了滿足這些功能,Direct3D提供參考光柵設備,也就是REF設備,它能以軟件的運行方式完全支持Direct3D API,借助REF設備您可以使用當前硬件不支持的功能,并對這些功能進行測試。
注意:REF設備僅僅應用于開發階段,它與DirectX SDK綁定在一起,無法發布給最終的用戶,此外,REF設備的速度十分的緩慢,在測試以外的場合十分不適用。
D3DDEVTYPE
在代碼程序中,HAL設備用值D3DDEVTYPE_HAL來指定,該值是D3DDEVTYPR枚舉類型的成員之一。類似的:REF設備用值D3DDEVTYPR_REF來指定,該值也是D3DDEVTYPE,枚舉成員之一。
這些設備非常重要,因為我們在創建設備的時候,需要指定使用哪一種設備類型。
COM(組件對象模型)
COM(組件對象模型)是一項使得DirectX獨立于編程語言并具備向下兼容特性的技術,我們常稱COM對象為接口,可將其視為一個C++的類來使用。
關于COM組件,我們應該銘記以下:
1、我們僅僅需要知道的是:如何通過某個特定的函數或者COM接口的方法來獲取指向一COM接口的指針。
2、創建COM接口時,不可以使用C++的關鍵字new。
3、使用完一個接口,應該調用接口相應的Release方法,而不是C++的關鍵字delete
4、所有的COM接口都繼承自IUnknown,該接口提供了Release方法,使COM對象能夠對其掌控的內存進行管理。
5、COM接口都有一個前綴“I”
下面是:DirectX9.03D庫的下載地址:鏈接:https://pan.baidu.com/s/1028NylXtE6T3Y7MSVEs2GQ 密碼:rp5x
總結
以上是生活随笔為你收集整理的Direct3D基础——Direct3D概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵合同与相似,为什么只有当C为正交阵时
- 下一篇: HTML+CSS制作二级菜单栏