青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

初始化Direct3D(2)

1.3.2 Multisampling

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

D3DMULTISAMPLE_TYPE枚舉類型使我們可以指定全屏抗鋸齒的質量等級:

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

D3DMULTISAMPLE_1_SAMPLE…D3DMULTISAPLE_16_SAMPLE——設定1~16級的等級。

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;

使用全屏抗鋸齒的功能將大大的降低了程序運行速度。如果你實在很想使用它的話,要記住使用IDirect3D9::CheckDeviceMultisampleType來檢測你的顯卡是否支持。

1.3.3像素格式

當我們創建一個表面或紋理時,經常需要指定這些Direct3D資源的像素格式。它是由D3DFORMAT枚舉類型的一個成員來定義的。這里例舉一部分:

D3DFMT_R8G8B8——表示一個24位像素,從左開始,8位分配給紅色,8位分配給綠色,8位分配給藍色。

D3DFMT_X8R8G8B8——表示一個32位像素,從左開始,8位不用,8位分配給紅色,8位分配給綠色,8位分配給藍色。

D3DFMT_A8R8G8B8——表示一個32位像素,從左開始,8位為ALPHA通道,8位分配給紅色,8位分配給綠色,8位分配給藍色。

D3DFMT_A16B16G16R16F——表示一個64位浮點像素,從左開始,16位為ALPHA通道,16位分配給藍色,16位分配給綠色,16位分配給紅色。

D3DFMT_A32B32G32R32F——表示一個128位浮點像素,從左開始,32位為ALPHA通道,32位分配給藍色,32位分配給綠色,32位分配給紅色。

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

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

 

1.3.4 內存池

表面和其它一些Direct3D資源被放在多種內存池中。內存池的種類由D3DPOOL枚舉類型的一個成員來指定。可用到的內存池有下列幾種:

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

D3DPOOL_MANAGED——資源將由Direct3D管理并且按設備的需要來指定放在顯存還是放在AGP內存中。當應用程序訪問和改變資源時它先把這些資源拷貝到系統內存中,當需要時Direct3D會自動把它們拷貝到顯存里。

D3DPOOL_SYSTEMMEM——指定資源放在系統內存中。

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

AGP內存

AGP(Accelerate Graphical Port),加速圖形接口。隨著顯示芯片的發展,PCI總線日益無法滿足其需求。英特爾于1996年7月正式推出了AGP接口,它是一種顯示卡專用的局部總線。嚴格的說,AGP不能稱為總線,它與PCI總線不同,因為它是點對點連接,即連接控制芯片和AGP顯示卡,但在習慣上我們依然稱其為AGP總線。AGP接口是基于PCI 2.1 版規范并進行擴充修改而成,工作頻率為66MHz。

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

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

  AGP標準在使用32位總線時,有66MHz和133MHz兩種工作頻率,最高數據傳輸率為266Mbps和533Mbps,而PCI總線理論上的最大傳輸率僅為133Mbps。目前最高規格的AGP 8X模式下,數據傳輸速度達到了2.1GB/s。

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

AGP 1.0(AGP1X、AGP2X)
1996年7月AGP 1.0 圖形標準問世,分為1X和2X兩種模式,數據傳輸帶寬分別達到了266MB/s和533MB/s。這種圖形接口規范是在66MHz PCI2.1規范基礎上經過擴充和加強而形成的,其工作頻率為66MHz,工作電壓為3.3v,在一段時間內基本滿足了顯示設備與系統交換數據的需要。這種規范中的AGP帶寬很小,現在已經被淘汰了,只有在前幾年的老主板上還見得到。

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

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

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

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

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

1.3.5 交換鏈和頁面切換

Direct3D通常創建2~3個表面組成一個集合,即為交換鏈,通常由IDirect3DSwapChain接口來表示。我們不必去了解它更詳細的細節。我們也很少去管理它,通常Direct3D會自己去管理。所以我們只要大概的了解一下它就可以了。

交換鏈以及頁面切換技巧被用在使兩幀動畫之間過度更平滑。圖1.4展示的是一個有兩個繪制表面的交換鏈。

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

因此,我們繪圖代碼的結構就會像下面這樣:

1. Render to back buffer

2. Present the back buffer

3. Goto (1)

1.3.6 深度緩沖

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

圖1.6展示了一個簡單的場景,在這個場景里,一個物體把將另一個物體的一部分遮住了。為了使Direct3D能確定物體的前后關系并正確的繪制出來,我們使用一種深度緩沖,又叫做z-buffering的技術。

深度緩沖為每一個像素計算深度值,并進行深度測試。通過深度測試,我們可以比較出哪個像素離照相機更近,并將它畫出來。這樣就可以只繪制最靠近照相機的像素,被遮住的像素就不會被畫出來。

深度緩沖的格式決定著深度測試的精確性。一個24位的深度緩沖比16位的深度緩沖更精確。通常,應用程序在24位深度緩沖下就能工作的很好,但是Direct3D也同時支持32位的深度緩沖。

D3DFMT_D32——表示32位深度緩沖

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

D3DFMT_D24X8——表示24位深度緩沖

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

D3DFMT_D16——表示16位深度緩沖

1.3.7 頂點處理

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

使用硬件頂點處理總是首選,因為它比軟件方式更快,而且不占用CPU資源,這意味CPU至少可以有更多的空閑時間進行別的計算。

注意:如果一塊顯卡支持硬件頂點處理的話,也就是說它也支持硬件幾何轉換和光源計算。

1.3.8 設備能力

Direct3D支持的每一項特性都對應于D3DCAPS9結構的一個數據成員。初始化一個D3DCAPS9實例應該以你的設備實際支持特性為基礎。因此,在我們的應用程序里,我們能夠通過檢測D3DCAPS9結構中相對應的某一成員來檢測設備是否支持這一特性。

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

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。

posted on 2008-03-12 20:20 lovedday 閱讀(1294) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线精品国产欧美| 欧美性一二三区| 99爱精品视频| 亚洲经典三级| 亚洲视频在线一区观看| 一区二区三区高清不卡| 宅男精品视频| 亚洲精品永久免费| 国产一区在线看| 国内精品久久久| 欧美性理论片在线观看片免费| 欧美日韩精品三区| 国产精品久久久久久久久久三级 | 日韩视频在线一区| 亚洲视频你懂的| 久久成人精品电影| 最新日韩av| 亚洲线精品一区二区三区八戒| 亚洲欧美日产图| 欧美精品高清视频| 国产精品网红福利| 亚洲欧洲综合另类| 欧美伊人久久| 亚洲国内欧美| 久久精品国产99| 欧美日韩亚洲一区二区三区| 国产女主播视频一区二区| 亚洲人成啪啪网站| 欧美伊人久久大香线蕉综合69| 欧美二区在线观看| 午夜在线a亚洲v天堂网2018| 欧美黄色影院| 影音先锋亚洲电影| 欧美在线亚洲综合一区| 亚洲国产日韩一区二区| 久久精品国产精品| 国产精品美女久久久久av超清 | 欧美午夜免费电影| 樱桃国产成人精品视频| 久久精品在线视频| 日韩亚洲欧美在线观看| 美日韩精品免费| 国产亚洲a∨片在线观看| 久久深夜福利免费观看| a4yy欧美一区二区三区| 久久综合久久88| 亚洲欧美另类久久久精品2019| 免费不卡在线视频| 激情五月婷婷综合| 午夜精品在线| 一本色道久久88综合日韩精品| 欧美国产先锋| 亚洲黄色影片| 欧美激情第8页| 另类春色校园亚洲| …久久精品99久久香蕉国产| 久久男人资源视频| 欧美尤物一区| 国产综合自拍| 免费观看成人| 久久在线免费观看视频| 在线观看91久久久久久| 免费一级欧美片在线观看| 久久黄色小说| 亚洲第一区在线| 免费视频最近日韩| 久久影院亚洲| 日韩一区二区精品在线观看| 亚洲国产美女| 欧美日本一道本在线视频| 一区二区日韩| 99re8这里有精品热视频免费| 欧美韩日视频| 亚洲视频在线看| 亚洲日本中文字幕| 欧美日韩国产999| 国产欧美精品一区二区色综合| 欧美成人免费一级人片100| 亚洲主播在线| 国产精品影片在线观看| 欧美一区二区免费观在线| 欧美在线观看一区| 伊人精品在线| 亚洲国产日本| 国产精品久久久久毛片软件| 欧美一区二区三区日韩视频| 亚洲一区二区久久| 欧美在线电影| 久久视频在线视频| 亚洲人人精品| 亚洲一区二区三区国产| 狠狠色噜噜狠狠色综合久| 欧美黄色aa电影| 国产精品一区二区久激情瑜伽| 一区二区免费在线观看| 亚洲一区二区三区四区五区午夜| 国产欧美日韩一区二区三区| 欧美aⅴ一区二区三区视频| 欧美激情第五页| 新狼窝色av性久久久久久| 麻豆91精品91久久久的内涵| 正在播放亚洲| 久久先锋影音| 欧美一区二区网站| 欧美国产高清| 久热精品视频在线观看| 欧美三级在线| 欧美激情按摩在线| 韩国三级在线一区| 宅男噜噜噜66国产日韩在线观看| 在线观看91精品国产麻豆| 亚洲一区二区动漫| 亚洲美女色禁图| 久久久国产成人精品| 亚洲无限av看| 欧美成人免费全部观看天天性色| 久久久xxx| 国产精品久久久久久久久久免费| 国内精品亚洲| 亚洲自拍偷拍视频| 99视频超级精品| 蜜桃伊人久久| 老司机免费视频一区二区三区| 欧美日韩在线电影| 亚洲精品字幕| 亚洲美女免费视频| 蜜桃av综合| 欧美国产一区二区在线观看 | 国产亚洲电影| 中文日韩在线视频| 亚洲网站在线看| 欧美日韩亚洲一区三区 | 亚洲另类黄色| 亚洲人成在线免费观看| 久久亚洲一区二区| 老鸭窝亚洲一区二区三区| 国内成+人亚洲+欧美+综合在线| 亚洲一区二区三区国产| 亚洲欧美一区二区三区久久 | 国产视频久久| 午夜在线视频观看日韩17c| 欧美亚洲免费高清在线观看| 国产精品久在线观看| 中文国产成人精品| 欧美一区二区三区啪啪| 亚洲一区国产精品| 国产精品普通话对白| 这里只有视频精品| 欧美在线视频不卡| 国产在线精品一区二区中文 | 亚洲亚洲精品三区日韩精品在线视频 | 亚洲影视综合| 午夜激情综合网| 国产精品区二区三区日本| 亚洲欧美一区二区激情| 久久久久久97三级| 伊人狠狠色j香婷婷综合| 欧美+日本+国产+在线a∨观看| 欧美激情精品久久久久久黑人| 一本一本久久a久久精品综合妖精| 欧美日韩国产精品专区| 亚洲少妇自拍| 鲁大师影院一区二区三区| 亚洲精品久久久久久久久| 欧美日韩精品一区二区在线播放| 一区二区三区视频在线| 久久国产精品久久精品国产 | 亚洲电影第1页| 欧美母乳在线| 亚洲欧美日韩天堂一区二区| 欧美freesex8一10精品| 99热这里只有精品8| 国产精品三级视频| 欧美88av| 午夜精品国产更新| 欧美国产亚洲另类动漫| 亚洲欧美综合国产精品一区| 国产一区二区三区高清| 欧美精品一区在线播放| 欧美在线1区| 日韩午夜三级在线| 久久男人av资源网站| 亚洲视频欧美视频| 尤妮丝一区二区裸体视频| 国产精品av免费在线观看| 久久日韩粉嫩一区二区三区| 亚洲少妇中出一区| 亚洲第一级黄色片| 欧美亚洲网站| 在线亚洲一区| 亚洲国产精品久久久久婷婷老年| 国产精品多人| 欧美日韩福利视频| 久久裸体视频| 欧美一区国产一区| 亚洲午夜在线视频| 日韩视频欧美视频| 91久久香蕉国产日韩欧美9色| 久久久久久久久综合| 欧美在线免费看|