DirectX11初始化各變量作用與流程

網易作業deadline!!!要涼了555

據我瞭解,DirectX11之前的初始化只需要創建一個設備描述,然後根據設備描述創建設備即可完成初始化。

從DirectX11開始(爲了性能優化,多線程編程,以及更加細膩的效果(認爲可設置的參數更多),這都是我猜的),把DirectX的初始化分成了四個部分。

1.設備device:

~指定本地渲染環境,渲染環境指的是本地使用什麼進行渲染,是顯卡,還是CPU,還是軟件模擬等等,不同的環境使用的渲染指令是不一樣的,包括不同型號的顯卡使用的底層指令也不一定是一樣的,但是隻要設備支持DirectX都可以作爲DirectX渲染環境,因爲底層已經作了適配(從底層的顯卡指令到DirectX函數等的映射)。

~創建頂點模型。

~設備設置好之後,就可以利用設備創建一系列的東西供上下文使用,如shader,輸入佈局等,這些都是由設備生成,再給其他地方用,包括下面要講的render_target_view。

2.上下文context:

~負責渲染工作。設備創建的shader給到context之後就可以進行圖形渲染了。渲染的目標是設備座標,之後由render_target_view轉成窗口座標。

3.交換鏈swap_chain:

~負責每一幀的替換和儲存,視頻都是由很多張圖片組合而成的,我們渲染出來的東西最後給到交換鏈組織到屏幕中顯示,上一幀則清空作爲下一幀的緩存,是一個不停滾動的過程。

4.渲染目標視圖render_target_view:

~負責接收context渲染的圖像,之後傳給swap_chain顯示。

注意,D3D11默認不會創建視口,要使用D3D11_VIEWPORT手動創建。創建完後給到負責渲染的context使用。

視口:在 Windows的作圖函數中,涉及邏輯座標到設備座標的轉換。這裏提到的窗口(window)、視口(viewport)是對應的概念。視口是與設備相關的一個矩形區域,座標單位是與設備相關的“像素”,大多數情況下,視口與客戶區相同。窗口的座標是邏輯座標,與設備無關,可能是像素、毫米或者英寸。窗口座標的原點與視口座標的原點始終對應於同一點。對於同一個圖形,用窗口座標系統表達的該區域的長和寬與視口的座標系統表達的長和寬是不同的。二者就定義了這兩個座標系統的比例關係。程序作圖時,使用的座標總是是窗口座標。而實際的顯示或輸出設備卻各有自己的座標。

 

有問題,歡迎各位大佬評論指正(應該有很多問題555)

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 2470
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章