d3d

d3d

顯示程序接口
D3D(Direct3D):是微軟為提高3D遊戲在Windows中的顯示性能而開發的顯示程序接口,目前已經升級到11.2版本,它提供了豐富的3D功能庫,是遊戲廣泛采用的标準。3D加速卡就是硬件,也就是我們常說的顯卡。而操作系統和應用軟件通常不能直接去使用顯卡和其中的3D加速功能,必須通過系統中的一個接口去調用,這就是OPENGL和D3D的作用了。
    軟件名稱: 軟件平台: 軟件語言: 開發商: 軟件授權: 軟件版本: 軟件大小: 中文名:3D加速卡 外文名:Direct3D 縮寫:d3d 類屬:顯示程序接口

相關參數

OPENGL和D3D對下可以通過顯卡驅動程序操作顯卡,對上可以為操作系統和各種應用程序提供各種顯示用的接口函數和顯示功能。

操作系統和應用軟件(包括遊戲)不需要知道這台電腦用的什麼顯卡,隻需要調用OPENGL或D3D提供的接口函數和功能就能實現顯示功能,通過這種分工合作,極大的降低了軟件開發周期和成本。

比如需要在顯示器上畫出一個三維的正方體,不需要程序人員針對不同的顯卡去寫大段的代碼,隻需要調用OPENGL或D3D的一個函數并把一些相關的參數發給他們,由他們去完成這個事情就可以了。

OPENGL和D3D本質雖然一樣,但卻是不同的兩個标準。

OpenGL是有着豐富經驗的一個性能卓越的三維圖形标準,它是在SGI等多家世界聞名的計算機公司的倡導下,以SGI的GL三維圖形庫為基礎制定的一個通用共享的開放式三維圖形标準。

目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做為三維圖形标準,許多軟件廠商也紛紛以OpenGL為基礎開發出自己的産品,其中比較著名的産品包括動畫制作軟件SoftImage和3DStudioMAX、仿真軟件OpenInventor、VR軟件WorldToolKit、CAM軟件ProEngineer、GIS軟ARC/INFO等等。

為DX10和WindowsVista提供的顯示硬件必須滿足DX10的所有硬件特性。這樣對于開發者就比較可以放心的使用各種硬件特性了,很類似Console平台的開發。

效果功能

1.狀态對象(StateObject)"從100多個渲染狀态中解脫出來吧!"

D3D10對渲染狀态這個概念進行淡化,一方面使用全Shader化的架構使得狀态的前後設置和互相影響對渲染成功率降低到最少,另外對API架構也更為簡潔,另一方面對一些關鍵渲染狀态進行封裝和分類。主要分類有:

InputLayoutObject輸入層對象

這個東西很類似D3D9裡的頂點聲明,也就是對用戶輸入數據進行整合和系統化

RasterizerObject光栅化對象

這部分主要控制光栅器的行為:填充模式(FILL_MODE),剔除模式(CULL_MODE),多采樣,DepthBias等等

DepthStencilObject深度緩沖對象

主要控制深度緩沖的行為,像Z-bufferEnable之類的BlendObject混合對象設置象素混合的方法,類似AlphaBlendSrcAlpha,DestAlpha等等

SamplerObject采樣器對象

設置紋理采樣狀态,包括過濾器和MipMap

2.新的資源訪問模式和資源視圖(View)概念如果對比D3D9的Shader使用代碼和D3D10的類似代碼會發現一個不同。

D3D9Shader需要對紋理進行操作時,需要将紋理設置到Shader就可以了,而D3D10裡沒有那麼簡單,設置前必須将各種資源整合後為資源創建一個視圖,再提交給Shader訪問。這種操作在環境貼圖裡是很有好處的。對于CubeMap的6張紋理就可以采用一個視圖設置到設備,而自己要訪問每張貼圖隻要輕松訪問視圖就可以了,也就是說把資源規整和集成化。

3.新的可編程圖形層(Stage)-幾何Shader(GeometryShader)

原來的VS和PS隻是對逐個頂點或象素進行處理,而新的GS可以對每個頂點或象素的臨近頂點設置Shader。也就是可以對批量幾何進行處理。

4.設備的創建要求對ViewPort進行設置

D3D9裡無需對ViewPort進行設置就可以進行渲染,而且默認的RenderTarget就是後備緩沖,而在D3D10裡,這個過程變得更為自主化。取出後備緩沖的格式,将RenderTarget設置為屏幕,這讓人感到D3D10設計更趨向于成熟的引擎設計。

5.流輸出層(StreamOutputState)

這個層的功能是将VS和GS處理完成的數據輸出給用戶,由用戶進行處理後再反饋給管線繼續處理

6.多邊形拓撲結構從繪制代碼分離

現在可以單獨設置拓撲結構g_pd3dDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST)和使用Draw函數繪制了,很類似OpenGL。

7.嚴格的設備對象創建時間驗證

這裡的設備對象就是從設備創建出來的資源。為了減少CPU占用,D3D10重新設計了硬件資源調用調度,所有的設備對象都用面向對象的方法被設備管理。這種設計方法避免了在渲染期的資源創建操作。

8.去掉BeginScene和EndScene

這個對于圖形API确實多餘,Dec2005sdk裡提供的文檔讓人很快想到這隻是一個過渡版本,在DXUT的Mesh.Create函數中可以看到一個很有趣的現象:

創建D3D9對象,使用D3DX9裡的載入X模型文件的函數載入X文件,将D3D9的模型數據轉成D3D10的類型。這樣做無非是在告訴我們一個這樣的信息,D3D10很有可能提供一種新的模型格式來作為研究使用。

Vista的圖形系統Avalon從一些視頻上分析,使用了大量的XML,所以新的模型格式很有可能使用XML,并且X格式的解析接口确實不方便。而XML的分析器可以由第三方提供。使得更多的研究人員能更方便的使用這種新格式。

順便提供一些縮寫對應的含義,這些在一些函數前綴會出現:

IA-InputAssemblerState

SO-StreamOutputState

OM-OutputMergerState

VS-VertexShader

PS-PixelShader

GS-GeometryShader

GS的用途

點精靈

動态粒子系統

皮毛系統

卷積陰影

單Pass渲染到球形貼圖

逐多邊形材質交換

逐多邊形材質設置

上一篇:數據采集系統

下一篇:wintc

相關詞條

相關搜索

其它詞條