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