国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
初始化Direct3D(2)

1.3.2 Multisampling

由于使用像素矩陣來(lái)表示圖像,在顯示時(shí)會(huì)出現(xiàn)鋸齒狀,Multisampling就是使其變得平滑的技術(shù)。它的一種最普通的用法即為——全屏抗鋸齒(看圖1.3)。

D3DMULTISAMPLE_TYPE枚舉類(lèi)型使我們可以指定全屏抗鋸齒的質(zhì)量等級(jí):

D3DMULTISAMPLE_NONE——不使用全屏抗鋸齒。

D3DMULTISAMPLE_1_SAMPLE…D3DMULTISAPLE_16_SAMPLE——設(shè)定1~16級(jí)的等級(jí)。

Defines the levels of full-scene multisampling that the device can apply.

typedef enum D3DMULTISAMPLE_TYPE
{
D3DMULTISAMPLE_NONE = 0,
D3DMULTISAMPLE_NONMASKABLE = 1,
D3DMULTISAMPLE_2_SAMPLES = 2,
D3DMULTISAMPLE_3_SAMPLES = 3,
D3DMULTISAMPLE_4_SAMPLES = 4,
D3DMULTISAMPLE_5_SAMPLES = 5,
D3DMULTISAMPLE_6_SAMPLES = 6,
D3DMULTISAMPLE_7_SAMPLES = 7,
D3DMULTISAMPLE_8_SAMPLES = 8,
D3DMULTISAMPLE_9__SAMPLES = 9,
D3DMULTISAMPLE_10_SAMPLES = 10,
D3DMULTISAMPLE_11_SAMPLES = 11,
D3DMULTISAMPLE_12_SAMPLES = 12,
D3DMULTISAMPLE_13_SAMPLES = 13,
D3DMULTISAMPLE_14_SAMPLES = 14,
D3DMULTISAMPLE_15_SAMPLES = 15,
D3DMULTISAMPLE_16_SAMPLES = 16,
D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff,
} D3DMULTISAMPLE_TYPE, *LPD3DMULTISAMPLE_TYPE;

使用全屏抗鋸齒的功能將大大的降低了程序運(yùn)行速度。如果你實(shí)在很想使用它的話,要記住使用IDirect3D9::CheckDeviceMultisampleType來(lái)檢測(cè)你的顯卡是否支持。

1.3.3像素格式

當(dāng)我們創(chuàng)建一個(gè)表面或紋理時(shí),經(jīng)常需要指定這些Direct3D資源的像素格式。它是由D3DFORMAT枚舉類(lèi)型的一個(gè)成員來(lái)定義的。這里例舉一部分:

D3DFMT_R8G8B8——表示一個(gè)24位像素,從左開(kāi)始,8位分配給紅色,8位分配給綠色,8位分配給藍(lán)色。

D3DFMT_X8R8G8B8——表示一個(gè)32位像素,從左開(kāi)始,8位不用,8位分配給紅色,8位分配給綠色,8位分配給藍(lán)色。

D3DFMT_A8R8G8B8——表示一個(gè)32位像素,從左開(kāi)始,8位為ALPHA通道,8位分配給紅色,8位分配給綠色,8位分配給藍(lán)色。

D3DFMT_A16B16G16R16F——表示一個(gè)64位浮點(diǎn)像素,從左開(kāi)始,16位為ALPHA通道,16位分配給藍(lán)色,16位分配給綠色,16位分配給紅色。

D3DFMT_A32B32G32R32F——表示一個(gè)128位浮點(diǎn)像素,從左開(kāi)始,32位為ALPHA通道,32位分配給藍(lán)色,32位分配給綠色,32位分配給紅色。

想了解全部的像素格式請(qǐng)查看SDK文檔中的D3DFORMAT部分。

注意:這前三種格式(D3DFMT_R8G8B8、D3DFMT_X8R8G8B8、D3DFMT_A8R8G8B8)是最常用并為大部分顯卡所支持。但浮點(diǎn)像素格式或其它一些類(lèi)型的支持并不是很廣泛,在使用它們前請(qǐng)先檢測(cè)你的顯卡,看是否支持。

 

1.3.4 內(nèi)存池

表面和其它一些Direct3D資源被放在多種內(nèi)存池中。內(nèi)存池的種類(lèi)由D3DPOOL枚舉類(lèi)型的一個(gè)成員來(lái)指定??捎玫降膬?nèi)存池有下列幾種:

D3DPOOL_DEFAULT——表示Direct3D將根據(jù)資源的類(lèi)型和用途把它們放在最合適的地方。這有可能是顯存、AGP內(nèi)存或者系統(tǒng)內(nèi)存中。值得注意的是,這種內(nèi)存池中的資源必須要在IDirect3DDevice9::Reset被調(diào)用之前消毀掉,并且再次使用時(shí)必須重新初始化。

D3DPOOL_MANAGED——資源將由Direct3D管理并且按設(shè)備的需要來(lái)指定放在顯存還是放在AGP內(nèi)存中。當(dāng)應(yīng)用程序訪問(wèn)和改變資源時(shí)它先把這些資源拷貝到系統(tǒng)內(nèi)存中,當(dāng)需要時(shí)Direct3D會(huì)自動(dòng)把它們拷貝到顯存里。

D3DPOOL_SYSTEMMEM——指定資源放在系統(tǒng)內(nèi)存中。

D3DPOOL_SCRATCH——指定資源放在系統(tǒng)內(nèi)存中,它與D3DPOOL_SYSTEMMEM不同之處在于使用這些資源不必受圖形設(shè)備的限制。因此,參數(shù)使圖形設(shè)備不能訪問(wèn)該內(nèi)存池的資源,但資源可以相互拷貝。

AGP內(nèi)存

AGP(Accelerate Graphical Port),加速圖形接口。隨著顯示芯片的發(fā)展,PCI總線日益無(wú)法滿(mǎn)足其需求。英特爾于1996年7月正式推出了AGP接口,它是一種顯示卡專(zhuān)用的局部總線。嚴(yán)格的說(shuō),AGP不能稱(chēng)為總線,它與PCI總線不同,因?yàn)樗屈c(diǎn)對(duì)點(diǎn)連接,即連接控制芯片和AGP顯示卡,但在習(xí)慣上我們依然稱(chēng)其為AGP總線。AGP接口是基于PCI 2.1 版規(guī)范并進(jìn)行擴(kuò)充修改而成,工作頻率為66MHz。

  AGP總線直接與主板的北橋芯片相連,且通過(guò)該接口讓顯示芯片與系統(tǒng)主內(nèi)存直接相連,避免了窄帶寬的PCI總線形成的系統(tǒng)瓶頸,增加3D圖形數(shù)據(jù)傳輸速度,同時(shí)在顯存不足的情況下還可以調(diào)用系統(tǒng)主內(nèi)存。所以它擁有很高的傳輸速率,這是PCI等總線無(wú)法與其相比擬的。

由于采用了數(shù)據(jù)讀寫(xiě)的流水線操作減少了內(nèi)存等待時(shí)間,數(shù)據(jù)傳輸速度有了很大提高;具有133MHz及更高的數(shù)據(jù)傳輸頻率;地址信號(hào)與數(shù)據(jù)信號(hào)分離可提高隨機(jī)內(nèi)存訪問(wèn)的速度;采用并行操作允許在CPU訪問(wèn)系統(tǒng)RAM的同時(shí)AGP顯示卡訪問(wèn)AGP內(nèi)存;顯示帶寬也不與其它設(shè)備共享,從而進(jìn)一步提高了系統(tǒng)性能。

  AGP標(biāo)準(zhǔn)在使用32位總線時(shí),有66MHz和133MHz兩種工作頻率,最高數(shù)據(jù)傳輸率為266Mbps和533Mbps,而PCI總線理論上的最大傳輸率僅為133Mbps。目前最高規(guī)格的AGP 8X模式下,數(shù)據(jù)傳輸速度達(dá)到了2.1GB/s。

  AGP接口的發(fā)展經(jīng)歷了AGP1.0(AGP1X、AGP2X)、AGP2.0(AGP Pro、AGP4X)、AGP3.0(AGP8X)等階段,其傳輸速度也從最早的AGP1X的266MB/S的帶寬發(fā)展到了AGP8X的2.1GB/S。

AGP 1.0(AGP1X、AGP2X)
1996年7月AGP 1.0 圖形標(biāo)準(zhǔn)問(wèn)世,分為1X和2X兩種模式,數(shù)據(jù)傳輸帶寬分別達(dá)到了266MB/s和533MB/s。這種圖形接口規(guī)范是在66MHz PCI2.1規(guī)范基礎(chǔ)上經(jīng)過(guò)擴(kuò)充和加強(qiáng)而形成的,其工作頻率為66MHz,工作電壓為3.3v,在一段時(shí)間內(nèi)基本滿(mǎn)足了顯示設(shè)備與系統(tǒng)交換數(shù)據(jù)的需要。這種規(guī)范中的AGP帶寬很小,現(xiàn)在已經(jīng)被淘汰了,只有在前幾年的老主板上還見(jiàn)得到。

AGP2.0(AGP4X)
顯示芯片的飛速發(fā)展,圖形卡單位時(shí)間內(nèi)所能處理的數(shù)據(jù)呈幾何級(jí)數(shù)成倍增長(zhǎng),AGP 1.0 圖形標(biāo)準(zhǔn)越來(lái)越難以滿(mǎn)足技術(shù)的進(jìn)步了,由此AGP 2.0便應(yīng)運(yùn)而生了。1998年5月份,AGP 2.0 規(guī)范正式發(fā)布,工作頻率依然是66MHz,但工作電壓降低到了1.5v,并且增加了4x模式,這樣它的數(shù)據(jù)傳輸帶寬達(dá)到了1066MB/sec,數(shù)據(jù)傳輸能力大大地增強(qiáng)了。

AGP Pro
AGP Pro接口與AGP 2.0同時(shí)推出,這是一種為了滿(mǎn)足顯示設(shè)備功耗日益加大的現(xiàn)實(shí)而研發(fā)的圖形接口標(biāo)準(zhǔn),應(yīng)用該技術(shù)的圖形接口主要的特點(diǎn)是比AGP 4x略長(zhǎng)一些,其加長(zhǎng)部分可容納更多的電源引腳,使得這種接口可以驅(qū)動(dòng)功耗更大(25-110w)或者處理能力更強(qiáng)大的AGP顯卡。這種標(biāo)準(zhǔn)其實(shí)是專(zhuān)為高端圖形工作站而設(shè)計(jì)的,完全兼容AGP 4x規(guī)范,使得AGP 4x的顯卡也可以插在這種插槽中正常使用。AGP Pro在原有AGP插槽的兩側(cè)進(jìn)行延伸,提供額外的電能。它是用來(lái)增強(qiáng),而不是取代現(xiàn)有AGP插槽的功能。根據(jù)所能提供能量的不同,可以把AGP Pro細(xì)分為AGP Pro110和AGP Pro50。在某些高檔臺(tái)式機(jī)主板上也能見(jiàn)到AGP Pro插槽,例如華碩的許多主板。

AGP 3.0(AGP8X)
2000年8月,Intel推出AGP3.0規(guī)范,工作電壓降到0.8V,并增加了8x模式,這樣它的數(shù)據(jù)傳輸帶寬達(dá)到了2133MB/sec,數(shù)據(jù)傳輸能力相對(duì)于AGP 4X成倍增長(zhǎng),能較好的滿(mǎn)足當(dāng)前顯示設(shè)備的帶寬需求。

AGP接口的模式傳輸方式
不同AGP接口的模式傳輸方式不同。1X模式的AGP,工作頻率達(dá)到了PCI總線的兩倍—66MHz,傳輸帶寬理論上可達(dá)到266MB/s。AGP 2X工作頻率同樣為66MHz,但是它使用了正負(fù)沿(一個(gè)時(shí)鐘周期的上升沿和下降沿)觸發(fā)的工作方式,在這種觸發(fā)方式中在一個(gè)時(shí)鐘周期的上升沿和下降沿各傳送一次數(shù)據(jù),從而使得一個(gè)工作周期先后被觸發(fā)兩次,使傳輸帶寬達(dá)到了加倍的目的,而這種觸發(fā)信號(hào)的工作頻率為133MHz,這樣AGP 2X的傳輸帶寬就達(dá)到了266MB/s×2(觸發(fā)次數(shù))=533MB/s的高度。AGP 4X仍使用了這種信號(hào)觸發(fā)方式,只是利用兩個(gè)觸發(fā)信號(hào)在每個(gè)時(shí)鐘周期的下降沿分別引起兩次觸發(fā),從而達(dá)到了在一個(gè)時(shí)鐘周期中觸發(fā)4次的目的,這樣在理論上它就可以達(dá)到266MB/s×2(單信號(hào)觸發(fā)次數(shù))×2(信號(hào)個(gè)數(shù))=1066MB/s的帶寬了。在AGP 8X規(guī)范中,這種觸發(fā)模式仍然使用,只是觸發(fā)信號(hào)的工作頻率變成266MHz,兩個(gè)信號(hào)觸發(fā)點(diǎn)也變成了每個(gè)時(shí)鐘周期的上升沿,單信號(hào)觸發(fā)次數(shù)為4次,這樣它在一個(gè)時(shí)鐘周期所能傳輸?shù)臄?shù)據(jù)就從AGP4X的4倍變成了8倍,理論傳輸帶寬將可達(dá)到266MB/s×4(單信號(hào)觸發(fā)次數(shù))×2(信號(hào)個(gè)數(shù))=2133MB/s的高度了。

目前常用的AGP接口為AGP4X、AGP PRO、AGP通用及AGP8X接口。需要說(shuō)明的是由于AGP3.0顯卡的額定電壓為0.8—1.5V,因此不能把AGP8X的顯卡插接到AGP1.0規(guī)格的插槽中。這就是說(shuō)AGP8X規(guī)格與舊有的AGP1X/2X模式不兼容。而對(duì)于AGP4X系統(tǒng),AGP8X顯卡仍舊在其上工作,但僅會(huì)以AGP4X模式工作,無(wú)法發(fā)揮AGP8X的優(yōu)勢(shì)。

1.3.5 交換鏈和頁(yè)面切換

Direct3D通常創(chuàng)建2~3個(gè)表面組成一個(gè)集合,即為交換鏈,通常由IDirect3DSwapChain接口來(lái)表示。我們不必去了解它更詳細(xì)的細(xì)節(jié)。我們也很少去管理它,通常Direct3D會(huì)自己去管理。所以我們只要大概的了解一下它就可以了。

交換鏈以及頁(yè)面切換技巧被用在使兩幀動(dòng)畫(huà)之間過(guò)度更平滑。圖1.4展示的是一個(gè)有兩個(gè)繪制表面的交換鏈。

如圖1.4,在Front Buffer中的表面將用來(lái)在屏幕上顯示。顯示器不能即時(shí)顯示Front Buffer中表示的圖像;通常情況下,它是每六十分之一秒刷新顯示一次,即刷新率為60赫茲。應(yīng)用程序的幀率經(jīng)常與監(jiān)視器的刷新率不同步(比如應(yīng)用程序的渲染幀速度可能比顯示器的刷新速度快)。然而,我們不能在顯示器顯示完成當(dāng)前幀之前就更新有下一幀動(dòng)畫(huà)的Front Buffer內(nèi)容,但是我們又不想讓程序停止渲染而去等待顯示器顯示。因此,我們渲染另一個(gè)屏幕表面Back Buffer。當(dāng)監(jiān)視器將Front Buffer顯示出來(lái)后,F(xiàn)ront Buffer就被放到交換鏈的末端,即變成圖中的Back Buffer,而B(niǎo)ack Buffer就會(huì)變成交換鏈中的Front Buffer。這個(gè)過(guò)程就叫做presenting。圖1.5表示了交換的整個(gè)過(guò)程。

因此,我們繪圖代碼的結(jié)構(gòu)就會(huì)像下面這樣:

1. Render to back buffer

2. Present the back buffer

3. Goto (1)

1.3.6 深度緩沖

深度緩沖也是一個(gè)表面,但它不是用來(lái)存儲(chǔ)圖像數(shù)據(jù)的,而是用來(lái)記錄像素的深度信息。它將確定哪一個(gè)像素最后被繪制出來(lái)。所以,如果要繪制640*480分辨率的圖片,那么就會(huì)有640*480個(gè)深度值。

圖1.6展示了一個(gè)簡(jiǎn)單的場(chǎng)景,在這個(gè)場(chǎng)景里,一個(gè)物體把將另一個(gè)物體的一部分遮住了。為了使Direct3D能確定物體的前后關(guān)系并正確的繪制出來(lái),我們使用一種深度緩沖,又叫做z-buffering的技術(shù)。

深度緩沖為每一個(gè)像素計(jì)算深度值,并進(jìn)行深度測(cè)試。通過(guò)深度測(cè)試,我們可以比較出哪個(gè)像素離照相機(jī)更近,并將它畫(huà)出來(lái)。這樣就可以只繪制最靠近照相機(jī)的像素,被遮住的像素就不會(huì)被畫(huà)出來(lái)。

深度緩沖的格式?jīng)Q定著深度測(cè)試的精確性。一個(gè)24位的深度緩沖比16位的深度緩沖更精確。通常,應(yīng)用程序在24位深度緩沖下就能工作的很好,但是Direct3D也同時(shí)支持32位的深度緩沖。

D3DFMT_D32——表示32位深度緩沖

D3DFMT_D24S8——表示24位深度緩沖并保留8位模版緩沖(stencil buffer)

D3DFMT_D24X8——表示24位深度緩沖

D3DFMT_D24X4S4——表示24位深度緩沖并保留4位模版緩沖

D3DFMT_D16——表示16位深度緩沖

1.3.7 頂點(diǎn)處理

頂點(diǎn)是3D圖形學(xué)的基礎(chǔ),它能夠通過(guò)兩種不同的方法被處理,一種是軟件方式(software vertex processing),一種是硬件方式(hardware vertex processing),前者總是被支持且永遠(yuǎn)可用,后者必須要顯卡硬件支持頂點(diǎn)處理才可用。

使用硬件頂點(diǎn)處理總是首選,因?yàn)樗溶浖绞礁?,而且不占用CPU資源,這意味CPU至少可以有更多的空閑時(shí)間進(jìn)行別的計(jì)算。

注意:如果一塊顯卡支持硬件頂點(diǎn)處理的話,也就是說(shuō)它也支持硬件幾何轉(zhuǎn)換和光源計(jì)算。

1.3.8 設(shè)備能力

Direct3D支持的每一項(xiàng)特性都對(duì)應(yīng)于D3DCAPS9結(jié)構(gòu)的一個(gè)數(shù)據(jù)成員。初始化一個(gè)D3DCAPS9實(shí)例應(yīng)該以你的設(shè)備實(shí)際支持特性為基礎(chǔ)。因此,在我們的應(yīng)用程序里,我們能夠通過(guò)檢測(cè)D3DCAPS9結(jié)構(gòu)中相對(duì)應(yīng)的某一成員來(lái)檢測(cè)設(shè)備是否支持這一特性。

下面將舉例說(shuō)明,假設(shè)我們想要檢測(cè)顯卡是否支持硬件頂點(diǎn)處理(換句話說(shuō),就是顯卡是否支持硬件幾何轉(zhuǎn)換和光源計(jì)算)。通過(guò)查閱SDK中的D3DCAPS9結(jié)構(gòu),可以得知數(shù)據(jù)成員D3DCAPS9::DevCaps中的D3DDEVCAPS_HWTRANSFORMANDLIGHT位表示硬件是否支持硬件頂點(diǎn)處理即硬件幾何變換和光源計(jì)算。程序如下:

 

bool supportsHardwareVertexProcessing;

// If the bit is "on" then that implies the hardware device supports it.
if( caps.DevCaps & D3DDEVCAPS HWTRANSFORMANDLIGHT )
{
      
// Yes, the bit is on, so it is supported.
      supportsHardwareVertexProcessing = true;
}
else
{
      
// No, the bit is off, so it is not supported.
      hardwareSupportsVertexProcessing =  false;
}

 

注意:DevCaps即為“device capabilities。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
BIOS設(shè)置詳細(xì)解讀
電腦主板維修講義
2DApplication
計(jì)算機(jī)主板的組成部分及芯片介紹
PC硬件超頻專(zhuān)集
主板維修教程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服