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

天行健 君子當自強而不息

初始化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>
            久久九九热re6这里有精品| 91久久视频| 欧美大片在线看免费观看| 久久九九免费| 欧美18av| 欧美性大战久久久久久久蜜臀| 欧美日韩dvd在线观看| 欧美日韩福利视频| 国产欧美69| 亚洲成人中文| 亚洲视频福利| 久久久久久**毛片大全| 欧美福利视频网站| 99re这里只有精品6| 午夜激情亚洲| 欧美大片一区| 国产亚洲精品7777| 亚洲精品乱码久久久久久蜜桃91| 一区二区三区四区在线| 久久黄金**| 亚洲国产欧美国产综合一区| 一本大道久久a久久精品综合| 午夜激情综合网| 欧美高清视频在线| 国产一区二区精品久久| 9l国产精品久久久久麻豆| 久久精品观看| 亚洲美女免费视频| 久久精品国产99| 欧美视频在线观看免费| 在线看日韩欧美| 欧美一区二区三区另类| 欧美福利视频| 欧美中文在线字幕| 国产精品美女999| 日韩一级片网址| 蜜桃av综合| 先锋影音国产一区| 欧美日韩和欧美的一区二区| 黄页网站一区| 欧美在线视频观看| 一本不卡影院| 欧美破处大片在线视频| 亚洲高清电影| 久久综合精品国产一区二区三区| 亚洲视频免费看| 欧美日本国产一区| 亚洲毛片在线| 亚洲国产精品久久精品怡红院| 久久av二区| 国产一区二区三区奇米久涩| 亚洲综合导航| 一区二区三区成人精品| 欧美日韩一区二区三区免费| 亚洲毛片播放| 亚洲国产日韩在线| 欧美激情视频网站| 久久经典综合| 一色屋精品视频在线观看网站| 午夜精品国产| 亚洲欧美国产精品桃花| 欧美午夜剧场| 亚洲欧美日本在线| 亚洲免费影视| 国产专区精品视频| 久久久综合网站| 久久国产精品高清| 伊人久久大香线| 欧美凹凸一区二区三区视频| 久久一本综合频道| 亚洲欧洲日产国产网站| 亚洲日本一区二区| 欧美日韩亚洲在线| 亚洲直播在线一区| 亚洲影院在线| 国产欧美一区二区三区沐欲 | 亚洲日本va在线观看| 蜜臀va亚洲va欧美va天堂| 麻豆成人在线播放| 亚洲免费观看高清在线观看 | 亚洲片在线观看| 亚洲国产欧美在线| 国产精品麻豆成人av电影艾秋| 午夜国产精品视频免费体验区| 亚洲一区视频在线观看视频| 国产日韩专区在线| 女人天堂亚洲aⅴ在线观看| 欧美不卡激情三级在线观看| 中国成人亚色综合网站| 亚洲一区二区视频| 亚洲国产高清高潮精品美女| 亚洲精品综合久久中文字幕| 国产欧美视频一区二区| 亚洲福利视频免费观看| 国产精品久久一级| 女同一区二区| 国产精品日本| 亚洲电影观看| 国产亚洲精品资源在线26u| 亚洲国产成人不卡| 国产日韩欧美一区二区三区四区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩伦理在线免费| 久久亚洲高清| 国产精品视频免费| 91久久国产自产拍夜夜嗨| 国产精品视频yy9099| 91久久香蕉国产日韩欧美9色| 国产情人节一区| 99ri日韩精品视频| 亚洲精品偷拍| 久久影院亚洲| 久久精品91久久久久久再现| 欧美日韩亚洲一区二区| 99re6热只有精品免费观看| 亚洲一区二区免费看| 亚洲黑丝一区二区| 久久aⅴ国产欧美74aaa| 亚洲一二三区精品| 欧美777四色影视在线| 欧美制服丝袜第一页| 欧美日韩精品一二三区| 欧美成人久久| 极品尤物av久久免费看| 午夜精品久久久久久久 | 麻豆亚洲精品| 国产女精品视频网站免费| 亚洲蜜桃精久久久久久久| 亚洲三级免费电影| 欧美h视频在线| 久久久亚洲人| 激情综合网激情| 欧美在线你懂的| 久久精品国产77777蜜臀| 国产精品尤物| 欧美一区二区大片| 久久久777| 激情综合激情| 老牛嫩草一区二区三区日本| 免费成人网www| 亚洲国产精品久久久久久女王| 久久久久综合网| 欧美国产精品一区| 亚洲精品影视| 欧美色视频在线| 亚洲主播在线播放| 久久久久久色| 亚洲国产天堂久久综合网| 欧美v日韩v国产v| 亚洲美女在线观看| 午夜日韩在线观看| 国产综合第一页| 美玉足脚交一区二区三区图片| 欧美黑人在线播放| 99视频超级精品| 国产精品毛片a∨一区二区三区|国 | 欧美一区二区三区四区视频| 久久综合久久久久88| 亚洲福利视频一区二区| 欧美极品aⅴ影院| 一区二区三区成人精品| 久久激情一区| 亚洲国产婷婷综合在线精品| 欧美日韩国产高清视频| 亚洲欧美成人一区二区在线电影 | 久久精品99| 亚洲国产成人tv| 午夜精品福利电影| 亚洲电影成人| 国产精品国产三级国产普通话蜜臀| 亚洲欧美日韩综合aⅴ视频| 另类图片综合电影| 一区二区成人精品| 国内久久视频| 欧美日韩一区二区三区在线 | 久热国产精品视频| 亚洲精品影视在线观看| 国产精品毛片大码女人| 久久综合给合| 亚洲一区三区电影在线观看| 老司机精品久久| 亚洲午夜黄色| 亚洲欧洲在线观看| 国产亚洲福利| 欧美午夜不卡视频| 欧美不卡视频一区发布| 欧美一区二区三区啪啪| 一片黄亚洲嫩模| 欧美韩日一区二区| 久久婷婷一区| 欧美一区精品| 亚洲少妇中出一区| 亚洲激情在线激情| 国外视频精品毛片| 国产伦精品一区二区三区照片91| 欧美韩日一区| 久久亚洲精品一区二区| 欧美在线看片a免费观看| 亚洲午夜精品福利| 日韩视频一区|